From e9305af4bcb00eda1df5db6e72f5d93902c11da5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 28 Aug 2024 08:36:00 +0200 Subject: [PATCH 01/23] chore: update checksums (#14) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 36 ++++++++++++ src/download/checksum/known-checksums.ts | 72 ++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 1b908c4..93dbc12 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.3.3' + default: '0.3.5' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index 8dac1e5..2ad2e41 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,42 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.3.5': '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', + 'aarch64-apple-darwin-0.3.5': 'a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8', + 'aarch64-unknown-linux-gnu-0.3.5': '30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae', + 'aarch64-unknown-linux-musl-0.3.5': '012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5', + 'arm-unknown-linux-musleabihf-0.3.5': '88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f', + 'armv7-unknown-linux-gnueabihf-0.3.5': 'ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3', + 'armv7-unknown-linux-musleabihf-0.3.5': '1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25', + 'i686-pc-windows-msvc-0.3.5': '3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c', + 'i686-unknown-linux-gnu-0.3.5': '91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8', + 'i686-unknown-linux-musl-0.3.5': '8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966', + 'powerpc64-unknown-linux-gnu-0.3.5': 'cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12', + 'powerpc64le-unknown-linux-gnu-0.3.5': '343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7', + 'powerpc64le-unknown-linux-musl-0.3.5': '7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55', + 's390x-unknown-linux-gnu-0.3.5': 'b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d', + 'x86_64-apple-darwin-0.3.5': '483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c', + 'x86_64-pc-windows-msvc-0.3.5': '339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95', + 'x86_64-unknown-linux-gnu-0.3.5': 'a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db', + 'x86_64-unknown-linux-musl-0.3.5': 'f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84', + 'undefined-0.3.4': '89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d', + 'aarch64-apple-darwin-0.3.4': 'd00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086', + 'aarch64-unknown-linux-gnu-0.3.4': 'f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f', + 'aarch64-unknown-linux-musl-0.3.4': '743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346', + 'arm-unknown-linux-musleabihf-0.3.4': '8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16', + 'armv7-unknown-linux-gnueabihf-0.3.4': '2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c', + 'armv7-unknown-linux-musleabihf-0.3.4': '9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd', + 'i686-pc-windows-msvc-0.3.4': '9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf', + 'i686-unknown-linux-gnu-0.3.4': '4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3', + 'i686-unknown-linux-musl-0.3.4': '1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd', + 'powerpc64-unknown-linux-gnu-0.3.4': '63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158', + 'powerpc64le-unknown-linux-gnu-0.3.4': '513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232', + 'powerpc64le-unknown-linux-musl-0.3.4': 'a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5', + 's390x-unknown-linux-gnu-0.3.4': '4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9', + 'x86_64-apple-darwin-0.3.4': '70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23', + 'x86_64-pc-windows-msvc-0.3.4': '32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d', + 'x86_64-unknown-linux-gnu-0.3.4': 'd0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe', + 'x86_64-unknown-linux-musl-0.3.4': 'c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747', 'undefined-0.3.3': '40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e', 'aarch64-apple-darwin-0.3.3': 'a8e6593f5f787823de4c0509af030b0327b536903044c77c9e61941e0032def7', 'aarch64-unknown-linux-gnu-0.3.3': 'a0815f3950be714b4d32efacecf32cb33b2857f837fe9cda56b717d69a33851b', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 072d62c..79a4388 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,77 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.3.5': + '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', + 'aarch64-apple-darwin-0.3.5': + 'a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8', + 'aarch64-unknown-linux-gnu-0.3.5': + '30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae', + 'aarch64-unknown-linux-musl-0.3.5': + '012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5', + 'arm-unknown-linux-musleabihf-0.3.5': + '88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f', + 'armv7-unknown-linux-gnueabihf-0.3.5': + 'ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3', + 'armv7-unknown-linux-musleabihf-0.3.5': + '1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25', + 'i686-pc-windows-msvc-0.3.5': + '3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c', + 'i686-unknown-linux-gnu-0.3.5': + '91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8', + 'i686-unknown-linux-musl-0.3.5': + '8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966', + 'powerpc64-unknown-linux-gnu-0.3.5': + 'cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12', + 'powerpc64le-unknown-linux-gnu-0.3.5': + '343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7', + 'powerpc64le-unknown-linux-musl-0.3.5': + '7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55', + 's390x-unknown-linux-gnu-0.3.5': + 'b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d', + 'x86_64-apple-darwin-0.3.5': + '483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c', + 'x86_64-pc-windows-msvc-0.3.5': + '339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95', + 'x86_64-unknown-linux-gnu-0.3.5': + 'a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db', + 'x86_64-unknown-linux-musl-0.3.5': + 'f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84', + 'undefined-0.3.4': + '89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d', + 'aarch64-apple-darwin-0.3.4': + 'd00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086', + 'aarch64-unknown-linux-gnu-0.3.4': + 'f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f', + 'aarch64-unknown-linux-musl-0.3.4': + '743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346', + 'arm-unknown-linux-musleabihf-0.3.4': + '8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16', + 'armv7-unknown-linux-gnueabihf-0.3.4': + '2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c', + 'armv7-unknown-linux-musleabihf-0.3.4': + '9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd', + 'i686-pc-windows-msvc-0.3.4': + '9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf', + 'i686-unknown-linux-gnu-0.3.4': + '4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3', + 'i686-unknown-linux-musl-0.3.4': + '1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd', + 'powerpc64-unknown-linux-gnu-0.3.4': + '63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158', + 'powerpc64le-unknown-linux-gnu-0.3.4': + '513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232', + 'powerpc64le-unknown-linux-musl-0.3.4': + 'a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5', + 's390x-unknown-linux-gnu-0.3.4': + '4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9', + 'x86_64-apple-darwin-0.3.4': + '70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23', + 'x86_64-pc-windows-msvc-0.3.4': + '32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d', + 'x86_64-unknown-linux-gnu-0.3.4': + 'd0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe', + 'x86_64-unknown-linux-musl-0.3.4': + 'c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747', 'undefined-0.3.3': '40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e', 'aarch64-apple-darwin-0.3.3': From 4e90b426ca60a197cdef4695b6ec3b7596bf310c Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Wed, 28 Aug 2024 13:28:02 +0200 Subject: [PATCH 02/23] Add faq on how to install python (#17) --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 2066ca7..7f73d41 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,17 @@ A simple example workflow could look like this: run: uv run --frozen pytest ``` +If you want to have a specific python version installed you can use the command [`uv python install`](https://docs.astral.sh/uv/guides/install-python/): + +```yaml +- name: Install the latest version of uv + uses: eifinger/setup-uv@v1 + with: + enable-cache: true +- name: Install Python 3.12 + run: uv python install 3.12 +``` + ### What is the default version? By default this action installs the version defined as `default` in `action.yml`. From 606dd5e44eb09e33700d88a1dcd353d7947493d6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 13:20:47 +0200 Subject: [PATCH 03/23] chore: update checksums (#19) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 18 ++++++++++++ src/download/checksum/known-checksums.ts | 36 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 93dbc12..6d0fdd0 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.3.5' + default: '0.4.0' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index 2ad2e41..68e51d2 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.4.0': '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', + 'aarch64-apple-darwin-0.4.0': '33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9', + 'aarch64-unknown-linux-gnu-0.4.0': '0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07', + 'aarch64-unknown-linux-musl-0.4.0': '5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd', + 'arm-unknown-linux-musleabihf-0.4.0': '1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8', + 'armv7-unknown-linux-gnueabihf-0.4.0': 'b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce', + 'armv7-unknown-linux-musleabihf-0.4.0': '38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae', + 'i686-pc-windows-msvc-0.4.0': '60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc', + 'i686-unknown-linux-gnu-0.4.0': '0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f', + 'i686-unknown-linux-musl-0.4.0': 'bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690', + 'powerpc64-unknown-linux-gnu-0.4.0': '56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124', + 'powerpc64le-unknown-linux-gnu-0.4.0': 'e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0', + 'powerpc64le-unknown-linux-musl-0.4.0': '64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838', + 's390x-unknown-linux-gnu-0.4.0': 'd899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da', + 'x86_64-apple-darwin-0.4.0': '5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272', + 'x86_64-pc-windows-msvc-0.4.0': '2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792', + 'x86_64-unknown-linux-gnu-0.4.0': '1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1', + 'x86_64-unknown-linux-musl-0.4.0': '033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c', 'undefined-0.3.5': '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', 'aarch64-apple-darwin-0.3.5': 'a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8', 'aarch64-unknown-linux-gnu-0.3.5': '30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 79a4388..12a6376 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,41 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.4.0': + '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', + 'aarch64-apple-darwin-0.4.0': + '33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9', + 'aarch64-unknown-linux-gnu-0.4.0': + '0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07', + 'aarch64-unknown-linux-musl-0.4.0': + '5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd', + 'arm-unknown-linux-musleabihf-0.4.0': + '1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8', + 'armv7-unknown-linux-gnueabihf-0.4.0': + 'b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce', + 'armv7-unknown-linux-musleabihf-0.4.0': + '38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae', + 'i686-pc-windows-msvc-0.4.0': + '60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc', + 'i686-unknown-linux-gnu-0.4.0': + '0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f', + 'i686-unknown-linux-musl-0.4.0': + 'bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690', + 'powerpc64-unknown-linux-gnu-0.4.0': + '56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124', + 'powerpc64le-unknown-linux-gnu-0.4.0': + 'e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0', + 'powerpc64le-unknown-linux-musl-0.4.0': + '64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838', + 's390x-unknown-linux-gnu-0.4.0': + 'd899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da', + 'x86_64-apple-darwin-0.4.0': + '5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272', + 'x86_64-pc-windows-msvc-0.4.0': + '2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792', + 'x86_64-unknown-linux-gnu-0.4.0': + '1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1', + 'x86_64-unknown-linux-musl-0.4.0': + '033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c', 'undefined-0.3.5': '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', 'aarch64-apple-darwin-0.3.5': From b038954f558d23adc49592e52cc71a5a2a38fde9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:58:12 +0200 Subject: [PATCH 04/23] chore: update checksums (#20) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 18 ++++++++++++ src/download/checksum/known-checksums.ts | 36 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 6d0fdd0..4a60904 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.4.0' + default: '0.4.1' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index 68e51d2..bd4c50d 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.4.1': 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', + 'aarch64-apple-darwin-0.4.1': 'd89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b', + 'aarch64-unknown-linux-gnu-0.4.1': '2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694', + 'aarch64-unknown-linux-musl-0.4.1': 'd9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f', + 'arm-unknown-linux-musleabihf-0.4.1': '1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2', + 'armv7-unknown-linux-gnueabihf-0.4.1': '19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01', + 'armv7-unknown-linux-musleabihf-0.4.1': 'd750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92', + 'i686-pc-windows-msvc-0.4.1': '7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee', + 'i686-unknown-linux-gnu-0.4.1': 'ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2', + 'i686-unknown-linux-musl-0.4.1': '43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe', + 'powerpc64-unknown-linux-gnu-0.4.1': '12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7', + 'powerpc64le-unknown-linux-gnu-0.4.1': '13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0', + 'powerpc64le-unknown-linux-musl-0.4.1': 'c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f', + 's390x-unknown-linux-gnu-0.4.1': 'cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181', + 'x86_64-apple-darwin-0.4.1': '7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d', + 'x86_64-pc-windows-msvc-0.4.1': 'a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89', + 'x86_64-unknown-linux-gnu-0.4.1': 'f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e', + 'x86_64-unknown-linux-musl-0.4.1': 'f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44', 'undefined-0.4.0': '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', 'aarch64-apple-darwin-0.4.0': '33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9', 'aarch64-unknown-linux-gnu-0.4.0': '0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 12a6376..95652ef 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,41 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.4.1': + 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', + 'aarch64-apple-darwin-0.4.1': + 'd89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b', + 'aarch64-unknown-linux-gnu-0.4.1': + '2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694', + 'aarch64-unknown-linux-musl-0.4.1': + 'd9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f', + 'arm-unknown-linux-musleabihf-0.4.1': + '1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2', + 'armv7-unknown-linux-gnueabihf-0.4.1': + '19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01', + 'armv7-unknown-linux-musleabihf-0.4.1': + 'd750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92', + 'i686-pc-windows-msvc-0.4.1': + '7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee', + 'i686-unknown-linux-gnu-0.4.1': + 'ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2', + 'i686-unknown-linux-musl-0.4.1': + '43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe', + 'powerpc64-unknown-linux-gnu-0.4.1': + '12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7', + 'powerpc64le-unknown-linux-gnu-0.4.1': + '13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0', + 'powerpc64le-unknown-linux-musl-0.4.1': + 'c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f', + 's390x-unknown-linux-gnu-0.4.1': + 'cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181', + 'x86_64-apple-darwin-0.4.1': + '7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d', + 'x86_64-pc-windows-msvc-0.4.1': + 'a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89', + 'x86_64-unknown-linux-gnu-0.4.1': + 'f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e', + 'x86_64-unknown-linux-musl-0.4.1': + 'f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44', 'undefined-0.4.0': '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', 'aarch64-apple-darwin-0.4.0': From b0c11239876071b9a5c2ab865b078c56fecf7dcd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Sep 2024 20:21:25 +0200 Subject: [PATCH 05/23] chore: update checksums (#21) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 18 ++++++++++++ src/download/checksum/known-checksums.ts | 36 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 4a60904..64f45c0 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.4.1' + default: '0.4.2' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index bd4c50d..08ae1bf 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.4.2': '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', + 'aarch64-apple-darwin-0.4.2': 'c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e', + 'aarch64-unknown-linux-gnu-0.4.2': '19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc', + 'aarch64-unknown-linux-musl-0.4.2': '2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4', + 'arm-unknown-linux-musleabihf-0.4.2': '9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26', + 'armv7-unknown-linux-gnueabihf-0.4.2': 'd6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e', + 'armv7-unknown-linux-musleabihf-0.4.2': '931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e', + 'i686-pc-windows-msvc-0.4.2': 'c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6', + 'i686-unknown-linux-gnu-0.4.2': '2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2', + 'i686-unknown-linux-musl-0.4.2': 'b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e', + 'powerpc64-unknown-linux-gnu-0.4.2': '61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6', + 'powerpc64le-unknown-linux-gnu-0.4.2': 'ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6', + 'powerpc64le-unknown-linux-musl-0.4.2': '8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f', + 's390x-unknown-linux-gnu-0.4.2': '8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d', + 'x86_64-apple-darwin-0.4.2': '4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d', + 'x86_64-pc-windows-msvc-0.4.2': '3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c', + 'x86_64-unknown-linux-gnu-0.4.2': '56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289', + 'x86_64-unknown-linux-musl-0.4.2': '7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d', 'undefined-0.4.1': 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', 'aarch64-apple-darwin-0.4.1': 'd89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b', 'aarch64-unknown-linux-gnu-0.4.1': '2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 95652ef..381b32f 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,41 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.4.2': + '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', + 'aarch64-apple-darwin-0.4.2': + 'c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e', + 'aarch64-unknown-linux-gnu-0.4.2': + '19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc', + 'aarch64-unknown-linux-musl-0.4.2': + '2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4', + 'arm-unknown-linux-musleabihf-0.4.2': + '9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26', + 'armv7-unknown-linux-gnueabihf-0.4.2': + 'd6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e', + 'armv7-unknown-linux-musleabihf-0.4.2': + '931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e', + 'i686-pc-windows-msvc-0.4.2': + 'c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6', + 'i686-unknown-linux-gnu-0.4.2': + '2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2', + 'i686-unknown-linux-musl-0.4.2': + 'b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e', + 'powerpc64-unknown-linux-gnu-0.4.2': + '61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6', + 'powerpc64le-unknown-linux-gnu-0.4.2': + 'ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6', + 'powerpc64le-unknown-linux-musl-0.4.2': + '8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f', + 's390x-unknown-linux-gnu-0.4.2': + '8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d', + 'x86_64-apple-darwin-0.4.2': + '4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d', + 'x86_64-pc-windows-msvc-0.4.2': + '3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c', + 'x86_64-unknown-linux-gnu-0.4.2': + '56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289', + 'x86_64-unknown-linux-musl-0.4.2': + '7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d', 'undefined-0.4.1': 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', 'aarch64-apple-darwin-0.4.1': From 6a540e29076911c2112b3a54104d6d36ebb638e6 Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Mon, 2 Sep 2024 15:58:05 +0200 Subject: [PATCH 06/23] Add default-version-update category (#24) This way a default version update is not a bugfix in release notes --- .github/release-drafter.yml | 2 ++ .github/workflows/update-default-version.yml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index eddb8e1..eb764e1 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -19,6 +19,7 @@ categories: labels: - "maintenance" - "ci" + - "default-version-update" - title: "📚 Documentation" labels: - "documentation" @@ -41,6 +42,7 @@ version-resolver: labels: - 'patch' - 'bugfix' + - "default-version-update" default: patch template: | ## Changes diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml index 797ebf6..62bbc47 100644 --- a/.github/workflows/update-default-version.yml +++ b/.github/workflows/update-default-version.yml @@ -21,6 +21,6 @@ jobs: title: "chore: update default version to ${{ steps.update-default-version.outputs.latest-version }}" body: "chore: update default version to ${{ steps.update-default-version.outputs.latest-version }}" base: main - labels: "automated-pr,bugfix" + labels: "automated-pr,default-version-update" branch: update-default-version-pr delete-branch: true \ No newline at end of file From 4b68ead3200e017324b3709994c0cea047698ffc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:08:19 +0200 Subject: [PATCH 07/23] chore: update checksums (#25) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 18 ++++++++++++ src/download/checksum/known-checksums.ts | 36 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 64f45c0..bdddc1e 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.4.2' + default: '0.4.3' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index 08ae1bf..045003c 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.4.3': '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', + 'aarch64-apple-darwin-0.4.3': 'e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d', + 'aarch64-unknown-linux-gnu-0.4.3': 'bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801', + 'aarch64-unknown-linux-musl-0.4.3': '8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f', + 'arm-unknown-linux-musleabihf-0.4.3': 'c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0', + 'armv7-unknown-linux-gnueabihf-0.4.3': 'f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0', + 'armv7-unknown-linux-musleabihf-0.4.3': '9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585', + 'i686-pc-windows-msvc-0.4.3': 'ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0', + 'i686-unknown-linux-gnu-0.4.3': '762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa', + 'i686-unknown-linux-musl-0.4.3': '8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9', + 'powerpc64-unknown-linux-gnu-0.4.3': 'b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8', + 'powerpc64le-unknown-linux-gnu-0.4.3': 'cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710', + 'powerpc64le-unknown-linux-musl-0.4.3': '6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3', + 's390x-unknown-linux-gnu-0.4.3': 'f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086', + 'x86_64-apple-darwin-0.4.3': 'bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd', + 'x86_64-pc-windows-msvc-0.4.3': '6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e', + 'x86_64-unknown-linux-gnu-0.4.3': 'af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8', + 'x86_64-unknown-linux-musl-0.4.3': 'ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333', 'undefined-0.4.2': '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', 'aarch64-apple-darwin-0.4.2': 'c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e', 'aarch64-unknown-linux-gnu-0.4.2': '19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 381b32f..34459f0 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,41 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.4.3': + '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', + 'aarch64-apple-darwin-0.4.3': + 'e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d', + 'aarch64-unknown-linux-gnu-0.4.3': + 'bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801', + 'aarch64-unknown-linux-musl-0.4.3': + '8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f', + 'arm-unknown-linux-musleabihf-0.4.3': + 'c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0', + 'armv7-unknown-linux-gnueabihf-0.4.3': + 'f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0', + 'armv7-unknown-linux-musleabihf-0.4.3': + '9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585', + 'i686-pc-windows-msvc-0.4.3': + 'ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0', + 'i686-unknown-linux-gnu-0.4.3': + '762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa', + 'i686-unknown-linux-musl-0.4.3': + '8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9', + 'powerpc64-unknown-linux-gnu-0.4.3': + 'b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8', + 'powerpc64le-unknown-linux-gnu-0.4.3': + 'cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710', + 'powerpc64le-unknown-linux-musl-0.4.3': + '6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3', + 's390x-unknown-linux-gnu-0.4.3': + 'f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086', + 'x86_64-apple-darwin-0.4.3': + 'bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd', + 'x86_64-pc-windows-msvc-0.4.3': + '6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e', + 'x86_64-unknown-linux-gnu-0.4.3': + 'af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8', + 'x86_64-unknown-linux-musl-0.4.3': + 'ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333', 'undefined-0.4.2': '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', 'aarch64-apple-darwin-0.4.2': From f2caa9145eaa495b6f87ef79f3e6fae5239342f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:19:58 +0200 Subject: [PATCH 08/23] Bump peter-evans/create-pull-request from 6.1.0 to 7.0.0 (#26) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.1.0 to 7.0.0. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/c5a7806660adbe173f04e3e038b0ccdcd758773c...4320041ed380b20e97d388d56a7fb4f9b8c20e79) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-default-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml index 62bbc47..6dfad15 100644 --- a/.github/workflows/update-default-version.yml +++ b/.github/workflows/update-default-version.yml @@ -15,7 +15,7 @@ jobs: run: node dist/update-default-version/index.js src/download/checksum/known-checksums.ts action.yml ${{ secrets.GITHUB_TOKEN }} - run: npm install && npm run all - name: Create Pull Request - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0 + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: commit-message: "chore: update checksums" title: "chore: update default version to ${{ steps.update-default-version.outputs.latest-version }}" From 1916dfcc441673be1142b918b4b70a763a3696b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:31:52 +0200 Subject: [PATCH 09/23] Bump eslint-plugin-jest from 28.6.0 to 28.8.2 (#23) Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 28.6.0 to 28.8.2. - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v28.6.0...v28.8.2) --- updated-dependencies: - dependency-name: eslint-plugin-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5c9ca3c..d758638 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^28.6.0", + "eslint-plugin-jest": "^28.8.2", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", "js-yaml": "^4.1.0", @@ -3801,18 +3801,18 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", - "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", + "version": "28.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.2.tgz", + "integrity": "sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "engines": { "node": "^16.10.0 || ^18.12.0 || >=20.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", "jest": "*" }, @@ -10768,12 +10768,12 @@ } }, "eslint-plugin-jest": { - "version": "28.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", - "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", + "version": "28.8.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.2.tgz", + "integrity": "sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==", "dev": true, "requires": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "eslint-plugin-no-only-tests": { diff --git a/package.json b/package.json index 422d57c..025342e 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^28.6.0", + "eslint-plugin-jest": "^28.8.2", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", "js-yaml": "^4.1.0", From 5db96a6748e4faa4b375d538d4e2dce9d6ea5321 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 14:50:06 +0200 Subject: [PATCH 10/23] Bump @typescript-eslint/parser from 7.15.0 to 7.18.0 (#9) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 7.15.0 to 7.18.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.18.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 209 ++++++++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 195 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index d758638..e76f1c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,7 +22,7 @@ "@types/node": "^20.14.9", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", - "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/parser": "^7.18.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", @@ -2191,15 +2191,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", - "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/typescript-estree": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" }, "engines": { @@ -2218,6 +2218,117 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", @@ -9521,16 +9632,84 @@ } }, "@typescript-eslint/parser": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", - "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "7.15.0", - "@typescript-eslint/types": "7.15.0", - "@typescript-eslint/typescript-estree": "7.15.0", - "@typescript-eslint/visitor-keys": "7.15.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + } + }, + "@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } } }, "@typescript-eslint/scope-manager": { diff --git a/package.json b/package.json index 025342e..a061bd2 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@types/node": "^20.14.9", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", - "@typescript-eslint/parser": "^7.15.0", + "@typescript-eslint/parser": "^7.18.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", From 162b8acf397cb069dec09a3f5a9847cf71cfa46a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 07:53:44 +0200 Subject: [PATCH 11/23] chore: update checksums (#29) Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> --- action.yml | 2 +- dist/setup/index.js | 18 ++++++++++++ src/download/checksum/known-checksums.ts | 36 ++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index bdddc1e..0dad4a5 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: 'eifinger' inputs: version: description: 'The version of uv to install' - default: '0.4.3' + default: '0.4.4' checksum: description: 'The checksum of the uv version to install' required: false diff --git a/dist/setup/index.js b/dist/setup/index.js index 045003c..a52ee31 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83845,6 +83845,24 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { + 'undefined-0.4.4': '32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6', + 'aarch64-apple-darwin-0.4.4': '3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae', + 'aarch64-unknown-linux-gnu-0.4.4': 'f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2', + 'aarch64-unknown-linux-musl-0.4.4': '803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d', + 'arm-unknown-linux-musleabihf-0.4.4': 'e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6', + 'armv7-unknown-linux-gnueabihf-0.4.4': 'fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37', + 'armv7-unknown-linux-musleabihf-0.4.4': '9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681', + 'i686-pc-windows-msvc-0.4.4': '01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a', + 'i686-unknown-linux-gnu-0.4.4': '9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4', + 'i686-unknown-linux-musl-0.4.4': '5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa', + 'powerpc64-unknown-linux-gnu-0.4.4': '7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744', + 'powerpc64le-unknown-linux-gnu-0.4.4': '79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17', + 'powerpc64le-unknown-linux-musl-0.4.4': 'bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce', + 's390x-unknown-linux-gnu-0.4.4': 'a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf', + 'x86_64-apple-darwin-0.4.4': '618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f', + 'x86_64-pc-windows-msvc-0.4.4': 'dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65', + 'x86_64-unknown-linux-gnu-0.4.4': 'c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b', + 'x86_64-unknown-linux-musl-0.4.4': 'a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586', 'undefined-0.4.3': '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', 'aarch64-apple-darwin-0.4.3': 'e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d', 'aarch64-unknown-linux-gnu-0.4.3': 'bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801', diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 34459f0..2340532 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,5 +1,41 @@ // AUTOGENERATED_DO_NOT_EDIT export const KNOWN_CHECKSUMS: {[key: string]: string} = { + 'undefined-0.4.4': + '32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6', + 'aarch64-apple-darwin-0.4.4': + '3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae', + 'aarch64-unknown-linux-gnu-0.4.4': + 'f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2', + 'aarch64-unknown-linux-musl-0.4.4': + '803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d', + 'arm-unknown-linux-musleabihf-0.4.4': + 'e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6', + 'armv7-unknown-linux-gnueabihf-0.4.4': + 'fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37', + 'armv7-unknown-linux-musleabihf-0.4.4': + '9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681', + 'i686-pc-windows-msvc-0.4.4': + '01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a', + 'i686-unknown-linux-gnu-0.4.4': + '9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4', + 'i686-unknown-linux-musl-0.4.4': + '5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa', + 'powerpc64-unknown-linux-gnu-0.4.4': + '7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744', + 'powerpc64le-unknown-linux-gnu-0.4.4': + '79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17', + 'powerpc64le-unknown-linux-musl-0.4.4': + 'bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce', + 's390x-unknown-linux-gnu-0.4.4': + 'a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf', + 'x86_64-apple-darwin-0.4.4': + '618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f', + 'x86_64-pc-windows-msvc-0.4.4': + 'dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65', + 'x86_64-unknown-linux-gnu-0.4.4': + 'c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b', + 'x86_64-unknown-linux-musl-0.4.4': + 'a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586', 'undefined-0.4.3': '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', 'aarch64-apple-darwin-0.4.3': From e4d1d0eef8eef1869ec27a6a5809aab9ebe368a9 Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Wed, 4 Sep 2024 20:09:26 +0200 Subject: [PATCH 12/23] Rename repo org in examples and urls (#33) --- README.md | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7f73d41..94a6619 100644 --- a/README.md +++ b/README.md @@ -31,9 +31,9 @@ You can also specify a specific version of uv ```yaml - name: Install a specific version - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: - version: '0.3.0' + version: '0.4.4' ``` ### Install latest version @@ -49,7 +49,7 @@ If you don't want to wait for a new release of this action you can use use `vers ```yaml - name: Install a specific version - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: version: 'latest' ``` @@ -63,7 +63,7 @@ of the uv repo. ```yaml - name: Install a specific version and validate the checksum - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: version: '0.3.1' checksum: 'e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8' @@ -80,7 +80,7 @@ You can optionally define a custom cache key suffix. ```yaml - name: Enable caching and define a custom cache key suffix id: setup-uv - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true cache-suffix: 'optional-suffix' @@ -102,7 +102,7 @@ you can specify the path with the `cache-local-path` input. ```yaml - name: Define a custom uv cache path - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true cache-local-path: '/path/to/cache' @@ -116,7 +116,7 @@ The glob matches files relative to the repository root. ```yaml - name: Define a cache dependency glob - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true cache-dependency-glob: 'uv.lock' @@ -124,7 +124,7 @@ The glob matches files relative to the repository root. ```yaml - name: Define a cache dependency glob - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true cache-dependency-glob: '**requirements*.txt' @@ -136,7 +136,7 @@ To avoid hitting the error `API rate limit exceeded` you can supply a GitHub tok ```yaml - name: Install uv and supply a GitHub token - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} ``` @@ -159,7 +159,7 @@ A simple example workflow could look like this: - name: Checkout the repository uses: actions/checkout@main - name: Install the latest version of uv - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true - name: Test @@ -170,7 +170,7 @@ If you want to have a specific python version installed you can use the command ```yaml - name: Install the latest version of uv - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 with: enable-cache: true - name: Install Python 3.12 @@ -189,12 +189,12 @@ If you have to know the version installed for other steps of your workflow you c uses: actions/checkout@main - name: Install the default version of uv id: setup-uv - uses: eifinger/setup-uv@v1 + uses: astral-sh/setup-uv@v1 - name: Print the installed version run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}" ``` --- -[](https://www.buymeacoffee.com/eifinger) -[](https://paypal.me/kevinstillhammer) +[](https://www.buymeacoffee.com/eifinger) +[](https://paypal.me/kevinstillhammer) diff --git a/package.json b/package.json index a061bd2..8f642f4 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/eifinger/setup-uv.git" + "url": "git+https://github.com/astral-sh/setup-uv.git" }, "keywords": [ "actions", From 6f825bd8e7e9fc19102c50eb22db7e0253b548b0 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 4 Sep 2024 17:13:00 -0400 Subject: [PATCH 13/23] Add acknowledgements and Astral logo (#34) --- README.md | 21 ++++++++++++++++----- docs/images/bmc-button.svg | 22 ---------------------- docs/images/paypal-button.svg | 15 --------------- 3 files changed, 16 insertions(+), 42 deletions(-) delete mode 100644 docs/images/bmc-button.svg delete mode 100644 docs/images/paypal-button.svg diff --git a/README.md b/README.md index 94a6619..412a237 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ You can also specify a specific version of uv By default this action installs the version defined as `default` in `action.yml`. This gets automatically updated in a new release of this action when a new version of uv is released. -If you don't want to wait for a new release of this action you can use use `version: latest`. +If you don't want to wait for a new release of this action you can use `version: latest`. > [!WARNING] > Using the `latest` version means that the uv executable gets downloaded every single time instead of loaded from the tools cache. @@ -179,7 +179,7 @@ If you want to have a specific python version installed you can use the command ### What is the default version? -By default this action installs the version defined as `default` in `action.yml`. +By default, this action installs the version defined as `default` in `action.yml`. When a new release of uv is published this triggers an automatic release of this action with the new version as `default`. If you have to know the version installed for other steps of your workflow you can use the `uv-version` output: @@ -194,7 +194,18 @@ If you have to know the version installed for other steps of your workflow you c run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}" ``` ---- +## Acknowledgements -[](https://www.buymeacoffee.com/eifinger) -[](https://paypal.me/kevinstillhammer) +`setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger) +before moving under the official [Astral](https://github.com/astral-sh) GitHub organization. You +can support Kevin's work in open source on [Buy me a coffee](https://www.buymeacoffee.com/eifinger) or [PayPal](https://paypal.me/kevinstillhammer). + +## License + +MIT + + diff --git a/docs/images/bmc-button.svg b/docs/images/bmc-button.svg deleted file mode 100644 index 4754bd3..0000000 --- a/docs/images/bmc-button.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/images/paypal-button.svg b/docs/images/paypal-button.svg deleted file mode 100644 index 22c4327..0000000 --- a/docs/images/paypal-button.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - -paypal-seeklogo.com - - - - - - - - - \ No newline at end of file From 0fa3b93f6e8e7bf9c79d015b869af16e22a316eb Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 4 Sep 2024 17:14:10 -0400 Subject: [PATCH 14/23] Run Prettier over Markdown and YAML files (#35) ## Summary Partly personal preference, but mostly to align with other Astral projects. --- .eslintrc.json | 118 +++++++++--------- .github/python.json | 30 ++--- .github/release-drafter.yml | 40 +++--- .github/workflows/codeql-analysis.yml | 60 ++++----- .github/workflows/release-drafter.yml | 2 +- .github/workflows/test-cache-windows.yml | 4 +- .github/workflows/test-cache.yml | 10 +- .github/workflows/test.yml | 5 +- .github/workflows/update-default-version.yml | 25 ++-- .github/workflows/update-major-minor-tags.yml | 2 +- .prettierrc.json | 3 +- README.md | 30 ++--- action.yml | 16 ++- jest.config.js | 2 +- package.json | 4 +- tsconfig.json | 14 +-- 16 files changed, 192 insertions(+), 173 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index bb270f9..eb8df77 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,57 +1,63 @@ { - "plugins": ["jest", "@typescript-eslint"], - "extends": ["plugin:github/recommended"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 9, - "sourceType": "module", - "project": "./tsconfig.json" - }, - "rules": { - "no-shadow": "off", - "@typescript-eslint/no-shadow": ["error"], - "i18n-text/no-en": "off", - "eslint-comments/no-use": "off", - "import/no-namespace": "off", - "no-unused-vars": "off", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}], - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/array-type": "error", - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/ban-ts-comment": "error", - "camelcase": "off", - "@typescript-eslint/consistent-type-assertions": "error", - "@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}], - "@typescript-eslint/func-call-spacing": ["error", "never"], - "@typescript-eslint/no-array-constructor": "error", - "@typescript-eslint/no-empty-interface": "error", - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-extraneous-class": "error", - "@typescript-eslint/no-for-in-array": "error", - "@typescript-eslint/no-inferrable-types": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/no-namespace": "error", - "@typescript-eslint/no-non-null-assertion": "warn", - "@typescript-eslint/no-unnecessary-qualifier": "error", - "@typescript-eslint/no-unnecessary-type-assertion": "error", - "@typescript-eslint/no-useless-constructor": "error", - "@typescript-eslint/no-var-requires": "error", - "@typescript-eslint/prefer-for-of": "warn", - "@typescript-eslint/prefer-function-type": "warn", - "@typescript-eslint/prefer-includes": "error", - "@typescript-eslint/prefer-string-starts-ends-with": "error", - "@typescript-eslint/promise-function-async": "error", - "@typescript-eslint/require-array-sort-compare": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "semi": "off", - "@typescript-eslint/semi": ["error", "never"], - "@typescript-eslint/type-annotation-spacing": "error", - "@typescript-eslint/unbound-method": "error" - }, - "env": { - "node": true, - "es6": true, - "jest/globals": true - } - } \ No newline at end of file + "plugins": ["jest", "@typescript-eslint"], + "extends": ["plugin:github/recommended"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 9, + "sourceType": "module", + "project": "./tsconfig.json" + }, + "rules": { + "no-shadow": "off", + "@typescript-eslint/no-shadow": ["error"], + "i18n-text/no-en": "off", + "eslint-comments/no-use": "off", + "import/no-namespace": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/explicit-member-accessibility": [ + "error", + {"accessibility": "no-public"} + ], + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/array-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/ban-ts-comment": "error", + "camelcase": "off", + "@typescript-eslint/consistent-type-assertions": "error", + "@typescript-eslint/explicit-function-return-type": [ + "error", + {"allowExpressions": true} + ], + "@typescript-eslint/func-call-spacing": ["error", "never"], + "@typescript-eslint/no-array-constructor": "error", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-explicit-any": "error", + "@typescript-eslint/no-extraneous-class": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-inferrable-types": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/no-namespace": "error", + "@typescript-eslint/no-non-null-assertion": "warn", + "@typescript-eslint/no-unnecessary-qualifier": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-useless-constructor": "error", + "@typescript-eslint/no-var-requires": "error", + "@typescript-eslint/prefer-for-of": "warn", + "@typescript-eslint/prefer-function-type": "warn", + "@typescript-eslint/prefer-includes": "error", + "@typescript-eslint/prefer-string-starts-ends-with": "error", + "@typescript-eslint/promise-function-async": "error", + "@typescript-eslint/require-array-sort-compare": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "semi": "off", + "@typescript-eslint/semi": ["error", "never"], + "@typescript-eslint/type-annotation-spacing": "error", + "@typescript-eslint/unbound-method": "error" + }, + "env": { + "node": true, + "es6": true, + "jest/globals": true + } +} diff --git a/.github/python.json b/.github/python.json index 1052a1c..3e5d8d5 100644 --- a/.github/python.json +++ b/.github/python.json @@ -1,18 +1,18 @@ { - "problemMatcher": [ + "problemMatcher": [ + { + "owner": "python", + "pattern": [ { - "owner": "python", - "pattern": [ - { - "regexp": "^\\s*File\\s\\\"(.*)\\\",\\sline\\s(\\d+),\\sin\\s(.*)$", - "file": 1, - "line": 2 - }, - { - "regexp": "^\\s*raise\\s(.*)\\(\\'(.*)\\'\\)$", - "message": 2 - } - ] + "regexp": "^\\s*File\\s\\\"(.*)\\\",\\sline\\s(\\d+),\\sin\\s(.*)$", + "file": 1, + "line": 2 + }, + { + "regexp": "^\\s*raise\\s(.*)\\(\\'(.*)\\'\\)$", + "message": 2 } - ] -} \ No newline at end of file + ] + } + ] +} diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index eb764e1..668e8a7 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,31 +1,31 @@ name-template: 'v$RESOLVED_VERSION 🌈' tag-template: 'v$RESOLVED_VERSION' categories: - - title: "🚨 Breaking changes" + - title: '🚨 Breaking changes' labels: - - "breaking-change" - - title: "✨ New features" + - 'breaking-change' + - title: '✨ New features' labels: - - "new-feature" - - title: "🐛 Bug fixes" + - 'new-feature' + - title: '🐛 Bug fixes' labels: - - "bugfix" - - title: "🚀 Enhancements" + - 'bugfix' + - title: '🚀 Enhancements' labels: - - "enhancement" - - "refactor" - - "performance" - - title: "🧰 Maintenance" + - 'enhancement' + - 'refactor' + - 'performance' + - title: '🧰 Maintenance' labels: - - "maintenance" - - "ci" - - "default-version-update" - - title: "📚 Documentation" + - 'maintenance' + - 'ci' + - 'default-version-update' + - title: '📚 Documentation' labels: - - "documentation" - - title: "⬆️ Dependency updates" + - 'documentation' + - title: '⬆️ Dependency updates' labels: - - "dependencies" + - 'dependencies' change-template: '- $TITLE @$AUTHOR (#$NUMBER)' change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. version-resolver: @@ -42,9 +42,9 @@ version-resolver: labels: - 'patch' - 'bugfix' - - "default-version-update" + - 'default-version-update' default: patch template: | ## Changes - $CHANGES \ No newline at end of file + $CHANGES diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f5b5821..d01412f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -9,14 +9,14 @@ # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # -name: "CodeQL" +name: 'CodeQL' on: push: - branches: [ main ] + branches: [main] pull_request: # The branches below must be a subset of the branches above - branches: [ main ] + branches: [main] schedule: - cron: '31 7 * * 3' @@ -32,40 +32,40 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'TypeScript' ] + language: ['TypeScript'] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - - name: Checkout repository - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v4 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: ${{ matrix.language }} - source-root: src - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + source-root: src + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v3 - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 8c1db69..9d1d445 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -16,4 +16,4 @@ jobs: - name: 🚀 Run Release Drafter uses: release-drafter/release-drafter@v6.0.0 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-cache-windows.yml b/.github/workflows/test-cache-windows.yml index a60ea41..b00eafa 100644 --- a/.github/workflows/test-cache-windows.yml +++ b/.github/workflows/test-cache-windows.yml @@ -36,8 +36,8 @@ jobs: id: restore uses: ./ with: - enable-cache: true - cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} + enable-cache: true + cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} - name: Cache was hit run: | if ($env:CACHE_HIT -ne "true") { diff --git a/.github/workflows/test-cache.yml b/.github/workflows/test-cache.yml index 93c1634..d889d92 100644 --- a/.github/workflows/test-cache.yml +++ b/.github/workflows/test-cache.yml @@ -36,8 +36,8 @@ jobs: id: restore uses: ./ with: - enable-cache: true - cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} + enable-cache: true + cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} - name: Cache was hit run: | if [ "$CACHE_HIT" != "true" ]; then @@ -69,9 +69,9 @@ jobs: id: restore uses: ./ with: - enable-cache: true - cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} - cache-local-path: /tmp/uv-cache + enable-cache: true + cache-suffix: ${{ github.run_id }}-${{ github.run_attempt }} + cache-local-path: /tmp/uv-cache - name: Cache was hit run: | if [ "$CACHE_HIT" != "true" ]; then diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 124112f..65543dd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,7 +42,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, macos-14, oracle-aarch64] - uv-version: ['latest','0.3.0','0.3.2'] + uv-version: ['latest', '0.3.0', '0.3.2'] steps: - uses: actions/checkout@v4 - name: Install version ${{ matrix.uv-version }} @@ -57,7 +57,8 @@ jobs: strategy: matrix: os: [ubuntu-latest, oracle-aarch64] - checksum: ['4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd'] + checksum: + ['4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd'] exclude: - os: oracle-aarch64 checksum: '4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd' diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml index 6dfad15..3d8bd06 100644 --- a/.github/workflows/update-default-version.yml +++ b/.github/workflows/update-default-version.yml @@ -12,15 +12,22 @@ jobs: node-version: '20' - name: Update default version and checksums id: update-default-version - run: node dist/update-default-version/index.js src/download/checksum/known-checksums.ts action.yml ${{ secrets.GITHUB_TOKEN }} + run: + node dist/update-default-version/index.js + src/download/checksum/known-checksums.ts action.yml ${{ + secrets.GITHUB_TOKEN }} - run: npm install && npm run all - name: Create Pull Request - uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: - commit-message: "chore: update checksums" - title: "chore: update default version to ${{ steps.update-default-version.outputs.latest-version }}" - body: "chore: update default version to ${{ steps.update-default-version.outputs.latest-version }}" - base: main - labels: "automated-pr,default-version-update" - branch: update-default-version-pr - delete-branch: true \ No newline at end of file + commit-message: 'chore: update checksums' + title: + 'chore: update default version to ${{ + steps.update-default-version.outputs.latest-version }}' + body: + 'chore: update default version to ${{ + steps.update-default-version.outputs.latest-version }}' + base: main + labels: 'automated-pr,default-version-update' + branch: update-default-version-pr + delete-branch: true diff --git a/.github/workflows/update-major-minor-tags.yml b/.github/workflows/update-major-minor-tags.yml index bafc481..bba1206 100644 --- a/.github/workflows/update-major-minor-tags.yml +++ b/.github/workflows/update-major-minor-tags.yml @@ -16,4 +16,4 @@ jobs: steps: - uses: actions/checkout@v4 - name: Run Update semver - uses: haya14busa/action-update-semver@v1.2.1 \ No newline at end of file + uses: haya14busa/action-update-semver@v1.2.1 diff --git a/.prettierrc.json b/.prettierrc.json index c34bafc..7a6245d 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -6,5 +6,6 @@ "singleQuote": true, "trailingComma": "none", "bracketSpacing": false, - "arrowParens": "avoid" + "arrowParens": "avoid", + "proseWrap": "always" } diff --git a/README.md b/README.md index 412a237..1ddab17 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,24 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs.astral.sh/uv/). -* Install a version of uv and add it to the path -* Cache the installed version of uv to speed up consecutive runs on self-hosted runners -* Register problem matchers for error output -* Optional: Cache the uv cache -* Optional: Verify the checksum of the downloaded uv executable +- Install a version of uv and add it to the path +- Cache the installed version of uv to speed up consecutive runs on self-hosted runners +- Register problem matchers for error output +- Optional: Cache the uv cache +- Optional: Verify the checksum of the downloaded uv executable ## Contents -* [Usage](#usage) - * [Install specific version](#install-specific-version) - * [Install latest version](#install-latest-version) - * [Validate checksum](#validate-checksum) - * [Enable Caching](#enable-caching) - * [Local cache path](#local-cache-path) - * [Cache dependency glob](#cache-dependency-glob) - * [API rate limit](#api-rate-limit) -* [How it works](#how-it-works) -* [FAQ](#faq) +- [Usage](#usage) + - [Install specific version](#install-specific-version) + - [Install latest version](#install-latest-version) + - [Validate checksum](#validate-checksum) + - [Enable Caching](#enable-caching) + - [Local cache path](#local-cache-path) + - [Cache dependency glob](#cache-dependency-glob) + - [API rate limit](#api-rate-limit) +- [How it works](#how-it-works) +- [FAQ](#faq) ## Usage diff --git a/action.yml b/action.yml index 0dad4a5..8166d27 100644 --- a/action.yml +++ b/action.yml @@ -2,20 +2,24 @@ name: 'Python setup uv' description: 'Set up your GitHub Actions workflow with a specific version of uv' author: 'eifinger' inputs: - version: + version: description: 'The version of uv to install' default: '0.4.4' checksum: description: 'The checksum of the uv version to install' required: false github-token: - description: 'Used to increase the rate limit when retrieving versions and downloading uv.' + description: + 'Used to increase the rate limit when retrieving versions and downloading + uv.' required: false enable-cache: description: 'Enable caching of the uv cache' default: 'false' cache-dependency-glob: - description: 'Glob pattern to match files relative to the repository root to control the cache. e.g. "uv.lock"' + description: + 'Glob pattern to match files relative to the repository root to control + the cache. e.g. "uv.lock"' required: false cache-suffix: description: 'Suffix for the cache key' @@ -25,9 +29,9 @@ inputs: default: '/tmp/setup-uv-cache' outputs: uv-version: - description: "The installed uv version. Useful when using latest." + description: 'The installed uv version. Useful when using latest.' cache-hit: - description: "A boolean value to indicate a cache entry was found" + description: 'A boolean value to indicate a cache entry was found' runs: using: 'node20' main: 'dist/setup/index.js' @@ -35,4 +39,4 @@ runs: post-if: success() branding: icon: 'package' - color: 'blue' \ No newline at end of file + color: 'blue' diff --git a/jest.config.js b/jest.config.js index 5a82228..b0ed2b3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -6,4 +6,4 @@ module.exports = { '^.+\\.ts$': 'ts-jest' }, verbose: true -} \ No newline at end of file +} diff --git a/package.json b/package.json index 8f642f4..6996bf4 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "main": "dist/index.js", "scripts": { "build": "tsc", - "format": "prettier --write '**/*.ts'", - "format-check": "prettier --check '**/*.ts'", + "format": "prettier --write .", + "format-check": "prettier --check .", "lint": "eslint src/**/*.ts --fix", "package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-default-version src/update-default-version.ts", "test": "jest", diff --git a/tsconfig.json b/tsconfig.json index f6e7cb5..4a6c661 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,12 @@ { "compilerOptions": { - "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - "outDir": "./lib", /* Redirect output structure to the directory. */ - "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - "strict": true, /* Enable all strict type-checking options. */ - "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "target": "es6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, + "outDir": "./lib" /* Redirect output structure to the directory. */, + "rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": true /* Raise error on expressions and declarations with an implied 'any' type. */, + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ }, "exclude": ["node_modules", "**/*.test.ts"] } From 43f9a7cdf9e003d51864c2ec0c72b1b9b935a82c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 17:29:17 -0400 Subject: [PATCH 15/23] Bump @types/node from 20.14.9 to 22.5.3 (#32) --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index e76f1c6..e6306c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@octokit/rest": "^21.0.2" }, "devDependencies": { - "@types/node": "^20.14.9", + "@types/node": "^22.5.3", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.18.0", @@ -2093,11 +2093,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", + "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-fetch": { @@ -7587,9 +7587,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/universal-user-agent": { "version": "6.0.1", @@ -9551,11 +9551,11 @@ "dev": true }, "@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", + "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", "requires": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "@types/node-fetch": { @@ -13481,9 +13481,9 @@ } }, "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "universal-user-agent": { "version": "6.0.1", diff --git a/package.json b/package.json index 6996bf4..aac993a 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@octokit/rest": "^21.0.2" }, "devDependencies": { - "@types/node": "^20.14.9", + "@types/node": "^22.5.3", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.18.0", From 1785c7bde0a2a59e1567d8e62720f439ebdf1e2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 17:29:25 -0400 Subject: [PATCH 16/23] Bump eslint-plugin-import from 2.29.1 to 2.30.0 (#31) --- package-lock.json | 91 ++++++++++++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6306c4..0a66155 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.30.0", "eslint-plugin-jest": "^28.8.2", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", @@ -1988,6 +1988,12 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -3702,9 +3708,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz", + "integrity": "sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -3872,26 +3878,27 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -4994,12 +5001,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9446,6 +9456,12 @@ "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -10775,9 +10791,9 @@ } }, "eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz", + "integrity": "sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ==", "dev": true, "requires": { "debug": "^3.2.7" @@ -10911,26 +10927,27 @@ "requires": {} }, "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", "dev": true, "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", "tsconfig-paths": "^3.15.0" }, @@ -11616,12 +11633,12 @@ "dev": true }, "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "requires": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" } }, "is-data-view": { diff --git a/package.json b/package.json index aac993a..944f7e3 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", - "eslint-plugin-import": "^2.29.1", + "eslint-plugin-import": "^2.30.0", "eslint-plugin-jest": "^28.8.2", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", From 182c9c7e92e7fae868c9b1b1138e5d06bbb5af20 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 5 Sep 2024 08:06:45 -0400 Subject: [PATCH 17/23] Change Prettier settings (#36) ## Summary I know this is a little tedious but I'd prefer to use the same settings as in Ruff. --- .editorconfig | 20 + .eslintrc.json | 6 +- .gitattributes | 2 +- .github/release-drafter.yml | 58 +- .github/workflows/check-dist.yml | 4 +- .github/workflows/codeql-analysis.yml | 6 +- .github/workflows/test-cache-windows.yml | 2 +- .github/workflows/test-cache.yml | 2 +- .github/workflows/test-windows.yml | 2 +- .github/workflows/test.yml | 14 +- .github/workflows/update-default-version.yml | 16 +- .github/workflows/update-major-minor-tags.yml | 4 +- .prettierrc.json | 9 +- README.md | 80 +- __tests__/download/checksum/checkstum.test.ts | 44 +- action.yml | 40 +- dist/save-cache/index.js | 60 +- dist/setup/index.js | 3410 ++++----- dist/update-default-version/index.js | 38 +- jest.config.js | 10 +- src/cache/restore-cache.ts | 80 +- src/download/checksum/checksum.ts | 58 +- src/download/checksum/known-checksums.ts | 6604 ++++++++--------- .../checksum/update-known-checksums.ts | 44 +- src/download/download-latest.ts | 83 +- src/download/download-version.ts | 54 +- src/save-cache.ts | 53 +- src/setup-uv.ts | 98 +- src/update-default-version.ts | 70 +- src/utils/inputs.ts | 16 +- src/utils/platforms.ts | 40 +- src/utils/utils.ts | 6 +- 32 files changed, 5536 insertions(+), 5497 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..05f81d3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +# Check http://editorconfig.org for more information +# This is the main config file for this project: +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +end_of_line = lf +indent_style = space +insert_final_newline = true +indent_size = 2 + +[*.{rs,py,pyi}] +indent_size = 4 + +[*.snap] +trim_trailing_whitespace = false + +[*.md] +max_line_length = 100 diff --git a/.eslintrc.json b/.eslintrc.json index eb8df77..1193252 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -17,7 +17,7 @@ "@typescript-eslint/no-unused-vars": "error", "@typescript-eslint/explicit-member-accessibility": [ "error", - {"accessibility": "no-public"} + { "accessibility": "no-public" } ], "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/array-type": "error", @@ -27,7 +27,7 @@ "@typescript-eslint/consistent-type-assertions": "error", "@typescript-eslint/explicit-function-return-type": [ "error", - {"allowExpressions": true} + { "allowExpressions": true } ], "@typescript-eslint/func-call-spacing": ["error", "never"], "@typescript-eslint/no-array-constructor": "error", @@ -50,8 +50,6 @@ "@typescript-eslint/promise-function-async": "error", "@typescript-eslint/require-array-sort-compare": "error", "@typescript-eslint/restrict-plus-operands": "error", - "semi": "off", - "@typescript-eslint/semi": ["error", "never"], "@typescript-eslint/type-annotation-spacing": "error", "@typescript-eslint/unbound-method": "error" }, diff --git a/.gitattributes b/.gitattributes index 1b5107e..00f4c25 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ * text=auto eol=lf -dist/** -diff linguist-generated=true \ No newline at end of file +dist/** -diff linguist-generated=true diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 668e8a7..8cf4416 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,48 +1,48 @@ -name-template: 'v$RESOLVED_VERSION 🌈' -tag-template: 'v$RESOLVED_VERSION' +name-template: "v$RESOLVED_VERSION 🌈" +tag-template: "v$RESOLVED_VERSION" categories: - - title: '🚨 Breaking changes' + - title: "🚨 Breaking changes" labels: - - 'breaking-change' - - title: '✨ New features' + - "breaking-change" + - title: "✨ New features" labels: - - 'new-feature' - - title: '🐛 Bug fixes' + - "new-feature" + - title: "🐛 Bug fixes" labels: - - 'bugfix' - - title: '🚀 Enhancements' + - "bugfix" + - title: "🚀 Enhancements" labels: - - 'enhancement' - - 'refactor' - - 'performance' - - title: '🧰 Maintenance' + - "enhancement" + - "refactor" + - "performance" + - title: "🧰 Maintenance" labels: - - 'maintenance' - - 'ci' - - 'default-version-update' - - title: '📚 Documentation' + - "maintenance" + - "ci" + - "default-version-update" + - title: "📚 Documentation" labels: - - 'documentation' - - title: '⬆️ Dependency updates' + - "documentation" + - title: "⬆️ Dependency updates" labels: - - 'dependencies' -change-template: '- $TITLE @$AUTHOR (#$NUMBER)' + - "dependencies" +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks. version-resolver: major: labels: - - 'major' - - 'breaking-change' + - "major" + - "breaking-change" minor: labels: - - 'minor' - - 'new-feature' - - 'enhancement' + - "minor" + - "new-feature" + - "enhancement" patch: labels: - - 'patch' - - 'bugfix' - - 'default-version-update' + - "patch" + - "bugfix" + - "default-version-update" default: patch template: | ## Changes diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml index 72a13d4..1c50f61 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/check-dist.yml @@ -10,10 +10,10 @@ on: branches: - main paths-ignore: - - '**.md' + - "**.md" pull_request: paths-ignore: - - '**.md' + - "**.md" workflow_dispatch: jobs: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d01412f..f0162d1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -9,7 +9,7 @@ # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # -name: 'CodeQL' +name: "CodeQL" on: push: @@ -18,7 +18,7 @@ on: # The branches below must be a subset of the branches above branches: [main] schedule: - - cron: '31 7 * * 3' + - cron: "31 7 * * 3" jobs: analyze: @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - language: ['TypeScript'] + language: ["TypeScript"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://git.io/codeql-language-support diff --git a/.github/workflows/test-cache-windows.yml b/.github/workflows/test-cache-windows.yml index b00eafa..09cef91 100644 --- a/.github/workflows/test-cache-windows.yml +++ b/.github/workflows/test-cache-windows.yml @@ -1,4 +1,4 @@ -name: 'test-cache-windows' +name: "test-cache-windows" on: pull_request: push: diff --git a/.github/workflows/test-cache.yml b/.github/workflows/test-cache.yml index d889d92..7c72ab3 100644 --- a/.github/workflows/test-cache.yml +++ b/.github/workflows/test-cache.yml @@ -1,4 +1,4 @@ -name: 'test-cache' +name: "test-cache" on: pull_request: push: diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index a7d491e..d7fc746 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -1,4 +1,4 @@ -name: 'test-windows' +name: "test-windows" on: pull_request: push: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 65543dd..528916a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: 'test' +name: "test" on: pull_request: push: @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: "20" - run: | npm install - run: | @@ -42,7 +42,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, macos-14, oracle-aarch64] - uv-version: ['latest', '0.3.0', '0.3.2'] + uv-version: ["latest", "0.3.0", "0.3.2"] steps: - uses: actions/checkout@v4 - name: Install version ${{ matrix.uv-version }} @@ -58,19 +58,19 @@ jobs: matrix: os: [ubuntu-latest, oracle-aarch64] checksum: - ['4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd'] + ["4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd"] exclude: - os: oracle-aarch64 - checksum: '4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd' + checksum: "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd" include: - os: oracle-aarch64 - checksum: 'e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8' + checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8" steps: - uses: actions/checkout@v4 - name: Checksum matches expected uses: ./ with: - version: '0.3.2' + version: "0.3.2" checksum: ${{ matrix.checksum }} github-token: ${{ secrets.GITHUB_TOKEN }} test-without-github-token: diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml index 3d8bd06..5c0709f 100644 --- a/.github/workflows/update-default-version.yml +++ b/.github/workflows/update-default-version.yml @@ -1,4 +1,4 @@ -name: 'Update default version and checksums' +name: "Update default version and checksums" on: workflow_dispatch: @@ -9,7 +9,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: '20' + node-version: "20" - name: Update default version and checksums id: update-default-version run: @@ -20,14 +20,14 @@ jobs: - name: Create Pull Request uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 with: - commit-message: 'chore: update checksums' + commit-message: "chore: update checksums" title: - 'chore: update default version to ${{ - steps.update-default-version.outputs.latest-version }}' + "chore: update default version to ${{ + steps.update-default-version.outputs.latest-version }}" body: - 'chore: update default version to ${{ - steps.update-default-version.outputs.latest-version }}' + "chore: update default version to ${{ + steps.update-default-version.outputs.latest-version }}" base: main - labels: 'automated-pr,default-version-update' + labels: "automated-pr,default-version-update" branch: update-default-version-pr delete-branch: true diff --git a/.github/workflows/update-major-minor-tags.yml b/.github/workflows/update-major-minor-tags.yml index bba1206..990f426 100644 --- a/.github/workflows/update-major-minor-tags.yml +++ b/.github/workflows/update-major-minor-tags.yml @@ -5,9 +5,9 @@ name: Update Major Minor Tags on: push: branches-ignore: - - '**' + - "**" tags: - - 'v*.*.*' + - "v*.*.*" jobs: update_major_minor_tags: diff --git a/.prettierrc.json b/.prettierrc.json index 7a6245d..f3877f7 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,11 +1,4 @@ { - "printWidth": 80, - "tabWidth": 2, - "useTabs": false, - "semi": false, - "singleQuote": true, - "trailingComma": "none", - "bracketSpacing": false, - "arrowParens": "avoid", + "trailingComma": "all", "proseWrap": "always" } diff --git a/README.md b/README.md index 1ddab17..35304c5 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs ## Usage -Example workflow in a real world project can be found [here](https://github.com/eifinger/hass-weenect/blob/main/.github/workflows/ci.yml) +Example workflow in a real world project can be found +[here](https://github.com/eifinger/hass-weenect/blob/main/.github/workflows/ci.yml) ### Install specific version @@ -33,47 +34,46 @@ You can also specify a specific version of uv - name: Install a specific version uses: astral-sh/setup-uv@v1 with: - version: '0.4.4' + version: "0.4.4" ``` ### Install latest version -By default this action installs the version defined as `default` in `action.yml`. -This gets automatically updated in a new release of this action when a new version of uv is released. -If you don't want to wait for a new release of this action you can use `version: latest`. +By default this action installs the version defined as `default` in `action.yml`. This gets +automatically updated in a new release of this action when a new version of uv is released. If you +don't want to wait for a new release of this action you can use `version: latest`. > [!WARNING] -> Using the `latest` version means that the uv executable gets downloaded every single time instead of loaded from the tools cache. -> This can take up to 20s depending on the download speed. -> This does not affect the uv cache. +> Using the `latest` version means that the uv executable gets downloaded every single time instead +> of loaded from the tools cache. This can take up to 20s depending on the download speed. This does +> not affect the uv cache. ```yaml - name: Install a specific version uses: astral-sh/setup-uv@v1 with: - version: 'latest' + version: "latest" ``` ### Validate checksum -You can also specify a checksum to validate the downloaded file. -Checksums up to the default version are automatically verified by this action. -The sha265 hashes can be found on the [releases page](https://github.com/astral-sh/uv/releases) -of the uv repo. +You can also specify a checksum to validate the downloaded file. Checksums up to the default version +are automatically verified by this action. The sha265 hashes can be found on the +[releases page](https://github.com/astral-sh/uv/releases) of the uv repo. ```yaml - name: Install a specific version and validate the checksum uses: astral-sh/setup-uv@v1 with: - version: '0.3.1' - checksum: 'e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8' + version: "0.3.1" + checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8" ``` ### Enable caching -If you enable caching the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will -be cached to the GitHub Actions Cache. This can speed up runs which can reuse the cache -by several minutes. The cache will always be reused on self-hosted runners. +If you enable caching the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be cached to +the GitHub Actions Cache. This can speed up runs which can reuse the cache by several minutes. The +cache will always be reused on self-hosted runners. You can optionally define a custom cache key suffix. @@ -83,11 +83,11 @@ You can optionally define a custom cache key suffix. uses: astral-sh/setup-uv@v1 with: enable-cache: true - cache-suffix: 'optional-suffix' + cache-suffix: "optional-suffix" ``` -When the cache was successfully restored the output `cache-hit` will be set to `true` and you can use it in subsequent steps. -For the example above you can use it like this: +When the cache was successfully restored the output `cache-hit` will be set to `true` and you can +use it in subsequent steps. For the example above you can use it like this: ```yaml - name: Do something if the cache was restored @@ -105,21 +105,21 @@ you can specify the path with the `cache-local-path` input. uses: astral-sh/setup-uv@v1 with: enable-cache: true - cache-local-path: '/path/to/cache' + cache-local-path: "/path/to/cache" ``` #### Cache dependency glob -If you want to control when the cache is invalidated you can specify a glob pattern with the `cache-dependency-glob` input. -The cache will be invalidated if any file matching the glob pattern changes. -The glob matches files relative to the repository root. +If you want to control when the cache is invalidated you can specify a glob pattern with the +`cache-dependency-glob` input. The cache will be invalidated if any file matching the glob pattern +changes. The glob matches files relative to the repository root. ```yaml - name: Define a cache dependency glob uses: astral-sh/setup-uv@v1 with: enable-cache: true - cache-dependency-glob: 'uv.lock' + cache-dependency-glob: "uv.lock" ``` ```yaml @@ -127,12 +127,13 @@ The glob matches files relative to the repository root. uses: astral-sh/setup-uv@v1 with: enable-cache: true - cache-dependency-glob: '**requirements*.txt' + cache-dependency-glob: "**requirements*.txt" ``` ### API rate limit -To avoid hitting the error `API rate limit exceeded` you can supply a GitHub token with the `github-token` input. +To avoid hitting the error `API rate limit exceeded` you can supply a GitHub token with the +`github-token` input. ```yaml - name: Install uv and supply a GitHub token @@ -143,9 +144,12 @@ To avoid hitting the error `API rate limit exceeded` you can supply a GitHub tok ## How it works -This action downloads uv from the releases of the [uv repo](https://github.com/astral-sh/uv) and uses the [GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed up consecutive runs on self-hosted runners. +This action downloads uv from the releases of the [uv repo](https://github.com/astral-sh/uv) and +uses the [GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed +up consecutive runs on self-hosted runners. -The installed version of uv is then added to the runner path so other steps can just use it by calling `uv`. +The installed version of uv is then added to the runner path so other steps can just use it by +calling `uv`. ## FAQ @@ -166,7 +170,8 @@ A simple example workflow could look like this: run: uv run --frozen pytest ``` -If you want to have a specific python version installed you can use the command [`uv python install`](https://docs.astral.sh/uv/guides/install-python/): +If you want to have a specific python version installed you can use the command +[`uv python install`](https://docs.astral.sh/uv/guides/install-python/): ```yaml - name: Install the latest version of uv @@ -179,10 +184,12 @@ If you want to have a specific python version installed you can use the command ### What is the default version? -By default, this action installs the version defined as `default` in `action.yml`. -When a new release of uv is published this triggers an automatic release of this action with the new version as `default`. +By default, this action installs the version defined as `default` in `action.yml`. When a new +release of uv is published this triggers an automatic release of this action with the new version as +`default`. -If you have to know the version installed for other steps of your workflow you can use the `uv-version` output: +If you have to know the version installed for other steps of your workflow you can use the +`uv-version` output: ```yaml - name: Checkout the repository @@ -197,8 +204,9 @@ If you have to know the version installed for other steps of your workflow you c ## Acknowledgements `setup-uv` was initially written and published by [Kevin Stillhammer](https://github.com/eifinger) -before moving under the official [Astral](https://github.com/astral-sh) GitHub organization. You -can support Kevin's work in open source on [Buy me a coffee](https://www.buymeacoffee.com/eifinger) or [PayPal](https://paypal.me/kevinstillhammer). +before moving under the official [Astral](https://github.com/astral-sh) GitHub organization. You can +support Kevin's work in open source on [Buy me a coffee](https://www.buymeacoffee.com/eifinger) or +[PayPal](https://paypal.me/kevinstillhammer). ## License diff --git a/__tests__/download/checksum/checkstum.test.ts b/__tests__/download/checksum/checkstum.test.ts index b068852..b52bd79 100644 --- a/__tests__/download/checksum/checkstum.test.ts +++ b/__tests__/download/checksum/checkstum.test.ts @@ -1,37 +1,37 @@ -import {expect, test, it} from '@jest/globals' +import { expect, test, it } from "@jest/globals"; import { isknownVersion, - validateChecksum -} from '../../../src/download/checksum/checksum' + validateChecksum, +} from "../../../src/download/checksum/checksum"; -test('checksum should match', async () => { +test("checksum should match", async () => { const validChecksum = - 'f3da96ec7e995debee7f5d52ecd034dfb7074309a1da42f76429ecb814d813a3' - const filePath = '__tests__/fixtures/checksumfile' + "f3da96ec7e995debee7f5d52ecd034dfb7074309a1da42f76429ecb814d813a3"; + const filePath = "__tests__/fixtures/checksumfile"; // string params don't matter only test the checksum mechanism, not known checksums await validateChecksum( validChecksum, filePath, - 'aarch64', - 'pc-windows-msvc', - '1.2.3' - ) -}) + "aarch64", + "pc-windows-msvc", + "1.2.3", + ); +}); -type KnownVersionFixture = {version: string; known: boolean} +type KnownVersionFixture = { version: string; known: boolean }; it.each([ { - version: '0.3.0', - known: true + version: "0.3.0", + known: true, }, { - version: '0.0.15', - known: false - } + version: "0.0.15", + known: false, + }, ])( - 'isknownVersion should return $known for version $version', - ({version, known}) => { - expect(isknownVersion(version)).toBe(known) - } -) + "isknownVersion should return $known for version $version", + ({ version, known }) => { + expect(isknownVersion(version)).toBe(known); + }, +); diff --git a/action.yml b/action.yml index 8166d27..719dee6 100644 --- a/action.yml +++ b/action.yml @@ -1,42 +1,42 @@ -name: 'Python setup uv' -description: 'Set up your GitHub Actions workflow with a specific version of uv' -author: 'eifinger' +name: "Python setup uv" +description: "Set up your GitHub Actions workflow with a specific version of uv" +author: "eifinger" inputs: version: - description: 'The version of uv to install' - default: '0.4.4' + description: "The version of uv to install" + default: "0.4.4" checksum: - description: 'The checksum of the uv version to install' + description: "The checksum of the uv version to install" required: false github-token: description: - 'Used to increase the rate limit when retrieving versions and downloading - uv.' + "Used to increase the rate limit when retrieving versions and downloading + uv." required: false enable-cache: - description: 'Enable caching of the uv cache' - default: 'false' + description: "Enable caching of the uv cache" + default: "false" cache-dependency-glob: description: 'Glob pattern to match files relative to the repository root to control the cache. e.g. "uv.lock"' required: false cache-suffix: - description: 'Suffix for the cache key' + description: "Suffix for the cache key" required: false cache-local-path: - description: 'Local path to store the cache.' - default: '/tmp/setup-uv-cache' + description: "Local path to store the cache." + default: "/tmp/setup-uv-cache" outputs: uv-version: - description: 'The installed uv version. Useful when using latest.' + description: "The installed uv version. Useful when using latest." cache-hit: - description: 'A boolean value to indicate a cache entry was found' + description: "A boolean value to indicate a cache entry was found" runs: - using: 'node20' - main: 'dist/setup/index.js' - post: 'dist/save-cache/index.js' + using: "node20" + main: "dist/setup/index.js" + post: "dist/save-cache/index.js" post-if: success() branding: - icon: 'package' - color: 'blue' + icon: "package" + color: "blue" diff --git a/dist/save-cache/index.js b/dist/save-cache/index.js index a5483b3..276c53c 100644 --- a/dist/save-cache/index.js +++ b/dist/save-cache/index.js @@ -82795,9 +82795,9 @@ const core = __importStar(__nccwpck_require__(2186)); const path_1 = __importDefault(__nccwpck_require__(1017)); const inputs_1 = __nccwpck_require__(9378); const platforms_1 = __nccwpck_require__(6005); -exports.STATE_CACHE_KEY = 'cache-key'; -exports.STATE_CACHE_MATCHED_KEY = 'cache-matched-key'; -const CACHE_VERSION = '1'; +exports.STATE_CACHE_KEY = "cache-key"; +exports.STATE_CACHE_MATCHED_KEY = "cache-matched-key"; +const CACHE_VERSION = "1"; function restoreCache(version) { return __awaiter(this, void 0, void 0, function* () { const cacheKey = yield computeKeys(version); @@ -82809,7 +82809,7 @@ function restoreCache(version) { catch (err) { const message = err.message; core.warning(message); - core.setOutput('cache-hit', false); + core.setOutput("cache-hit", false); return; } core.saveState(exports.STATE_CACHE_KEY, cacheKey); @@ -82819,30 +82819,30 @@ function restoreCache(version) { exports.restoreCache = restoreCache; function computeKeys(version) { return __awaiter(this, void 0, void 0, function* () { - let cacheDependencyPathHash = '-'; - if (inputs_1.cacheDependencyGlob !== '') { - const fullCacheDependencyGlob = `${process.env['GITHUB_WORKSPACE']}${path_1.default.sep}${inputs_1.cacheDependencyGlob}`; + let cacheDependencyPathHash = "-"; + if (inputs_1.cacheDependencyGlob !== "") { + const fullCacheDependencyGlob = `${process.env["GITHUB_WORKSPACE"]}${path_1.default.sep}${inputs_1.cacheDependencyGlob}`; cacheDependencyPathHash += yield glob.hashFiles(fullCacheDependencyGlob); - if (cacheDependencyPathHash === '-') { + if (cacheDependencyPathHash === "-") { throw new Error(`No file in ${process.cwd()} matched to [${inputs_1.cacheDependencyGlob}], make sure you have checked out the target repository`); } } else { - cacheDependencyPathHash += 'no-dependency-glob'; + cacheDependencyPathHash += "no-dependency-glob"; } - const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ''; + const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ""; return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${(0, platforms_1.getPlatform)()}-${version}${cacheDependencyPathHash}${suffix}`; }); } function handleMatchResult(matchedKey, primaryKey) { if (!matchedKey) { core.info(`No GitHub Actions cache found for key: ${primaryKey}`); - core.setOutput('cache-hit', false); + core.setOutput("cache-hit", false); return; } core.saveState(exports.STATE_CACHE_MATCHED_KEY, matchedKey); core.info(`uv cache restored from GitHub Actions cache with key: ${matchedKey}`); - core.setOutput('cache-hit', true); + core.setOutput("cache-hit", true); } @@ -82912,7 +82912,7 @@ function saveCache() { const cacheKey = core.getState(restore_cache_1.STATE_CACHE_KEY); const matchedKey = core.getState(restore_cache_1.STATE_CACHE_MATCHED_KEY); if (!cacheKey) { - core.warning('Error retrieving cache key from state.'); + core.warning("Error retrieving cache key from state."); return; } else if (matchedKey === cacheKey) { @@ -82928,11 +82928,11 @@ function saveCache() { function pruneCache() { return __awaiter(this, void 0, void 0, function* () { const options = { - silent: !core.isDebug() + silent: !core.isDebug(), }; - const execArgs = ['cache', 'prune', '--ci']; - core.info('Pruning cache...'); - yield exec.exec('uv', execArgs, options); + const execArgs = ["cache", "prune", "--ci"]; + core.info("Pruning cache..."); + yield exec.exec("uv", execArgs, options); }); } run(); @@ -82971,13 +82971,13 @@ var __importStar = (this && this.__importStar) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.cacheDependencyGlob = exports.githubToken = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.version = void 0; const core = __importStar(__nccwpck_require__(2186)); -exports.version = core.getInput('version'); -exports.checkSum = core.getInput('checksum'); -exports.enableCache = core.getInput('enable-cache') === 'true'; -exports.cacheSuffix = core.getInput('cache-suffix') || ''; -exports.cacheLocalPath = core.getInput('cache-local-path'); -exports.githubToken = core.getInput('github-token'); -exports.cacheDependencyGlob = core.getInput('cache-dependency-glob'); +exports.version = core.getInput("version"); +exports.checkSum = core.getInput("checksum"); +exports.enableCache = core.getInput("enable-cache") === "true"; +exports.cacheSuffix = core.getInput("cache-suffix") || ""; +exports.cacheLocalPath = core.getInput("cache-local-path"); +exports.githubToken = core.getInput("github-token"); +exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); /***/ }), @@ -82992,9 +82992,9 @@ exports.getPlatform = exports.getArch = void 0; function getArch() { const arch = process.arch; const archMapping = { - ia32: 'i686', - x64: 'x86_64', - arm64: 'aarch64' + ia32: "i686", + x64: "x86_64", + arm64: "aarch64", }; if (arch in archMapping) { return archMapping[arch]; @@ -83004,9 +83004,9 @@ exports.getArch = getArch; function getPlatform() { const platform = process.platform; const platformMapping = { - linux: 'unknown-linux-gnu', - darwin: 'apple-darwin', - win32: 'pc-windows-msvc' + linux: "unknown-linux-gnu", + darwin: "apple-darwin", + win32: "pc-windows-msvc", }; if (platform in platformMapping) { return platformMapping[platform]; diff --git a/dist/setup/index.js b/dist/setup/index.js index a52ee31..6bfc479 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83692,9 +83692,9 @@ const core = __importStar(__nccwpck_require__(2186)); const path_1 = __importDefault(__nccwpck_require__(1017)); const inputs_1 = __nccwpck_require__(9378); const platforms_1 = __nccwpck_require__(6005); -exports.STATE_CACHE_KEY = 'cache-key'; -exports.STATE_CACHE_MATCHED_KEY = 'cache-matched-key'; -const CACHE_VERSION = '1'; +exports.STATE_CACHE_KEY = "cache-key"; +exports.STATE_CACHE_MATCHED_KEY = "cache-matched-key"; +const CACHE_VERSION = "1"; function restoreCache(version) { return __awaiter(this, void 0, void 0, function* () { const cacheKey = yield computeKeys(version); @@ -83706,7 +83706,7 @@ function restoreCache(version) { catch (err) { const message = err.message; core.warning(message); - core.setOutput('cache-hit', false); + core.setOutput("cache-hit", false); return; } core.saveState(exports.STATE_CACHE_KEY, cacheKey); @@ -83716,30 +83716,30 @@ function restoreCache(version) { exports.restoreCache = restoreCache; function computeKeys(version) { return __awaiter(this, void 0, void 0, function* () { - let cacheDependencyPathHash = '-'; - if (inputs_1.cacheDependencyGlob !== '') { - const fullCacheDependencyGlob = `${process.env['GITHUB_WORKSPACE']}${path_1.default.sep}${inputs_1.cacheDependencyGlob}`; + let cacheDependencyPathHash = "-"; + if (inputs_1.cacheDependencyGlob !== "") { + const fullCacheDependencyGlob = `${process.env["GITHUB_WORKSPACE"]}${path_1.default.sep}${inputs_1.cacheDependencyGlob}`; cacheDependencyPathHash += yield glob.hashFiles(fullCacheDependencyGlob); - if (cacheDependencyPathHash === '-') { + if (cacheDependencyPathHash === "-") { throw new Error(`No file in ${process.cwd()} matched to [${inputs_1.cacheDependencyGlob}], make sure you have checked out the target repository`); } } else { - cacheDependencyPathHash += 'no-dependency-glob'; + cacheDependencyPathHash += "no-dependency-glob"; } - const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ''; + const suffix = inputs_1.cacheSuffix ? `-${inputs_1.cacheSuffix}` : ""; return `setup-uv-${CACHE_VERSION}-${(0, platforms_1.getArch)()}-${(0, platforms_1.getPlatform)()}-${version}${cacheDependencyPathHash}${suffix}`; }); } function handleMatchResult(matchedKey, primaryKey) { if (!matchedKey) { core.info(`No GitHub Actions cache found for key: ${primaryKey}`); - core.setOutput('cache-hit', false); + core.setOutput("cache-hit", false); return; } core.saveState(exports.STATE_CACHE_MATCHED_KEY, matchedKey); core.info(`uv cache restored from GitHub Actions cache with key: ${matchedKey}`); - core.setOutput('cache-hit', true); + core.setOutput("cache-hit", true); } @@ -83791,7 +83791,7 @@ const known_checksums_1 = __nccwpck_require__(4379); function validateChecksum(checkSum, downloadPath, arch, platform, version) { return __awaiter(this, void 0, void 0, function* () { let isValid = true; - if (checkSum !== undefined && checkSum !== '') { + if (checkSum !== undefined && checkSum !== "") { isValid = yield validateFileCheckSum(downloadPath, checkSum); } else { @@ -83816,12 +83816,12 @@ exports.validateChecksum = validateChecksum; function validateFileCheckSum(filePath, expected) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { - const hash = crypto.createHash('sha256'); + const hash = crypto.createHash("sha256"); const stream = fs.createReadStream(filePath); - stream.on('error', err => reject(err)); - stream.on('data', chunk => hash.update(chunk)); - stream.on('end', () => { - const actual = hash.digest('hex'); + stream.on("error", (err) => reject(err)); + stream.on("data", (chunk) => hash.update(chunk)); + stream.on("end", () => { + const actual = hash.digest("hex"); resolve(actual === expected); }); }); @@ -83829,7 +83829,7 @@ function validateFileCheckSum(filePath, expected) { } function isknownVersion(version) { const pattern = new RegExp(`^.*-.*-${version}$`); - return Object.keys(known_checksums_1.KNOWN_CHECKSUMS).some(key => pattern.test(key)); + return Object.keys(known_checksums_1.KNOWN_CHECKSUMS).some((key) => pattern.test(key)); } exports.isknownVersion = isknownVersion; @@ -83845,1656 +83845,1656 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.KNOWN_CHECKSUMS = void 0; // AUTOGENERATED_DO_NOT_EDIT exports.KNOWN_CHECKSUMS = { - 'undefined-0.4.4': '32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6', - 'aarch64-apple-darwin-0.4.4': '3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae', - 'aarch64-unknown-linux-gnu-0.4.4': 'f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2', - 'aarch64-unknown-linux-musl-0.4.4': '803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d', - 'arm-unknown-linux-musleabihf-0.4.4': 'e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6', - 'armv7-unknown-linux-gnueabihf-0.4.4': 'fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37', - 'armv7-unknown-linux-musleabihf-0.4.4': '9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681', - 'i686-pc-windows-msvc-0.4.4': '01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a', - 'i686-unknown-linux-gnu-0.4.4': '9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4', - 'i686-unknown-linux-musl-0.4.4': '5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa', - 'powerpc64-unknown-linux-gnu-0.4.4': '7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744', - 'powerpc64le-unknown-linux-gnu-0.4.4': '79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17', - 'powerpc64le-unknown-linux-musl-0.4.4': 'bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce', - 's390x-unknown-linux-gnu-0.4.4': 'a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf', - 'x86_64-apple-darwin-0.4.4': '618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f', - 'x86_64-pc-windows-msvc-0.4.4': 'dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65', - 'x86_64-unknown-linux-gnu-0.4.4': 'c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b', - 'x86_64-unknown-linux-musl-0.4.4': 'a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586', - 'undefined-0.4.3': '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', - 'aarch64-apple-darwin-0.4.3': 'e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d', - 'aarch64-unknown-linux-gnu-0.4.3': 'bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801', - 'aarch64-unknown-linux-musl-0.4.3': '8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f', - 'arm-unknown-linux-musleabihf-0.4.3': 'c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0', - 'armv7-unknown-linux-gnueabihf-0.4.3': 'f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0', - 'armv7-unknown-linux-musleabihf-0.4.3': '9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585', - 'i686-pc-windows-msvc-0.4.3': 'ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0', - 'i686-unknown-linux-gnu-0.4.3': '762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa', - 'i686-unknown-linux-musl-0.4.3': '8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9', - 'powerpc64-unknown-linux-gnu-0.4.3': 'b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8', - 'powerpc64le-unknown-linux-gnu-0.4.3': 'cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710', - 'powerpc64le-unknown-linux-musl-0.4.3': '6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3', - 's390x-unknown-linux-gnu-0.4.3': 'f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086', - 'x86_64-apple-darwin-0.4.3': 'bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd', - 'x86_64-pc-windows-msvc-0.4.3': '6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e', - 'x86_64-unknown-linux-gnu-0.4.3': 'af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8', - 'x86_64-unknown-linux-musl-0.4.3': 'ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333', - 'undefined-0.4.2': '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', - 'aarch64-apple-darwin-0.4.2': 'c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e', - 'aarch64-unknown-linux-gnu-0.4.2': '19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc', - 'aarch64-unknown-linux-musl-0.4.2': '2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4', - 'arm-unknown-linux-musleabihf-0.4.2': '9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26', - 'armv7-unknown-linux-gnueabihf-0.4.2': 'd6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e', - 'armv7-unknown-linux-musleabihf-0.4.2': '931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e', - 'i686-pc-windows-msvc-0.4.2': 'c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6', - 'i686-unknown-linux-gnu-0.4.2': '2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2', - 'i686-unknown-linux-musl-0.4.2': 'b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e', - 'powerpc64-unknown-linux-gnu-0.4.2': '61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6', - 'powerpc64le-unknown-linux-gnu-0.4.2': 'ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6', - 'powerpc64le-unknown-linux-musl-0.4.2': '8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f', - 's390x-unknown-linux-gnu-0.4.2': '8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d', - 'x86_64-apple-darwin-0.4.2': '4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d', - 'x86_64-pc-windows-msvc-0.4.2': '3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c', - 'x86_64-unknown-linux-gnu-0.4.2': '56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289', - 'x86_64-unknown-linux-musl-0.4.2': '7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d', - 'undefined-0.4.1': 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', - 'aarch64-apple-darwin-0.4.1': 'd89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b', - 'aarch64-unknown-linux-gnu-0.4.1': '2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694', - 'aarch64-unknown-linux-musl-0.4.1': 'd9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f', - 'arm-unknown-linux-musleabihf-0.4.1': '1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2', - 'armv7-unknown-linux-gnueabihf-0.4.1': '19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01', - 'armv7-unknown-linux-musleabihf-0.4.1': 'd750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92', - 'i686-pc-windows-msvc-0.4.1': '7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee', - 'i686-unknown-linux-gnu-0.4.1': 'ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2', - 'i686-unknown-linux-musl-0.4.1': '43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe', - 'powerpc64-unknown-linux-gnu-0.4.1': '12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7', - 'powerpc64le-unknown-linux-gnu-0.4.1': '13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0', - 'powerpc64le-unknown-linux-musl-0.4.1': 'c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f', - 's390x-unknown-linux-gnu-0.4.1': 'cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181', - 'x86_64-apple-darwin-0.4.1': '7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d', - 'x86_64-pc-windows-msvc-0.4.1': 'a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89', - 'x86_64-unknown-linux-gnu-0.4.1': 'f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e', - 'x86_64-unknown-linux-musl-0.4.1': 'f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44', - 'undefined-0.4.0': '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', - 'aarch64-apple-darwin-0.4.0': '33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9', - 'aarch64-unknown-linux-gnu-0.4.0': '0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07', - 'aarch64-unknown-linux-musl-0.4.0': '5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd', - 'arm-unknown-linux-musleabihf-0.4.0': '1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8', - 'armv7-unknown-linux-gnueabihf-0.4.0': 'b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce', - 'armv7-unknown-linux-musleabihf-0.4.0': '38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae', - 'i686-pc-windows-msvc-0.4.0': '60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc', - 'i686-unknown-linux-gnu-0.4.0': '0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f', - 'i686-unknown-linux-musl-0.4.0': 'bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690', - 'powerpc64-unknown-linux-gnu-0.4.0': '56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124', - 'powerpc64le-unknown-linux-gnu-0.4.0': 'e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0', - 'powerpc64le-unknown-linux-musl-0.4.0': '64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838', - 's390x-unknown-linux-gnu-0.4.0': 'd899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da', - 'x86_64-apple-darwin-0.4.0': '5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272', - 'x86_64-pc-windows-msvc-0.4.0': '2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792', - 'x86_64-unknown-linux-gnu-0.4.0': '1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1', - 'x86_64-unknown-linux-musl-0.4.0': '033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c', - 'undefined-0.3.5': '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', - 'aarch64-apple-darwin-0.3.5': 'a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8', - 'aarch64-unknown-linux-gnu-0.3.5': '30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae', - 'aarch64-unknown-linux-musl-0.3.5': '012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5', - 'arm-unknown-linux-musleabihf-0.3.5': '88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f', - 'armv7-unknown-linux-gnueabihf-0.3.5': 'ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3', - 'armv7-unknown-linux-musleabihf-0.3.5': '1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25', - 'i686-pc-windows-msvc-0.3.5': '3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c', - 'i686-unknown-linux-gnu-0.3.5': '91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8', - 'i686-unknown-linux-musl-0.3.5': '8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966', - 'powerpc64-unknown-linux-gnu-0.3.5': 'cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12', - 'powerpc64le-unknown-linux-gnu-0.3.5': '343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7', - 'powerpc64le-unknown-linux-musl-0.3.5': '7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55', - 's390x-unknown-linux-gnu-0.3.5': 'b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d', - 'x86_64-apple-darwin-0.3.5': '483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c', - 'x86_64-pc-windows-msvc-0.3.5': '339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95', - 'x86_64-unknown-linux-gnu-0.3.5': 'a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db', - 'x86_64-unknown-linux-musl-0.3.5': 'f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84', - 'undefined-0.3.4': '89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d', - 'aarch64-apple-darwin-0.3.4': 'd00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086', - 'aarch64-unknown-linux-gnu-0.3.4': 'f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f', - 'aarch64-unknown-linux-musl-0.3.4': '743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346', - 'arm-unknown-linux-musleabihf-0.3.4': '8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16', - 'armv7-unknown-linux-gnueabihf-0.3.4': '2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c', - 'armv7-unknown-linux-musleabihf-0.3.4': '9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd', - 'i686-pc-windows-msvc-0.3.4': '9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf', - 'i686-unknown-linux-gnu-0.3.4': '4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3', - 'i686-unknown-linux-musl-0.3.4': '1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd', - 'powerpc64-unknown-linux-gnu-0.3.4': '63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158', - 'powerpc64le-unknown-linux-gnu-0.3.4': '513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232', - 'powerpc64le-unknown-linux-musl-0.3.4': 'a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5', - 's390x-unknown-linux-gnu-0.3.4': '4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9', - 'x86_64-apple-darwin-0.3.4': '70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23', - 'x86_64-pc-windows-msvc-0.3.4': '32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d', - 'x86_64-unknown-linux-gnu-0.3.4': 'd0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe', - 'x86_64-unknown-linux-musl-0.3.4': 'c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747', - 'undefined-0.3.3': '40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e', - 'aarch64-apple-darwin-0.3.3': 'a8e6593f5f787823de4c0509af030b0327b536903044c77c9e61941e0032def7', - 'aarch64-unknown-linux-gnu-0.3.3': 'a0815f3950be714b4d32efacecf32cb33b2857f837fe9cda56b717d69a33851b', - 'aarch64-unknown-linux-musl-0.3.3': '47f6794a78e3ae62c27bd19d347b30362f3aa7466eb1767c10bbc5ddd015208e', - 'arm-unknown-linux-musleabihf-0.3.3': '90384cd65b755d3e60cbe21c2b991a1ddb03e42649d8598248b782d66fb41135', - 'armv7-unknown-linux-gnueabihf-0.3.3': 'bf4e8c2d1137959dc2271190e036f9046ea95e82ef3af948ec9bf6a8e4ed4c45', - 'armv7-unknown-linux-musleabihf-0.3.3': '92578e0da2b2fff1002a70d217d54b3b1a37be424bbe91b03aa0ee1ec233d54f', - 'i686-pc-windows-msvc-0.3.3': '7184333831c6608f395c600ac2bb98890babf38fcea48eee8a9fe5e3a8c81bcb', - 'i686-unknown-linux-gnu-0.3.3': '11f0071666d5dd10255c73a80938eb573d7d080203c3f6b7f13ddbc9054cbad9', - 'i686-unknown-linux-musl-0.3.3': 'de74c76c0c03a2a9638276d46c2fae14d732679a011600e5d361c880124a9aef', - 'powerpc64-unknown-linux-gnu-0.3.3': '6bd8a0cb576b49a25f57dc3f602f1caa1e37a60c602d0f170809af78fd66c55d', - 'powerpc64le-unknown-linux-gnu-0.3.3': 'd9d6db9f3ffcedfd8a29a8f18af3fb09fd639fbdb33c2cb58b2bf5e428942269', - 'powerpc64le-unknown-linux-musl-0.3.3': 'cd7d6199b1682d0348b3411f094e653e132a2c78ed39424ebc3278f78b51d0e1', - 's390x-unknown-linux-gnu-0.3.3': 'bc941ccd12529957eff13882cc8f2f37b5a47a4ab80ea67ba5444778764efec5', - 'x86_64-apple-darwin-0.3.3': 'be1cdcdee3d91402d259c34b756a42beaafe7bb93567bb5d48c7fdcf799e423b', - 'x86_64-pc-windows-msvc-0.3.3': '742f3c5aefd0966c38705b0439641c390aef290e8ea007496ac83fcb825203a6', - 'x86_64-unknown-linux-gnu-0.3.3': '729da13410ba857c6e258753c4fabcccc39d32801fea7f5149997e9f88b27b3d', - 'x86_64-unknown-linux-musl-0.3.3': '8c7a7bf83bbe25bc5e5d7d41cc5f58148a8b577a298cd91ea9173b4e612bafda', - 'undefined-0.3.2': '1aadddb260b5a9f3d44f5832a834b55a6fd1573bb657d62759495dcdbe212507', - 'aarch64-apple-darwin-0.3.2': 'a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218', - 'aarch64-unknown-linux-gnu-0.3.2': '6be360abe140f6818844aa3fdf6a3d004b2337b9c240be77c348bcf1f032e877', - 'aarch64-unknown-linux-musl-0.3.2': '65735e2776fae9ee3f4604f6d3c562f1f7cae203e428a6d8824a37379f469d77', - 'arm-unknown-linux-musleabihf-0.3.2': '68818f6b349260ae60bae969dfa048f45e4196c74a0639c4b9c3591cc0f56dcf', - 'armv7-unknown-linux-gnueabihf-0.3.2': '474b62fbbd461792e224dbc5e883a4bfe23f85aa2e3d45b6f1fda1b5be1ab0f3', - 'armv7-unknown-linux-musleabihf-0.3.2': 'b66b76824df42c3057a9ed440a2d1630533a8fa1fbab3c99f237cecb0cbafc47', - 'i686-pc-windows-msvc-0.3.2': '26ddb27546bb7fc97758aed476938bd4469d9a6698292909b6e7820c48a3eead', - 'i686-unknown-linux-gnu-0.3.2': '44b11e3cb4e0e6e51e3a78738fa17da251975434b0d538dd6219fc221b520585', - 'i686-unknown-linux-musl-0.3.2': '37a8728fd5125990b4de3468a3f12b7242f336852c5c2b27fe14a81a7df6b579', - 'powerpc64-unknown-linux-gnu-0.3.2': 'd4f02f9781be8e0bd2dc87481b1aa045cb37f2bb83cef20272a1a506ccffc9a8', - 'powerpc64le-unknown-linux-gnu-0.3.2': '6ca624ec97b6f13a65d8d0d4b854634b48e6b7b6f9dcd1433ebb584ee3164fcd', - 'powerpc64le-unknown-linux-musl-0.3.2': '7a50bf8228ec8ca60dc5ca1a1aaad4ece43d2ff08e32c0178ac0c5e652126372', - 's390x-unknown-linux-gnu-0.3.2': 'b0ffeeba7605cab0058713be4f23a9772f8dcc0218d760ee22635f9caf4c56de', - 'x86_64-apple-darwin-0.3.2': '7b54003989387079ca27b8895a11abba7ccae60712641592c81e0edab4c668dd', - 'x86_64-pc-windows-msvc-0.3.2': 'ee77cedd463673505bf6c060eb8149f3d3965c46090bbf76595d2b05a95e596b', - 'x86_64-unknown-linux-gnu-0.3.2': '4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd', - 'x86_64-unknown-linux-musl-0.3.2': '38d18a40c0bdf02f98f3ee35749c295638be37fb8699aa626ca5c87d0ad42512', - 'undefined-0.3.1': '5dce72d45cbbc0b661325e5f585440b977e095b6a29601059f509065f86ff9ae', - 'aarch64-apple-darwin-0.3.1': 'e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8', - 'aarch64-unknown-linux-gnu-0.3.1': '6d57e45392f7cffe62853f1f35382e8ac9d52f1061c97ecace28dbf50243e7e1', - 'aarch64-unknown-linux-musl-0.3.1': '2465eb291940c51cdf84c68d2a699d4026f7030cdaeb2a4e2801a3c4c0213f19', - 'arm-unknown-linux-musleabihf-0.3.1': 'dba9127924bd5e809600b1554a8b91f8abde511cbe9ddb5027a9749254c7a531', - 'armv7-unknown-linux-gnueabihf-0.3.1': 'e95c07dced47f3c6444c66f52378bfbcc0015281bda2ad79d308421a458b5384', - 'armv7-unknown-linux-musleabihf-0.3.1': '8c58b4ce189d5e1add276eaaf3d69c77de340cbbe79fec375333de00e4e360dc', - 'i686-pc-windows-msvc-0.3.1': 'f5d15af65e0782f2459770afacb3ce8c5a4916566399e357c951618edbd27c9d', - 'i686-unknown-linux-gnu-0.3.1': '22508ed628b2966ec0cac3264db99337059f8c1cf70c0db0ee88d7d27f3e181f', - 'i686-unknown-linux-musl-0.3.1': '223b6920226ff5af37178b0511112d82af6dbcb24dd78230d972a17de6a4a0ae', - 'powerpc64-unknown-linux-gnu-0.3.1': 'c4eb8e06853c0e1accb6ef7976ee52ffe21631709a3ff63f4a1523ecafd7354d', - 'powerpc64le-unknown-linux-gnu-0.3.1': '540aa375abc43c5fcb39e646ab7e3ebc14ebfb95264575c81b8c9c335ab4122f', - 'powerpc64le-unknown-linux-musl-0.3.1': '387459fa2cdfa3f9814c8a2de2a864a0be6ce159f76e831cd249f4b659edda5a', - 's390x-unknown-linux-gnu-0.3.1': 'b469bd51615edb3ec245b0aeb9338d074a8832856029b331f2a949946e921cd9', - 'x86_64-apple-darwin-0.3.1': '8a4fc632bf32b49a08d1994e6a4054b535eb7f0eb85e618f30fae86375b34cab', - 'x86_64-pc-windows-msvc-0.3.1': 'e57ebd003eee92edfaa909fffec3214aa032590566851edc5ce55824c4aacf8a', - 'x86_64-unknown-linux-gnu-0.3.1': '1ad8815d46435ab29923d84717dd0f8ee467be055cff5c4ba1d9855882a6ae19', - 'x86_64-unknown-linux-musl-0.3.1': 'e9f8396a2c06d6c06c36338b795e2978645c2b3b0e6915537e1860dd0cd951ab', - 'undefined-0.3.0': '1f52cb03becdae308666b75ff6b193ca55267a762ecf98d99f8f4cc8cbfe5a5a', - 'aarch64-apple-darwin-0.3.0': '232935b3b2c187c4f8dc8bf533875bd7163d06a6fab625a1770689b337cbfded', - 'aarch64-unknown-linux-gnu-0.3.0': '27fca2b1fda6870e1e6d376276cf0e7d3ca87b7e5c3062ef1301d9e5266cfa39', - 'aarch64-unknown-linux-musl-0.3.0': '55bc78ee396f3b9847d28a83edbeeb557edd78462b782459d95fa9cad86cca5e', - 'arm-unknown-linux-musleabihf-0.3.0': '9305f0214f16eda22e72f4dd08c6b980243fe16a43b6efcaf11227efd1aa5d9e', - 'armv7-unknown-linux-gnueabihf-0.3.0': 'e949eb495b199e6c5853f6b051e3c7db84c044453e443d7b7892aef4eb08f5bd', - 'armv7-unknown-linux-musleabihf-0.3.0': 'c466e061a8547a669e216321738d02ca5c864eb4ab3feac53a51a681a07cb2d7', - 'i686-pc-windows-msvc-0.3.0': '1dbe4b2b9829bb11cdb3ec64e916749f6224f0db0a65bbba69570a8aa1289e2c', - 'i686-unknown-linux-gnu-0.3.0': 'b5a7fb7e649de9fb0342fd42c3bb1c5e6dd25d96096e08af99caa276fa44dc07', - 'i686-unknown-linux-musl-0.3.0': '569ed9ac409ebce382e1583c33705e159bb960e79f9fe58feb9a357676be3607', - 'powerpc64-unknown-linux-gnu-0.3.0': '0e075944b22557da941677ff25fa21677cd1eaf8302782dd2c94643494f667e6', - 'powerpc64le-unknown-linux-gnu-0.3.0': '6886c917446d6b954eff5c688596a4216e9418560166271eac1caa722847350c', - 'powerpc64le-unknown-linux-musl-0.3.0': '560583853792f5e3e4d40594436d5f75cdbc9a4e304d6f781f601b9eeaafbfd1', - 's390x-unknown-linux-gnu-0.3.0': '72b1b81523466a0fbe388bbde0a6926ed0af4884cb46d1e46ed1c0232a076cab', - 'x86_64-apple-darwin-0.3.0': '8f3abf9bc7f49ddf85b1ebb4e5a5dd2032b6e7a4492fb5fce4b70ee4a9938733', - 'x86_64-pc-windows-msvc-0.3.0': 'b8b693699b46d2063cf92ada07671a309f14ccb99b34f9b3f927f7fa08b24c19', - 'x86_64-unknown-linux-gnu-0.3.0': '06e38986b2923882ad250ac42c9e5db3295bde33693aa9a63b8d32632daba007', - 'x86_64-unknown-linux-musl-0.3.0': '194d2a550af3e334f693f6afd716d66adc90445805e72bfa8108f36714ed7431', - 'undefined-0.2.37': 'bad5e3e29e3a795a789dfdce52b4ae4c252f95572539b075bc938870e6e7c1df', - 'aarch64-apple-darwin-0.2.37': '35786030f926e3d34d186edc0ea3989698e57755852af9ae4b39da5109abcbfa', - 'aarch64-unknown-linux-gnu-0.2.37': 'ac1b4688074f5a2eab1fbe331e76b5f5766e143a8eac87f64f24379168b971f9', - 'aarch64-unknown-linux-musl-0.2.37': 'ddec1dd3aced1a209645c0d4c8fc9bd9f3c6a4577c43a854efd6708440f34f14', - 'arm-unknown-linux-musleabihf-0.2.37': 'd99c5c44ae042249b50720d3979aa5b82f61838ee76474a250ced23c09475a85', - 'armv7-unknown-linux-gnueabihf-0.2.37': '3fe173e1e1d2f1bf0196bf8a140f39bc4eee34d16c6f758e552bf2a40f82b579', - 'armv7-unknown-linux-musleabihf-0.2.37': 'dd5a3225a8f39a4621425079f867decea4638e21d65cc9fc6803f1f6d4e22f6b', - 'i686-pc-windows-msvc-0.2.37': '4c024f88c23359f8c0a61a31f93197e1fcc0b6e2ed2ea17733b99494b75078c8', - 'i686-unknown-linux-gnu-0.2.37': 'a041764c46d872124b4ba390bf1a9263fb52fe1b17cfbd5af85a0deaf66ade1e', - 'i686-unknown-linux-musl-0.2.37': 'b307f7dd65a3175aee4283603c0107496de14e431614ab10060d89f4c9ceaf31', - 'powerpc64-unknown-linux-gnu-0.2.37': 'c4bee003a56938110c1e9d1c1843837149f20696c35d148567b1106223f06200', - 'powerpc64le-unknown-linux-gnu-0.2.37': 'c54213db80c976487f54e5521f73010029da1bcdd22136a52a9976deca30db9e', - 'powerpc64le-unknown-linux-musl-0.2.37': '8da6a98b7bec35b6333b33872c641a52070331192da840ea5716fbd182f66e27', - 's390x-unknown-linux-gnu-0.2.37': '5603fbd953a980203c9f6adec0482165a3b8274b2202a9fe46e1ec3168d4386e', - 'x86_64-apple-darwin-0.2.37': '13185dd359d6b3c3c0e170711b2939f3512741ec64c436e0bef83813e94a6691', - 'x86_64-pc-windows-msvc-0.2.37': 'ea51e0dfdc0c1884d116b5a12b589e65bb47d0b2d071d6da4a23f453585be144', - 'x86_64-unknown-linux-gnu-0.2.37': '2aa80df3a7120a13fe8cfd0ced688a6285e58c40cfa878e6de817356914df485', - 'x86_64-unknown-linux-musl-0.2.37': 'a4ec0d06361c27a87111212623559da332382c2ead25c1f4c9386adee9905b62', - 'undefined-0.2.36': '6e7e0950c5808eea0bda615ab5d2e9fa517434edc0c17d0766cd47606241c060', - 'aarch64-apple-darwin-0.2.36': '89f0f76695ee554cdfae60245667b795ffeac7e4d52c0b7fa90bb46d4cf95d59', - 'aarch64-unknown-linux-gnu-0.2.36': '8bbc36002d398b5d9febe93be913d42d2844944451189cad6ff2b844c604f499', - 'aarch64-unknown-linux-musl-0.2.36': '921a5c069a74608e63e7292d606b1cf0096ffd0914f28bd825968ac66ab3a77f', - 'arm-unknown-linux-musleabihf-0.2.36': '349369041c1c86c69bcbdbc3fa2bb0d03e864a95db5e50ef0c04ee67c4e0d428', - 'armv7-unknown-linux-gnueabihf-0.2.36': '42d15ec25a0e04fcda9e6e7501e8cc51d17e593a8758ec76e686381336ec6302', - 'armv7-unknown-linux-musleabihf-0.2.36': 'eaed31f496ce42bccbe17eab69d36351c67d3832f9c7740e33c34a3edf5c5451', - 'i686-pc-windows-msvc-0.2.36': 'b8a3fcaf5e66ae916f31d8c1df8a7d32558eb8e852087c6038cc80fb3e04dace', - 'i686-unknown-linux-gnu-0.2.36': '1f0515ebd04690b5f09b5a55531eff3595fc778d021bf6b33b5d5dbfdd76ce0a', - 'i686-unknown-linux-musl-0.2.36': '07bb7a141abfe23d0fbdf30e0840865671f491228288cd851d943a984ff5982b', - 'powerpc64-unknown-linux-gnu-0.2.36': '9ec964f73faa23b52e8022086fbffc8f77dbe346e5a17344967a290c10ea0143', - 'powerpc64le-unknown-linux-gnu-0.2.36': 'f7cf2055c9048faebd75665487d20a55812e37535c6f8393a97f715f40482433', - 'powerpc64le-unknown-linux-musl-0.2.36': '03c3221271bbde6333be35e7bdf0576a73165f8f35c48e33cf09b8e14f907718', - 's390x-unknown-linux-gnu-0.2.36': '91788d177f47e3a6db63d5d619f622814b1407b673c311873b4868f223eb2ca5', - 'x86_64-apple-darwin-0.2.36': 'a8c08a6c978b0ef87c00012d892d936324dc9a6881efefbd028622b69c903aa5', - 'x86_64-pc-windows-msvc-0.2.36': 'ae6e07bd2c0843a0ffd18959a519c125bcc444d4ad1b71c00e7c3734bed0777e', - 'x86_64-unknown-linux-gnu-0.2.36': '6fbea0801c1698d00b2300b220d4f72a4edeb0406877ac6d774f4ff385b6fbe2', - 'x86_64-unknown-linux-musl-0.2.36': 'd3543c84d8b2da5d8f08b6f2e87e792aa7626c47cb65458c7b92e68e8614d3a8', - 'undefined-0.2.35': '19425afc472eb6e7ff6c4abc28ed2582af977aab1b1d7f15db34ec9579ef9095', - 'aarch64-apple-darwin-0.2.35': 'e07fd0ed3b5e92ce9018f8775aa76cfd891fae8cb0a1627d5a861158fdbbe32a', - 'aarch64-unknown-linux-gnu-0.2.35': '41d1a15fbd346ca3b33e8c60e54bc36df11a8e8655e98e25801847c270e1b6f9', - 'aarch64-unknown-linux-musl-0.2.35': 'b8c920e4d335f09ab032087e0f27b4beda00248577ae708fbebf0362f7b19818', - 'arm-unknown-linux-musleabihf-0.2.35': 'd50f55d2cdcca7aa7542e73482106fa8413541ad17da47a2a9be612a0b53dc74', - 'armv7-unknown-linux-gnueabihf-0.2.35': '322b8564e20a860d5d6e0d9de950f2f0d8204ed7b7a9605f25c0039cb01ac6a4', - 'armv7-unknown-linux-musleabihf-0.2.35': '5f2a37d0414c8585770721139fcad061f123f312ca85faebc70f8836bc5b0c30', - 'i686-pc-windows-msvc-0.2.35': '2bd193bb68095b21b86a1126a6fe7740a36bd76cdbb606f51b0da6f19214487a', - 'i686-unknown-linux-gnu-0.2.35': '44719f49c7e7d634db35d9656f2f168fc13042ab87ee9afe8f04c864a3c341b9', - 'i686-unknown-linux-musl-0.2.35': '2cb162263ee067df2a10c3f9c9959835862aebc17402b7e0decff4a0dda30b45', - 'powerpc64-unknown-linux-gnu-0.2.35': '31ca8623f79926496f78d335839d13d15c66c7e164804604e8f4535be4f5be19', - 'powerpc64le-unknown-linux-gnu-0.2.35': 'b1d797f9a9f413f3d3f884accd47a97c84d64145407d458e4442b4d011aa39b6', - 'powerpc64le-unknown-linux-musl-0.2.35': 'fc7e73e1af403cb91a0b4d6bb3d133facf93d0c28c188bdb5f9294d4e1e0e657', - 's390x-unknown-linux-gnu-0.2.35': 'f52ffe9ceb3817df9a999194ab32fb8f997707a44e6597dcede0df238fc14c77', - 'x86_64-apple-darwin-0.2.35': 'f8159e1977b00cf99e120858253ee675a66669b820e63af7f7e7e91cf6a3b9da', - 'x86_64-pc-windows-msvc-0.2.35': '1bbb2a9a81f609a5f257ed066e25902bba995ca2ade3cbd4839703ffbd221071', - 'x86_64-unknown-linux-gnu-0.2.35': 'f1a9bcbcc3e085fb5ee6a79f5778373fe27fa192d95fc47db20c596789dd1b97', - 'x86_64-unknown-linux-musl-0.2.35': 'bec7f54d33aaff97098157b4893b9d4a93200c2902772cba13d60c266a54d087', - 'undefined-0.2.34': '2c8167c6b14738d2d94cc864cbcc5a2f4b45d9136f8cbed348dba937a03927fc', - 'aarch64-apple-darwin-0.2.34': '2eebf71aa924d8d977983394c212cb3ad99f6e241e77702822e8f407c8e231e0', - 'aarch64-unknown-linux-gnu-0.2.34': '022b805b4d0360e4441fb94262e6a4cdcde9038aabe156242ba833e1ed00e0c3', - 'aarch64-unknown-linux-musl-0.2.34': '227cd1dabb4ebb98e51c1b7735fa94dea96e14db7efb2d3d76b48c87a61a3d28', - 'arm-unknown-linux-musleabihf-0.2.34': 'b71616ec27d83325f0b1f5a801181da201c2bc0c148c20006a40e48adaf2ad6f', - 'armv7-unknown-linux-gnueabihf-0.2.34': '5e3ff5bbb4159b7a2f9768caab5bcb692756509566ef52fd5eca129b2e0949b6', - 'armv7-unknown-linux-musleabihf-0.2.34': '7366c01e5996b7d5251423ae37bc3646e919b39a0d9f1fbde25e3215134a006f', - 'i686-pc-windows-msvc-0.2.34': '34035c24e9c6dcf1164f10fee22e12fd03b329479233986909458df3259cf22f', - 'i686-unknown-linux-gnu-0.2.34': '99c3873d4bc3816c383c0e2686de1066be1ca8ff546e29e418e435296df13ae0', - 'i686-unknown-linux-musl-0.2.34': 'e659c3d71edba36fec7b9d742c5c4c3172a22bc409d713bb2d944a8a916d221c', - 'powerpc64-unknown-linux-gnu-0.2.34': 'e5b4e6c20f5f79abbc4e9eb3881ea2b1edae1ad747980d7a2e062f3be09478df', - 'powerpc64le-unknown-linux-gnu-0.2.34': '125035676a19c335f6c8af34ccf69d5df144183c13649e823cc0959886a11cae', - 'powerpc64le-unknown-linux-musl-0.2.34': '728c7750d408d3300437fb79b74b126e5b49382b45b45fa22d49195ebd19b2cc', - 's390x-unknown-linux-gnu-0.2.34': '0da036696c1decfa388ebaf98e779e8085fd2bb76a91128bf2445fe32c84c053', - 'x86_64-apple-darwin-0.2.34': '62764007f4553f3677ef86e864097405d1b054e8a62e89f047e545816347491c', - 'x86_64-pc-windows-msvc-0.2.34': 'd237ebacb6f4a651fbad3af702f29b8262b825e070c87e9020d5164936459393', - 'x86_64-unknown-linux-gnu-0.2.34': 'cee114bb3c73a4be5066660d71eea1ac996378f567ba69fb7f29c688289245cd', - 'x86_64-unknown-linux-musl-0.2.34': 'd1d49d2d3e1e2e2ba547b6cad8b1ad279cdbf622fe5b3fe3b6d470d7a06e3c92', - 'undefined-0.2.33': '7dbdfb20366d96745ab9e48c0d8bd0a88926f0eef4675876fd45e4ecc3942cb2', - 'aarch64-apple-darwin-0.2.33': 'a2602b99e71bc04d7eb11df00b87be068727bb47fc415f7fcbd24dae49c947a3', - 'aarch64-unknown-linux-gnu-0.2.33': 'd4d24e221c5f1c9b0f2bb39b919c933259175bb9db37845a92d31bf241f28035', - 'aarch64-unknown-linux-musl-0.2.33': '9d4ba96eee49b9483fd55ab1b376ed4b9f88f0f9d155c0e48e7280d3cc388d4e', - 'arm-unknown-linux-musleabihf-0.2.33': '9940e8f34a702e6944ce953208c1abac7bc9fcbe8348dd76c3b5eb62c1125126', - 'armv7-unknown-linux-gnueabihf-0.2.33': '08b9a84370acc5ea1631a8fff94bf7522305612da3c24c612fc1d4fb5ecd3839', - 'armv7-unknown-linux-musleabihf-0.2.33': 'fa5a2cdd3714a2f4b8d6f64c86b988e6c7189d67411814a6c20905992201d16c', - 'i686-pc-windows-msvc-0.2.33': '69c5d28aa75d0ce3fa5466736e2e156db48514cd7c9c44e6bc6515994944695d', - 'i686-unknown-linux-gnu-0.2.33': '176caa5100e047b32e84c0c7ce1a31f74610b3f94266f5aa3f86d02417fcdfb6', - 'i686-unknown-linux-musl-0.2.33': 'f0d93ceced329740403cde3c0e6f44325aee40b5619c3fc855e602f1829bf731', - 'powerpc64-unknown-linux-gnu-0.2.33': '7aa9bf5a765801bdfda72b491d716cf08eea7d4821c41698217732a403b7eac2', - 'powerpc64le-unknown-linux-gnu-0.2.33': '329aab924d8572d6aa19e2c2e225beb5bcca8bf04e62cc023941aaa06768fd6d', - 'powerpc64le-unknown-linux-musl-0.2.33': '1c99451ea9d95732e78bf3c612bce889a1815cf333406857b170986739fda597', - 's390x-unknown-linux-gnu-0.2.33': '095a4b15583e21d521e7954b5da62d5a08b69a08cdfb8847b3b5318e054c29ce', - 'x86_64-apple-darwin-0.2.33': '0d4a2c20e1d0e06c83a60fac0d85bff46cd5312f146dd0f6bf35b63ae8f7a9fe', - 'x86_64-pc-windows-msvc-0.2.33': 'c080525062c3d803e63ef493002f234056dd6efe6d0281d86d672510702823d3', - 'x86_64-unknown-linux-gnu-0.2.33': 'e62a4123e6b77c9dd22f133212f7bac638077ebde73daa20fea3bef3ac51c84c', - 'x86_64-unknown-linux-musl-0.2.33': '5f6842bd7a800a83c568b7a2cf18f4d9428e929e7ea91d55cc8d53e0a0c10c42', - 'undefined-0.2.32': 'b7694bd29041e5315cbd7194253bb865a51369e19897d7b6b303f4d6255477db', - 'aarch64-apple-darwin-0.2.32': '5084b7544da648d3467440f87a3f2929ca7c593a311a3b77271b638ca7664f3c', - 'aarch64-unknown-linux-gnu-0.2.32': '97879b661787586ab3a747d9a65a0c295d9ed445001b5860f9ff2923ef07d824', - 'aarch64-unknown-linux-musl-0.2.32': 'b3fff6bb0ae62154c5d17256b40f3d568a7bd7037e4839cb672545b16cd8622f', - 'arm-unknown-linux-musleabihf-0.2.32': '9b3957aea729f36d823a59ae0dba033860f5904cb42215d55c7857d2d1fb3340', - 'armv7-unknown-linux-gnueabihf-0.2.32': 'c3afbf787fa9b2cc8fcfaa74cf0fc723d224d56b514b0851dc0901747b03fbc4', - 'armv7-unknown-linux-musleabihf-0.2.32': '33941dd54c28c6b56f105cd198e7ca7ea480676bda71b0c5e31b55a1493c4acb', - 'i686-pc-windows-msvc-0.2.32': '7a449bc0fe9326d31ad809c8cfbe19ba2b67b28c9dc631bb6f1696334442d928', - 'i686-unknown-linux-gnu-0.2.32': '1c91f7ad89b5697a33906be435fe6b9fad903916096ef61f034257252a8e4c86', - 'i686-unknown-linux-musl-0.2.32': 'ba1b6775f17d1522a6ba69655bfe792ba0b4c9ed481edec08ee56bd74d0d5368', - 'powerpc64-unknown-linux-gnu-0.2.32': 'e5e0d7b9ce6db091ccd8b642d11e65205650cb9b02514fdcc9ca35b699cce0f6', - 'powerpc64le-unknown-linux-gnu-0.2.32': '60534e2567ee4b84922d4b6e39000a2709bfa7f2cb162c8c0a2274f3c4ccd2d1', - 'powerpc64le-unknown-linux-musl-0.2.32': '732bb92926d033e22bf65c671ecca31f5a08f15b696fa944e7f57d70a4823f1f', - 's390x-unknown-linux-gnu-0.2.32': '80420ca075a995f2171b68d6311a304da59461c39594db88d146079f2656b51e', - 'x86_64-apple-darwin-0.2.32': 'e86f3bd4e7c30b0e4094d1eff520d762fdfac9e55da785db23b0139b675aeda9', - 'x86_64-pc-windows-msvc-0.2.32': '1725fafdcc1390574b8682805ec31ebc9287085f562dc7ac6a64b186abaf1b0d', - 'x86_64-unknown-linux-gnu-0.2.32': 'c676266d23c8dbe7832c44f37832c4e4ecf21781b7b0560bf27b270bedb14462', - 'x86_64-unknown-linux-musl-0.2.32': 'e7deca89ca4e273c57adc45cd91e83377c74916feb9ece311cc93c8a8ab2c2e5', - 'undefined-0.2.31': '81dcedc57262b565ba3f9f6a20d368a2be304bbe845121f849d1c75c6d4b53c9', - 'aarch64-apple-darwin-0.2.31': '34938bcc045b35a646aa768d660755e838a23ab224ea3687dc577299da227fb3', - 'aarch64-unknown-linux-gnu-0.2.31': 'f8d46c40c3f6ff762e5f0408a151f4e2ce97ff878625b0c9bd5ca13f14e576e8', - 'aarch64-unknown-linux-musl-0.2.31': 'f2bdf2132993b1dfe50ee610e9df2a56cd89f0346d9d8a5cc3275b47c4c5e7a0', - 'arm-unknown-linux-musleabihf-0.2.31': '8c4628e19a571ca7480b48c6ea739efeae2abfe08e07fb8f8e7b0f49887af223', - 'armv7-unknown-linux-gnueabihf-0.2.31': '8e7879750c682fbd3619ced0770a43afa902865a839cc84fe361bf5a9f55154a', - 'armv7-unknown-linux-musleabihf-0.2.31': '051c6f44f5f1607ea5f11d8a73cc91064a29c7293d6d050d2d7ae34c9d1ec680', - 'i686-pc-windows-msvc-0.2.31': '382c7007bdfa6f02d436b552fee33d2d2beec5335410b9fe308067c094f95742', - 'i686-unknown-linux-gnu-0.2.31': 'dcecee22480a73c9a31fcf76cd633ab4c4befb10180e61b1b298e78a85ea7f8a', - 'i686-unknown-linux-musl-0.2.31': '990d1ac694f8d4bc31b79a0a64817d0781f0c59a42e57136cf9165dbb7aeab2f', - 'powerpc64-unknown-linux-gnu-0.2.31': '3b556388d586f24e37c6e6478b97d4519a402b564b7a70f1ee5f4d86352547ee', - 'powerpc64le-unknown-linux-gnu-0.2.31': 'c2219e0285a14b8d1dbbcbae750ef9b66a3567e862bec3fc2f55e465941f78fe', - 'powerpc64le-unknown-linux-musl-0.2.31': '1756ca439bfcc86b40ed3d987170439212c54118a5741a0af662892817e46f93', - 's390x-unknown-linux-gnu-0.2.31': '98a83bcfdeaff40772f7338538ea8a1b94ae60a94b20e552a80efd0ef4db7add', - 'x86_64-apple-darwin-0.2.31': '8674abad2d95099de054c92a9310d95466932176548a57916fb5f1c5674db790', - 'x86_64-pc-windows-msvc-0.2.31': 'e5779b76db0ae0334221a1dc9956b97dc10969735750777717551397a2b48e31', - 'x86_64-unknown-linux-gnu-0.2.31': '351278978126eb9a74c4d735d3ee2191de5cd492fcc1615cc4c1107ad3e632ff', - 'x86_64-unknown-linux-musl-0.2.31': '003e8ea52e2b8383009f5d2bc78becc27f6c97bd9f6837140162cc25247a465b', - 'undefined-0.2.30': '1961bf9f481364dfd34c2fa1922152d0901f230de444b168f2d7e29c5b48de5d', - 'aarch64-apple-darwin-0.2.30': '387f24ebf55f304352bc5fc4638ca251112ab682291a00290de3753a1b5092f7', - 'aarch64-unknown-linux-gnu-0.2.30': '3cb0b65d21961dc36044562b9ba9462320e1106bb40f55e5ec03614c83a8fe0d', - 'aarch64-unknown-linux-musl-0.2.30': '4b4e5fb2ca63fee674a32ed99e1c371d4dcfe194787c3bddc7bef37b4ae3fd24', - 'arm-unknown-linux-musleabihf-0.2.30': 'aa68e7f58b1b6b31481f104893f44acdd57ab712f17429f3bb6ba03ac3fee370', - 'armv7-unknown-linux-gnueabihf-0.2.30': '355672634f530981171c67c7d99bda999bfd66b4273d0d292ce3f5db25118213', - 'armv7-unknown-linux-musleabihf-0.2.30': 'b3fa035bb0b493ab7bb65ff4d5c6c6740a8804815acfbd50c718ec03f6876e33', - 'i686-pc-windows-msvc-0.2.30': '2ce7b022fab83161cf9b26a8413702ab328c2f01a530a2739712527acd769068', - 'i686-unknown-linux-gnu-0.2.30': '6777ab4ee773df50790da19586afe41507dd9b4c69db39e09154cc013e066aa5', - 'i686-unknown-linux-musl-0.2.30': '2145948b75e56106618e2b7a9cea916194cca7768c7e83a3e06095e4690f214d', - 'powerpc64-unknown-linux-gnu-0.2.30': '7287d8034db3f1e071ea1098f7fc0cf8fd853c7731d37f59e374e9c771d92026', - 'powerpc64le-unknown-linux-gnu-0.2.30': 'b7c8a829b869e11e64ca9fa1d748b5094e1841c6487f017b70117d826dfe6c46', - 'powerpc64le-unknown-linux-musl-0.2.30': 'cb83556e2cb6f6d7731c436dd3ad1b048d323622d6d37ecbb3e320d7dd0c6d39', - 's390x-unknown-linux-gnu-0.2.30': 'c8f623ad3da4bc425185fc026b52b80a86b796955dc65ccaf67e7a4778bb05c6', - 'x86_64-apple-darwin-0.2.30': '4048630dcfca6946dd8b7f2e8ff38dbc54a9e47ae50f9e04a372081c413e0b66', - 'x86_64-pc-windows-msvc-0.2.30': '8cae7297892b5cd947fc8dc9ef045dc82c8a3c948413cbc68aa46285b888031c', - 'x86_64-unknown-linux-gnu-0.2.30': '572a09703b40680191f4da33ffad2ae57cee93f0007f1eb25b84d241b0b418f2', - 'x86_64-unknown-linux-musl-0.2.30': '430aa21ca5c6eea5731dd5f3f8c0a364160a6e2d7153dcc0b3941ecc06947000', - 'undefined-0.2.29': '4cc0762718440d622e351871e568dbbd1b4325a0a362bea4158adc81bf81826b', - 'aarch64-apple-darwin-0.2.29': '34e214671c640b72e7805ae4802ad774f9e7636d59361b6434f38950af0fc6c3', - 'aarch64-unknown-linux-gnu-0.2.29': 'ada417de9049b4e16cc4b31de1096e19835bd971569f6462d3c6d24ce75006b9', - 'aarch64-unknown-linux-musl-0.2.29': '77607a17959e650fa085a28f74b120db065833957a8306ee458a06e331433a21', - 'arm-unknown-linux-musleabihf-0.2.29': 'fc91ac746a94ae16bfb1fbb0fff159d9df6e40b7ce67f91dc7ba7984d417912f', - 'armv7-unknown-linux-gnueabihf-0.2.29': '9ddfcbac00d7594e3c99ea4a97fe3a63895266a5993ae458e70e05e6834e3247', - 'armv7-unknown-linux-musleabihf-0.2.29': '62dc5eb5430aca18e02b0f8b156716bdcda15ff4a7605f4129500d6f18d157d7', - 'i686-pc-windows-msvc-0.2.29': '0ff66ebe55fca07d6637b39ff9b9cf8169c726d5c3d3776e232b8cee2b04b22a', - 'i686-unknown-linux-gnu-0.2.29': '719d62f7e8e48fb746454c817f8ba094958f673bcef3bfbf0a3fe21b9d9fa296', - 'i686-unknown-linux-musl-0.2.29': 'c204569e573555810c54cd7fdb96cac3ecc1014d69fb3017b44270413313a212', - 'powerpc64-unknown-linux-gnu-0.2.29': 'c4e63df2e3843c1fa9919df76d00996ec2f8d733b81f13673c7f09ddc5e8fd85', - 'powerpc64le-unknown-linux-gnu-0.2.29': 'b18ed91775d1a715f975c91a3b9a16f53b7c5e25ee6d9101493f1091c425edbc', - 'powerpc64le-unknown-linux-musl-0.2.29': '7a35b550385b8131561de362d769da1477b3c22a9eb3c9a42f4e758971d56b01', - 's390x-unknown-linux-gnu-0.2.29': '47c3b46b281c46a1379a9ec3e11748e44c33b613582f294f3fb5794270c49d90', - 'x86_64-apple-darwin-0.2.29': '8536255454ef7c9875d64baf7616cfdad6ce263270860f34b6ec38f02faffa0d', - 'x86_64-pc-windows-msvc-0.2.29': '45456b9383097670a5f05ecb1288f9d6b7f7d84889ae7b6022130feaae834334', - 'x86_64-unknown-linux-gnu-0.2.29': '1199ddcaba212d1909d934b7edfe24ee39f6ac60cfce1a558d74d082f9763937', - 'x86_64-unknown-linux-musl-0.2.29': 'a7529403581edef6e1e34d1b7c321540e526105aedaea1672cb0f37cc1b5da0c', - 'undefined-0.2.28': '4d42d64676b09efb34a01c867a6fe2acf9cfe9be8d8886b08177f837bd615234', - 'aarch64-apple-darwin-0.2.28': 'b84fc81eecdeda15f9cedc1634685104463798903ad2241f46994bec17bdc5be', - 'aarch64-unknown-linux-gnu-0.2.28': '103fa6a5e68562376351d174bedb5013dcc52b0a7a27258336b87a7186aa10be', - 'aarch64-unknown-linux-musl-0.2.28': 'bf23111a512596da533ad21ef94ea1758957f0f12ca9a306b298617affa4db8d', - 'arm-unknown-linux-musleabihf-0.2.28': '0b0113d0326fae2e99c9ac6b8a66607f74aadae7e9868149439472fe6c3fabfc', - 'armv7-unknown-linux-gnueabihf-0.2.28': '6e50f4f5690f0135b30d0f6e4cbbceec1909bdef10b1996abb42042b6b28c64b', - 'armv7-unknown-linux-musleabihf-0.2.28': 'ec9bcd417ccd5608d8f6f053b84497204704c6439c04e80ccc9cd4ec379a3fc3', - 'i686-pc-windows-msvc-0.2.28': '75de1d50a1f5d19de6794375762ab8afefb0b0c4704d6c599e5af6cee84ad0e3', - 'i686-unknown-linux-gnu-0.2.28': 'b01214f008a456aef5acd9043fe13ffadd8bc7975912f288a4afc7f26ae1136f', - 'i686-unknown-linux-musl-0.2.28': 'ded399ffdfda93b56c78a29eb3889f7e8c0700348af73207972940e66fb45c43', - 'powerpc64-unknown-linux-gnu-0.2.28': '5e1cda75b920f9478f4711a3420ddad07d2d25b5f7eae93430968a7af57568f4', - 'powerpc64le-unknown-linux-gnu-0.2.28': '0b246ecc617ac22c75170bf9db20ba03fee0df46f7adf6b42a3f949f5316e380', - 'powerpc64le-unknown-linux-musl-0.2.28': '8928c0ed5e2a5ca68989d823ac813592c25de7c2c2e77c999cb79f50b6c9425f', - 's390x-unknown-linux-gnu-0.2.28': 'b865fec71668ab77aee6f6ffc823a3fc4f92ac04d0746755e1fb624fd3fd7f75', - 'x86_64-apple-darwin-0.2.28': '52da204e0117cb65471ff2e17b449f69adb6091720e0290721aa2a9d7947f6d6', - 'x86_64-pc-windows-msvc-0.2.28': '7635ff298ddfde400e00054ba31d88a139dbfec234578f10376984f3e0aa36e2', - 'x86_64-unknown-linux-gnu-0.2.28': '9c6cbe9f7d7b2abcb45e028d82a5986b951af76a587c93c99922ba0e71c7f21c', - 'x86_64-unknown-linux-musl-0.2.28': 'ba2656952c1dd29e400a9d21a7b923b26f1cc8a4b29468e7c99fa4613034d837', - 'undefined-0.2.27': '2dc0595cca3a3167832c87ddb340138fa77e682472791ff9c4bf4ddf39a7364e', - 'aarch64-apple-darwin-0.2.27': 'd071d3063933e2e98322619bd4318594e84b7f6ce4f6c5c13a2ef424b0704bb7', - 'aarch64-unknown-linux-gnu-0.2.27': 'c390e4791f3bcb44041d326f6a7aabb2498a610d2b1d28964c3fa8de97fa7dc3', - 'aarch64-unknown-linux-musl-0.2.27': 'f7ad07f32e01dfdbd6b217c7f6acd7822eb6600d9992d204b93bfa0749bc6b29', - 'arm-unknown-linux-musleabihf-0.2.27': '41df51f4a9de2258973c6f0b80d6122475f18909d3905135d9b0defcb0222737', - 'armv7-unknown-linux-gnueabihf-0.2.27': '0316c82068bd34faee8a26bff0b85c25951a10fc54bc2ec5bfae64dc00e4a58d', - 'armv7-unknown-linux-musleabihf-0.2.27': '8553382a71fbd84e351f732ece7513e1b36a294dfb2949d956a45e389a397b6b', - 'i686-pc-windows-msvc-0.2.27': '6183e4fecfe5404dc69d9cc23c248441ba25a21541c8046c8a27b09a63f224b7', - 'i686-unknown-linux-gnu-0.2.27': '4def707256649e6ad40ad33c8c00464d163728a969e54baf94f9d8463b4b89d8', - 'i686-unknown-linux-musl-0.2.27': '383bdad28c1a571856aee566f37f888c65fa36385d9e0fff50950dd4280d09c3', - 'powerpc64-unknown-linux-gnu-0.2.27': 'bc7161175d823aa92d27402e137d1753da1a37fb6d2f7fe534e829bf7f9317cf', - 'powerpc64le-unknown-linux-gnu-0.2.27': 'bd8eb63b1e3de60279c8daa045f3f738f4f533787302fa0199275b8624831f8f', - 'powerpc64le-unknown-linux-musl-0.2.27': '9eff96f3761db33e7043cabdc38b5e49011929dc777ee44f1ea3c4747ee07dd9', - 's390x-unknown-linux-gnu-0.2.27': '4a8e46f67995c86e955416907b4b37558f9df6786851e943ae896f22fb6a3bbb', - 'x86_64-apple-darwin-0.2.27': '56be1ded925e7c1852f8853f7637942786ae379c0ecdbc88cf101f17f8413129', - 'x86_64-pc-windows-msvc-0.2.27': '1ea0b0623c362c47c6d00801e09ddf948cc27cc18200e5390469e279dfb85d29', - 'x86_64-unknown-linux-gnu-0.2.27': '224cdff5d82ff7053d1a9bf61e5ae89961d536eb2da8a4a13b93a49a0ab434bf', - 'x86_64-unknown-linux-musl-0.2.27': '2fa8e18d3804863c1355ef8b0688530c1a57b1981be69476641a8dc87c812d60', - 'undefined-0.2.26': '1ff81cb3c0618cfcde78b67ac1b1267a09ebef69826e20599aa92ed6e57b6321', - 'aarch64-apple-darwin-0.2.26': 'e99954e3853a367497f66ed5ec1460cbe0c527e5664732eb2407ffc375cb3207', - 'aarch64-unknown-linux-gnu-0.2.26': '93595aa21aecddfafb3573db9b83761a33d12f9c20ce38bd0840262fdbcd94f8', - 'aarch64-unknown-linux-musl-0.2.26': '824c3a1e4eba63370232998dfb34964afcebd00fc79b4c7b4e9a1c5d749cf08f', - 'arm-unknown-linux-musleabihf-0.2.26': '100c1bbb2b5f09b7c2ca0e9ce9b0c36e8870a2f8c536b24a8098b4bb5375edb7', - 'armv7-unknown-linux-gnueabihf-0.2.26': 'd42cd9db133bb16faa844f46baba52184a3cba5ad6f428bdfb0f3a5d85d01951', - 'armv7-unknown-linux-musleabihf-0.2.26': '370e1a42247359f275dd2e68b6e7279b1718f7ce8148492a291c7851effd7291', - 'i686-pc-windows-msvc-0.2.26': 'ce1118475dfd9636c873b5d135f2f238f522f069955653805def0196ba2c227d', - 'i686-unknown-linux-gnu-0.2.26': '81408c83605c95ad7f5431100293970c040a2f78651f8de6269784999c283932', - 'i686-unknown-linux-musl-0.2.26': 'c6b6dabebbf86c533f75150f67be276d0a934c13db1922597cacc086cd64e6c2', - 'powerpc64-unknown-linux-gnu-0.2.26': '7c094b2a084288d586bad962330648c19c02faf421590c1542c4c961db5b28f6', - 'powerpc64le-unknown-linux-gnu-0.2.26': 'ee28b5db562c13f9262799cd407373734ef4aac229f4436cf4478117ab70d2dc', - 'powerpc64le-unknown-linux-musl-0.2.26': '577babbcfaf8ca472286b492164ac49e0209a18a014b93b340be73c563bbb915', - 's390x-unknown-linux-gnu-0.2.26': 'f08d8559b2f73c3b112edd8414bcba3a94d0a1bc986099a2d24e4a24ba68ceee', - 'x86_64-apple-darwin-0.2.26': 'f7dfea29cd87f8e8ad893fc50fbdd06270de392c79fa42f6e9ef8ebb61ce6c5d', - 'x86_64-pc-windows-msvc-0.2.26': '7bd19cc12f927dcd29e61ea1ad428d4c7315a01561d05ce32d6f9c09ee5ce972', - 'x86_64-unknown-linux-gnu-0.2.26': 'f70997db1acf979b626e23236c289bfbf418e17ffd18a7956d8cf44e6f3f5522', - 'x86_64-unknown-linux-musl-0.2.26': 'aa61951a7101f9de68265425a64ea2320d2ac1857001293274a338becef63180', - 'undefined-0.2.25': '71916afae3d93c2147a08324c8455cb4d49a168ceec5123fea7bc4fac5977703', - 'aarch64-apple-darwin-0.2.25': '79887e314f1614352852b45aad55bb533b45add7ba239faa50cc0122665a941d', - 'aarch64-unknown-linux-gnu-0.2.25': '2d45144527eb5aaa1e073f1046d510b8854f24553bbbf883d0971ac10721a1ce', - 'aarch64-unknown-linux-musl-0.2.25': '34fe01cb0ed953aab2584231875b7f112d306955a92d674edcae4632c475bd2f', - 'arm-unknown-linux-musleabihf-0.2.25': '368bd210f1ac181879d8394480672243e10710d41fbaaff46d5195a5f13f7ed4', - 'armv7-unknown-linux-gnueabihf-0.2.25': 'a107c831168cd40131be62193cc9ee8516868542e14d08c649d7767bf74077f8', - 'armv7-unknown-linux-musleabihf-0.2.25': 'b3e910c7c857dee9436ecce2a5c706a5f70c8e443e10c007a994741d5f0ead54', - 'i686-pc-windows-msvc-0.2.25': '4d787b0549b4ded295ada22a5fb6764588bedbcd83e73a1185292c756922dfe8', - 'i686-unknown-linux-gnu-0.2.25': '8f16d242447721557bdd8b5a4eb97c06d031e02f5f3acaa6c3a0dbc210fd0bb6', - 'i686-unknown-linux-musl-0.2.25': '9c0ab30932a97e8ed1b64a6ddcff313b32eba2a51a46b5aff595df1af5b6b91c', - 'powerpc64-unknown-linux-gnu-0.2.25': 'f36f267441929b6dc21459a8244b70477877e03ad0a72e5cadce4518f81c141e', - 'powerpc64le-unknown-linux-gnu-0.2.25': '2ad2221281afd1f68e8746a0ca630cf2b31d03d017b6bb1dd624975b35a1f70c', - 'powerpc64le-unknown-linux-musl-0.2.25': '57ed0874e885ed1318f10d65971ee6fa91365cb958a5f5f0005975e4754782f5', - 's390x-unknown-linux-gnu-0.2.25': '39d33889705863efcbfc08ef840ce7e6b0a823dc9bd5b80f5001f732c0f1d83c', - 'x86_64-apple-darwin-0.2.25': 'ed21c9ee096bb7306eaf3ff39307461452ace0221a132d45f6919ddd5972949d', - 'x86_64-pc-windows-msvc-0.2.25': '7e55a0ae316797723acc2974a658a5aaf0b94ec9ecc90cf62b94da64da223a8f', - 'x86_64-unknown-linux-gnu-0.2.25': '7f3396784a504ffb3d2190312b4a7c5330f08906ef22bcf544fe20ecde30081c', - 'x86_64-unknown-linux-musl-0.2.25': 'c92951cc355ba7de4897d538e8d420c7b32f810945dcd664f55d50a936331629', - 'undefined-0.2.24': '5d5a694112d8463c0003cbb295cd29697500c4a0a60920466b0a5c50e43bba2d', - 'aarch64-apple-darwin-0.2.24': '49d55dd8a8f2adfb83d1feaee5bf40c20169b411e3809e3455ff0d96bae4f388', - 'aarch64-unknown-linux-gnu-0.2.24': '0232b3d2ad506df099ec488b48a7801e7a51118bd6b5c48b081d5d172ee63ea9', - 'aarch64-unknown-linux-musl-0.2.24': '56bd0db80905d0f5eeba51aa33872727aa40e3dda65c86a584c095ac05609509', - 'arm-unknown-linux-musleabihf-0.2.24': '63d0a438b8ae0e080a5321b668d72a0b40ed9e9f09240592020dc55a39edf762', - 'armv7-unknown-linux-gnueabihf-0.2.24': 'c2650b42b0211cca495cbb8ccadd200256876cd02f70ce5ccb03e4eb6782c16d', - 'armv7-unknown-linux-musleabihf-0.2.24': '51ad3c67b2730040858d59e71b4d3cb8f32e7ef6e1c2b03023cc8518c92c1794', - 'i686-pc-windows-msvc-0.2.24': '3995fbf5a09bcdfc54824ccd0969a975844d586a5fe5dc689f0b8d36eec6e5e6', - 'i686-unknown-linux-gnu-0.2.24': 'dfb662a3dbb7bd1d5da4dbb20805484d8ba7e9d8cc1f6884e737ffdb3106cba2', - 'i686-unknown-linux-musl-0.2.24': 'ebb6d14796fb172b03f2ed561d68c6a0f7468173dd9c2f34823dc868bed6ee90', - 'powerpc64-unknown-linux-gnu-0.2.24': '3d7abf03072c74c6d841979d444add3d44eea3ef2955ea5bf2968549c9ad8b2d', - 'powerpc64le-unknown-linux-gnu-0.2.24': '40e3fa0cdb1da02314c998ba0dde02cbc0ef60dfc75eddbe7a51e5bf83e0db28', - 'powerpc64le-unknown-linux-musl-0.2.24': 'c89746e4807e8a960f681faefc9fcbbc9cf6c261153791f893f90b3ce8b2dc39', - 's390x-unknown-linux-gnu-0.2.24': 'ae088d02d3435bf7e7dd15f72ea8b92888a92762cc7d6830a1a8c9f9cb8c1635', - 'x86_64-apple-darwin-0.2.24': 'dbb918c9d55b99cfe1c995cc330b6b1dac29379e320c35a84e7bc6bc0e0a55f4', - 'x86_64-pc-windows-msvc-0.2.24': 'a044e2cbdfaaea36d15a7c8091d12e2ae81784329116fdf967a573b792fc1fd5', - 'x86_64-unknown-linux-gnu-0.2.24': '24a0c6758a4f533c37193592fd0a9a37a61fb583a4b6abd0bb81b83127d86336', - 'x86_64-unknown-linux-musl-0.2.24': 'cb91cb5111e9eb4f1be7c4b8e467380e65b41c5f19ad956f613b290deaa838c9', - 'undefined-0.2.23': 'd5fe4b3aa545d6bc43cb5fb2a27d3f24f53762472d345b06d0d03a2e27614f86', - 'aarch64-apple-darwin-0.2.23': '1d41beb151ace9621a0e729d661cfb04d6375bffdaaf0e366d1653576ce3a687', - 'aarch64-unknown-linux-gnu-0.2.23': 'c35042255239b75d29b9fd4b0845894b91284ed3ff90c2595d0518b4c8902329', - 'aarch64-unknown-linux-musl-0.2.23': '60a122ac03b4187ddf716995f5f87838ff0edf9bfac372202c5c05269a32537d', - 'arm-unknown-linux-musleabihf-0.2.23': '643666522fb27c45b8cbb12533b57519ede6c1c1a61c1597e9c632888080d55c', - 'armv7-unknown-linux-gnueabihf-0.2.23': '2e284e7718176306b0d042a65143ff5b2c6453f33cadc1ebb19aedbb4f70ec95', - 'armv7-unknown-linux-musleabihf-0.2.23': '27408e6dcdca9437d7813f7122ef08b2de4e21c90c0c1784c32998dcb9f5ed7c', - 'i686-pc-windows-msvc-0.2.23': '8f7e83f5c09320d1ed32dee5773c4c122797c194ce27922cb03889c54d927eac', - 'i686-unknown-linux-gnu-0.2.23': '1cbd6066b8e39445f36cc621b982a053a917708bd5f13d1624484677449bd854', - 'i686-unknown-linux-musl-0.2.23': 'a3e68f5c51efdbc63edfda7f3f830d381964458d46a42b993f8847d4369e0818', - 'powerpc64-unknown-linux-gnu-0.2.23': '2644acd3c6fb902b14325a2a60b324bec6617ce90ff73fe4df15d2ca26ca5572', - 'powerpc64le-unknown-linux-gnu-0.2.23': 'ca16c9456d297e623164e3089d76259c6d70ac40c037dd2068accc3bb1b09d5e', - 'powerpc64le-unknown-linux-musl-0.2.23': 'ee6596b3241df3884ce77780833051ce4a3700a83e82e1704cb60981db8f8801', - 's390x-unknown-linux-gnu-0.2.23': '55f8c2aa089f382645fce9eed3ee002f2cd48de4696568e7fd63105a02da568c', - 'x86_64-apple-darwin-0.2.23': '960d2ae6ec31bcf5da3f66083dedc527712115b97ee43eae903d74a43874fa72', - 'x86_64-pc-windows-msvc-0.2.23': '66f80537301c686a801b91468a43dbeb0881bd6d51857078c24f29e5dca8ecf1', - 'x86_64-unknown-linux-gnu-0.2.23': '4384db514959beb4de1dcdf7f1f2d5faf664f7180820b0e7a521ef2147e33d1d', - 'x86_64-unknown-linux-musl-0.2.23': 'c7b80246dad84eadf288c26128f6504fa27529f21091ccf7d5f9450fbc229dd4', - 'undefined-0.2.22': 'd390a2990caffab099f129a10b0393dab81a7043dbd93d514e05034368e052d5', - 'aarch64-apple-darwin-0.2.22': 'ed44fcb929f8cef958ed9e6de350d542f7392a43331d3605c4fcbf418e204c5c', - 'aarch64-unknown-linux-gnu-0.2.22': '2fa9b4647ac17dcc050abb8ed1547b8c87e3d914bde3e045b51ddc16946a4e57', - 'aarch64-unknown-linux-musl-0.2.22': '1855c439577523fd2a3e1afb19712fd80eb59d63c92fa29d24afb7f68c8ba88c', - 'arm-unknown-linux-musleabihf-0.2.22': 'bba9175deeb797714c629543276a98fb834c58d85d8edce47d28c90e2e600e07', - 'armv7-unknown-linux-gnueabihf-0.2.22': 'dcb1fcea336bf36bc5880c2ea29e1f32b10296f3b14ff6f3f2ffd8667a2146f7', - 'armv7-unknown-linux-musleabihf-0.2.22': 'de1a29702d5fc14be20b21e0ba7b513d84f4debe8c5ff49a66ae333060fdd767', - 'i686-pc-windows-msvc-0.2.22': 'aa5b36bdc88a16c92d5ca93c4a9325bb82eb875507d363ec28cb6e5ee694e8ed', - 'i686-unknown-linux-gnu-0.2.22': '00002ada635ce3f17a97a4eca7361eb6ac065db342540dc31e743920a723b92f', - 'i686-unknown-linux-musl-0.2.22': 'c98fd1af293fb19bdeac03320f83ff328b4575478ca30845f7172e9491c5bb05', - 'powerpc64-unknown-linux-gnu-0.2.22': '98dc7f3d818368190389aa008b5873df84a470c40c94f5f339655c50af0cdb89', - 'powerpc64le-unknown-linux-gnu-0.2.22': 'cb9096be1041b49b09b3f407059bab3a4b68219fc407f05dd441c58b40299c0a', - 'powerpc64le-unknown-linux-musl-0.2.22': '4c0d300931775be6069dd5fa095077a639e780b5c890885035df9fb3f4dcbbd7', - 's390x-unknown-linux-gnu-0.2.22': 'acdc4f3e01327209883e0578a077a69e46be0a0ce95f53c742d64ac753f93610', - 'x86_64-apple-darwin-0.2.22': 'cb03b461250b688e39b19feaa0853d842e5d4193e262c9d4db2d15faafc54dcc', - 'x86_64-pc-windows-msvc-0.2.22': '6ab3ed27e38e3a2c4a3a4880b87b8d607fa14589860aebbb1a34064d792d54ad', - 'x86_64-unknown-linux-gnu-0.2.22': '65cd2e2c3660779f8a1fb02eac488b540d1ae30f3a80a381f8a7859d0b76bf06', - 'x86_64-unknown-linux-musl-0.2.22': '8e165482df8590a620bea0411023c4c345f14301b733a9b6f6ca93e730947aba', - 'undefined-0.2.21': '29a224acdb53a5478e12260672547e3d84a14c972c64f3e154553ccd813f8400', - 'aarch64-apple-darwin-0.2.21': '5b3925fc797bc5e168b5883a5ba2ff6c5751a1c900748c132f01d1ee5c87d24e', - 'aarch64-unknown-linux-gnu-0.2.21': '77ff74dcda1e08d757632eee8c6aa3928d1e52dddb460056a0c7224c888d2956', - 'aarch64-unknown-linux-musl-0.2.21': '3ae6f0de1698b257052d5b1a05809a0f17db64fb6b1e80ffc64b659840105002', - 'arm-unknown-linux-musleabihf-0.2.21': 'af4467849e6815b89067b9133dead64d0c912b9d2645a80b0dad575c01ff4912', - 'armv7-unknown-linux-gnueabihf-0.2.21': 'ec15bee0208d23966a5ae6f2dfd07e38ca8656960a5caf26970d3a91f055e34b', - 'armv7-unknown-linux-musleabihf-0.2.21': '5671278eb619ee82615ab8e7be2251763d57d5b210d317d92c40d6bff0c6c418', - 'i686-pc-windows-msvc-0.2.21': '7740b290f6efdfc73d24977e4dc86be144865ca92ec106cb8e0b206f7b77b80f', - 'i686-unknown-linux-gnu-0.2.21': 'ec323eb0b67103da905e24de5c6ee4036da22068c439f098b93d4c206e6764b8', - 'i686-unknown-linux-musl-0.2.21': '118a1a3c0484a392ccf9388cd296bdbaa1e8b5479772efd69056ac99119c0aa5', - 'powerpc64-unknown-linux-gnu-0.2.21': '0fbf9a1b148b86511a0c167f3dc7e5fd228c784af0d3fe8d8c99e024ed2fa1d5', - 'powerpc64le-unknown-linux-gnu-0.2.21': 'ff49e7dbd25e98932b5207100916c1d6a6c624a620d37aabbc307bc97be53674', - 'powerpc64le-unknown-linux-musl-0.2.21': '29e32e5b7bb5facb8eddec8e9146f3b20074fa73dfd3555c985b79c10d3c55fd', - 's390x-unknown-linux-gnu-0.2.21': '897414d24d13a202a6f9a437408da64cb26e10bbbb5820571e0de2b4d540fa99', - 'x86_64-apple-darwin-0.2.21': '92eec02ae5ff8ef4b4070cf6ef787a2ee3bfc6ca910b61669a8615e2149d6595', - 'x86_64-pc-windows-msvc-0.2.21': 'bf4946c5a8751cc63def72aaa53a9a0c1ca015876b9ec144cc389ef4901dbc4a', - 'x86_64-unknown-linux-gnu-0.2.21': 'bb6ff8fa0ac1d86a32b1ef615ec52acb5c8230f803146ad4ceeaba8aaa26a787', - 'x86_64-unknown-linux-musl-0.2.21': '90b0903364aa45e588ac2b269d70e871180f81df0f7c603d6b17742fccc660b3', - 'undefined-0.2.20': 'f248835e7b801bfd0dd9e70716257604fa6760cdf92573ae6419dd35ce7a9058', - 'aarch64-apple-darwin-0.2.20': '519bd42c022a41187984234a040c3f00a3eb4bcb189f101c0fa48fe70b953357', - 'aarch64-unknown-linux-gnu-0.2.20': 'b97b67c7f65025729da8194f8b0e21ffbd91a1210fbbc89279dc46d5342a3e4d', - 'aarch64-unknown-linux-musl-0.2.20': 'bef8bdd253acc9a82269e5574ab4843b0d70a1935235805bb470eae3ceaa2fee', - 'arm-unknown-linux-musleabihf-0.2.20': '2caeadb57638fae11cab25094975201d3f8573fe6f752e628b89d61447f7abe4', - 'armv7-unknown-linux-gnueabihf-0.2.20': 'faa32b09015770fa5a72557a04236a7be61f06bbef77a6707c658be791adf039', - 'armv7-unknown-linux-musleabihf-0.2.20': 'ba1be06d8aec4b5247b5d09032f37fd4aa8f54acd07b05db18351d61a93e0cf5', - 'i686-pc-windows-msvc-0.2.20': 'c4430939e934ca8ba2b079138728a22600d32572fe315ac1811f8a40b062534d', - 'i686-unknown-linux-gnu-0.2.20': '6c8c4e58391c508eed5f8506257d421f3fe13464fc8672b5995bf6243d46fad5', - 'i686-unknown-linux-musl-0.2.20': '4a4f8a73f29362e40e9de94749f988e691665102ca2bd6501f39248735c40647', - 'powerpc64-unknown-linux-gnu-0.2.20': 'aa557c951623d746ea30b4ae107fc37ce7328196929d5cf38beecf2c1c60555b', - 'powerpc64le-unknown-linux-gnu-0.2.20': '1ef60183bf6de0c1da96fa027a8b3847da289222aa4bd5ac81255aa614e36fc7', - 'powerpc64le-unknown-linux-musl-0.2.20': '56c880df3b97d2a1c0ac6812ba174d4b7e1362fd256ce8b29f029adabfdaf28c', - 's390x-unknown-linux-gnu-0.2.20': '455863a0850d211aad8c94b61778b2c30cc7d5639ae0d5607549f1d56372f706', - 'x86_64-apple-darwin-0.2.20': '41018b406133a2ee5e51d8f35c990999c2bb96ce457864ac9883a0f9dcb49c58', - 'x86_64-pc-windows-msvc-0.2.20': '74d2f2c945da68a2aa8f0f277229f3b172c7aec1072cd990d866c25ecbe21410', - 'x86_64-unknown-linux-gnu-0.2.20': 'bafad50e1b8b8b89083df115cdbad6e991747fd6ecb52ca407d6b5533ddb150f', - 'x86_64-unknown-linux-musl-0.2.20': '1c27fd144912433d7f12b58b00eebb80a7ad9a1864b22b1ba41b07b5998a743b', - 'undefined-0.2.19': '9186f4961698b35b1812eef5dcd6973accb3eaa980a571c964f6f91ca71da5ff', - 'aarch64-apple-darwin-0.2.19': '539f2cb812f0596b3f56d41a92662f6e102094587ff07f0793bd015d21cda54b', - 'aarch64-unknown-linux-gnu-0.2.19': '7ba7454ceca1b789e74637b5cc8d1353d6a87ae3985dedd16869c036e3b4d02e', - 'aarch64-unknown-linux-musl-0.2.19': 'a9932edc68680dc388bf13cb21132f4d0aa13bf9c31c1c1f4febf1415ad51923', - 'arm-unknown-linux-musleabihf-0.2.19': '71dedaf8f40e3939b8ad493093584d03046c607cb7e7c155de7eb0c8e0da2830', - 'armv7-unknown-linux-gnueabihf-0.2.19': '17b44738383b1a5fe7ad592be61c543048022c09c649759c589a74a00fa3afb5', - 'armv7-unknown-linux-musleabihf-0.2.19': '6c287d699c95cffbb30520d27d7b80ce1971b336bd387f72391340acac434c86', - 'i686-pc-windows-msvc-0.2.19': '68977cc3fde46c61a80ea451651f3b6789ee2a8cb67a4e5fbfc7db93022d9e1a', - 'i686-unknown-linux-gnu-0.2.19': '5ed1da9e25968be4581ff301a9034e8e82f2206686f504734015c348b94333eb', - 'i686-unknown-linux-musl-0.2.19': '236c3fde87ee06c2b49372e184f2fca84f82ea3daa36e85ac884f7459b18ebf7', - 'powerpc64-unknown-linux-gnu-0.2.19': '9ecdf74c9846c271e78e300f1db8cf3762ace6d9ba1f2e9d6e695cc64fb2e746', - 'powerpc64le-unknown-linux-gnu-0.2.19': 'fc8bedb7f7b35905fd5e1180466593e2ad35788994f7d61c6605ff985bb61aff', - 'powerpc64le-unknown-linux-musl-0.2.19': 'a5d1f2b9686ed2466e9e588d8ada686130318015693ef1a7064651347063bd05', - 's390x-unknown-linux-gnu-0.2.19': '6b68ee8a45062e9a6d3be5de5c0fddf49f8669c2b2b897432f0a55e99fed57ea', - 'x86_64-apple-darwin-0.2.19': '1b8bd98a1ffb5823b499d914d8fc430b6bb96b3f97bedf06b67c60f084e366ca', - 'x86_64-pc-windows-msvc-0.2.19': 'b704c9c6e5e18e1c822e44f118902468df76245eca8831c5f8d4dd1223c0fbda', - 'x86_64-unknown-linux-gnu-0.2.19': '71132ec5c59ec865d73877f2f7f4ff75cd2f56a93d967c1a91ef797bdc87ff93', - 'x86_64-unknown-linux-musl-0.2.19': '6e8a64434d3baf03fd64f58016a9a37b08a8561db6979b807de8feb55d94502d', - 'undefined-0.2.18': '5919f79b42997129e5a456bb5910086d0043dda20e505d12f7f57f0a2669ae74', - 'aarch64-apple-darwin-0.2.18': '979ddc0aa7b068632bf4c517bbb6d97798b95c54dfeaca9ba653df91989ed958', - 'aarch64-unknown-linux-gnu-0.2.18': '5cc1535801398ad74e5fc8a5cf5a619d3e806b8b7de6b973b33c02b9b2584ffe', - 'aarch64-unknown-linux-musl-0.2.18': '473ae75c6e9ed1f63f0c0c556ac6ca4718457903c3652adf07c8d46655133e31', - 'arm-unknown-linux-musleabihf-0.2.18': '7fb75cfe47c50f9306eea91f1d713a0f76dacefc92b6a35271b7af90e024bac5', - 'armv7-unknown-linux-gnueabihf-0.2.18': 'c0ff7d440ccd43666d813da4dce5e90a1c6b90e3dfc951ed868a38c488ebff07', - 'armv7-unknown-linux-musleabihf-0.2.18': '1c99194b715b74f0bbab9ba2f350bcbdc4e101f056d81ce35f62736b951b212f', - 'i686-pc-windows-msvc-0.2.18': '554b9b65eee4f30b70ff2d3b1c2cee07600eef176c235d8639aacdca799610c4', - 'i686-unknown-linux-gnu-0.2.18': 'efd8fbe10f88622479611cac0ad18d7e5614a9335d655e64be8e30db6ea749cc', - 'i686-unknown-linux-musl-0.2.18': '9d991b27482edc0891c8aa2750e95aa4f8007f3af9746d90f0176462a2cb3a09', - 'powerpc64-unknown-linux-gnu-0.2.18': '0dde2eea6496139c10bad1e7e1d49d210bc47f294dde158db65f78eabcc363a1', - 'powerpc64le-unknown-linux-gnu-0.2.18': '4515b5741a0cd2596526f4504429bbd8e6122c384ffd9211023771aa042c6815', - 'powerpc64le-unknown-linux-musl-0.2.18': '48ce3450450a0314a6b7996f53145e273c3a2013c1771b56449c275d9260575b', - 's390x-unknown-linux-gnu-0.2.18': '4c3826eabcb81aeb187a3de95fa3e3f3c784fb71539be05ea56a963b3d97fe4d', - 'x86_64-apple-darwin-0.2.18': '140158512a43d8266fbbc550dad7ed3f27953d5bb5bc7a3e91e94ed3c1c1773e', - 'x86_64-pc-windows-msvc-0.2.18': '16dff877e19f61d094af35878a00b592302a1794c1c27afb1b194106931e9e59', - 'x86_64-unknown-linux-gnu-0.2.18': 'e5a0bde1e0fe57a7ea1d26bdb582c636ba742c3db8a10d0a965536da7004abd7', - 'x86_64-unknown-linux-musl-0.2.18': '4472cd12522d96566be88545f1520dc5099f12f47df297f54f9239fc1af0ed87', - 'undefined-0.2.17': '6bfe8c67c849a87271a47d6c54672b860a1b37fba5bdb2928f6b912719edac55', - 'aarch64-apple-darwin-0.2.17': '7dc5fe97867ac3bbcbeabf32fb76b3caaf12141b5e20926ed81353f9a2ff7dcb', - 'aarch64-unknown-linux-gnu-0.2.17': '5037a966a2422f40c63d36982d46f10362383c128ce1707a56b4339b44a50c94', - 'aarch64-unknown-linux-musl-0.2.17': '910edd0a8db6ff39baaad0f7f77b2ce74e0111b6b83a4439e2e02d5b82404e1d', - 'arm-unknown-linux-musleabihf-0.2.17': '6e72744e9cadf1649397acceb006f27c9cdce3dcc2876fb73a887d8914166791', - 'armv7-unknown-linux-gnueabihf-0.2.17': 'a5f18a5f739402e9c2a6b5a4dafe0ead37125bedc7c03a74a9a92e4682a0f49c', - 'armv7-unknown-linux-musleabihf-0.2.17': 'fcf11ba75a1d21c49d53474c51b612de1627fbb97c23bd7752d64d178740014e', - 'i686-pc-windows-msvc-0.2.17': 'ed5dc4a4341e7af3d92ef0649df6152b555b16e09c072c43f7f39b9d5bdce784', - 'i686-unknown-linux-gnu-0.2.17': 'd1d478429fdaeadd56ce280bd43460275bd131cd44f9878987d9d7a5caa4f398', - 'i686-unknown-linux-musl-0.2.17': '8fcafe168ae2eb4de6891c0d0d5c0c598af87b552d99d2c4d15deca824236cd2', - 'powerpc64-unknown-linux-gnu-0.2.17': 'b2601121c8df47bdb430da2bf85848b7e38ff5df1150d8ea980d8ab7b4f5551e', - 'powerpc64le-unknown-linux-gnu-0.2.17': '1f94aeda1cf36d401073ae21d9dc4acafed761d41074795f622ffa1fbd4a3677', - 'powerpc64le-unknown-linux-musl-0.2.17': 'a3599741a236d088cb418f446e491b661c042ebd9f23e15f6cadcfe2833a6609', - 's390x-unknown-linux-gnu-0.2.17': '4dccbee34457c45f4fb9df5760094d402db7642a3a5665ccbc271293dc19b746', - 'x86_64-apple-darwin-0.2.17': '78137a1b9d6fd1f8f5f0d4208829dd5f89b6505c314192c0fa2a35d6faff5e91', - 'x86_64-pc-windows-msvc-0.2.17': 'e77465f8a964cf0cbd932af506df6ca42ce288e6db4df312c53f27b05c7c09e5', - 'x86_64-unknown-linux-gnu-0.2.17': 'd49537780cd9cd5621bbc34e6864356487155cd4a7540035e1b0acb0d1017def', - 'x86_64-unknown-linux-musl-0.2.17': '20184a870ba25416b61d46c387853afd27d9a8df3f0598ee6878a315db5c7302', - 'undefined-0.2.16': 'f215cd4c173a71cfc2427b5cb3c42e321ade41350051a1ca7a9c898ed502ff2c', - 'aarch64-apple-darwin-0.2.16': '9a19728c43c35a2d5f97f2bf85b0dc7b508e1931738f0d95e2354f0f745196e1', - 'aarch64-unknown-linux-gnu-0.2.16': 'f50584835c2099d5dcfff4fe4292719871ea40661d6fb124f732c81b131ac2cf', - 'aarch64-unknown-linux-musl-0.2.16': '47af1d071daf655fea352a440f533f3ad7dfbdfc2314160ac14b31815d959c37', - 'arm-unknown-linux-musleabihf-0.2.16': '5ab0424e8c18776c809f0c1e7f6e925f7e478c36b2260b24f2694d1293e5f8c2', - 'armv7-unknown-linux-gnueabihf-0.2.16': '9d4a66d55c273ae5f265ee979899faa6636823b1dbaf4079085e108adfcb916c', - 'armv7-unknown-linux-musleabihf-0.2.16': '384ffae2d98a0f2211d1353eb66031710e452838349fdad115503b26a3dc01d1', - 'i686-pc-windows-msvc-0.2.16': '8b140cb56029585fb95685410f17eb866a4d6dae9d63de4fba14268e17730951', - 'i686-unknown-linux-gnu-0.2.16': '902439f172d22dde421681d54994fcc9bc66ac412baf1dab978fc061342bc4e3', - 'i686-unknown-linux-musl-0.2.16': '1e02d7e7e06dd44c1cd077bd645427af7f04901e685ba3fbcc2691d024906470', - 'powerpc64-unknown-linux-gnu-0.2.16': '68209030923b2276df8dbcec9ae3a0efd9f7166419018e7d282dcbbc5043e97d', - 'powerpc64le-unknown-linux-gnu-0.2.16': '9c0ef3b12fc81337612841f3d0588d60e5cd6f40ff533c546218c5f8f3b30935', - 'powerpc64le-unknown-linux-musl-0.2.16': 'd41c74bda5a383cd71667ad7d38a7a5af667a82fd83df997ebd0547a5050a5ee', - 's390x-unknown-linux-gnu-0.2.16': 'ca828149fa733859b4837b3aae69e253cd336d690ab6af6fca8726f5498d21f6', - 'x86_64-apple-darwin-0.2.16': '1457a592a56326ac67ca12db89f8cc175634d36bd17a2efa7b605a9f81edcb31', - 'x86_64-pc-windows-msvc-0.2.16': '0eceb9b4c9ec8049ac15455ee79100bdd2e9db2153977da7d9788ba792e1eaeb', - 'x86_64-unknown-linux-gnu-0.2.16': '0a6cebd98cda27fe3f49853a686ca050fbfef2da7871f6cf4065c5e9a7b2233d', - 'x86_64-unknown-linux-musl-0.2.16': 'e4efe763ad24e32b658e33b38cde271694f2fff7c2eb07cca5a267d600c1f718', - 'undefined-0.2.15': '902d06ac01ebd1ac7fcda81f514b04c6d79a1bafd70305b18e9b1d387cfc7025', - 'aarch64-apple-darwin-0.2.15': '7342fba0eeb0ea204eb4ec6311378e76d43bd237ad0576872aca3345914b024d', - 'aarch64-unknown-linux-gnu-0.2.15': '939998c380bb95b4fbc15bc00c43c1b1fc1fc30d02638aeca6113f02a99c608f', - 'aarch64-unknown-linux-musl-0.2.15': '3f5c7c25e4099854330b3a21bb9670d3cdcf3ec3c0eb9f8bee7e42c5098cc5a1', - 'arm-unknown-linux-musleabihf-0.2.15': '2b53a33e0f46f2c37f949d12d420f666e93f8286ed371a1bc5b1406899ab5ff3', - 'armv7-unknown-linux-gnueabihf-0.2.15': '1f8712bd2b6c11533d4defea1f2e7e3972b9db887ef26a4c33f452a8492891ea', - 'armv7-unknown-linux-musleabihf-0.2.15': '0bb582c399933b7affce3c9f5992a6aa7f7bf596fbd43e08623a08dff564fbc3', - 'i686-pc-windows-msvc-0.2.15': '339014778ebae1bfaf327217c137997ef272047626c857bd3fe84286af61a7a0', - 'i686-unknown-linux-gnu-0.2.15': '8c5e80b94a84ab14b91de827858c076b0501a85de40c7ba917070a929e914a18', - 'i686-unknown-linux-musl-0.2.15': '148fb4554317f84cb27e563707cff8acd35a5b3f668f27a45005e076833cd4ce', - 'powerpc64-unknown-linux-gnu-0.2.15': 'c533ec6526e7c338c79c38181c94b88b5d80c5a1ec8d7182a0aac3b6448caa46', - 'powerpc64le-unknown-linux-gnu-0.2.15': '681b607989c135d17215a3442fb0e6b11d5c5ea90973eacc6f3aaf2f7b1520d7', - 'powerpc64le-unknown-linux-musl-0.2.15': 'a39e8898c033b86e3432e177d9d6ee7da5f9ffcd1624b894bce92d6fdd58bf56', - 's390x-unknown-linux-gnu-0.2.15': '2fe5fe764afdb8e4f6f752f17400013af4c0ed60fbc91eabfe5b05483f30fb82', - 'x86_64-apple-darwin-0.2.15': 'dd7ff73cbab1c65b3f2d110bf025d0c74ca2aee3001e38e808d7b1816f49a6cd', - 'x86_64-pc-windows-msvc-0.2.15': 'c1ffecd50d417b3de667da0fee07b577abeffd5f9d6762501818252b3aa6c7a8', - 'x86_64-unknown-linux-gnu-0.2.15': 'f9c06177f2153336c3a96f9ab54d881126447cde1cb5d00ed771223427692e9c', - 'x86_64-unknown-linux-musl-0.2.15': '3151e375fdb6c73765a8cae5048790c52366cae4593e89365549587f24406837', - 'undefined-0.2.14': '528d2dc187720d6338c5dc84809f64633cd969262c5a0f6a2bc0bddffa1ff8c0', - 'aarch64-apple-darwin-0.2.14': '0a78382f3e93514d51257243313a420646a2316da47bc4bc194bb66ed2e50ee5', - 'aarch64-unknown-linux-gnu-0.2.14': '5461797a801f3752cab99b63b206dcf54de037283d93f03adba736179f099d31', - 'aarch64-unknown-linux-musl-0.2.14': '3b315856284f2d4c2a6e3b19fd6c5eae87334c37f1a7dfdaad3f696b976dae72', - 'arm-unknown-linux-musleabihf-0.2.14': '40b481cb4ad70be8afe62fdb62c6b4f4f90a6a3cc6061950f58e4d92b13e58b9', - 'armv7-unknown-linux-gnueabihf-0.2.14': 'bf7ceff49dd3ceb384316c6bd85b037a9b5c830074166f57d6ad6fc8b42fbb75', - 'armv7-unknown-linux-musleabihf-0.2.14': '3e246f87058d03d0879c0a2dc287aa352785fa8a37e166b6c322b7ad1e79fe49', - 'i686-pc-windows-msvc-0.2.14': '97d1cd6da0bbdfcda220167c0309b50ff294304d273d59a5b30076e31a8b9deb', - 'i686-unknown-linux-gnu-0.2.14': '7f41c2d76af64bb5fa790516a43d86dda8c03b1ba5b57f1b2db9cea7eb836a53', - 'i686-unknown-linux-musl-0.2.14': '28d924aaf00228b35d0219a4e0b87846bcc515c6575f3712733cdf614716e9ae', - 'powerpc64-unknown-linux-gnu-0.2.14': 'd20a64a746d24e49fc85d46064538fb2c84778131340abe345192c1d62c29357', - 'powerpc64le-unknown-linux-gnu-0.2.14': '1bc57215f96f156d784761c616de0a1c7d90aecf145c5f7e401add537db17106', - 'powerpc64le-unknown-linux-musl-0.2.14': '2fbb0995b0a34d3cc2a97e3a5c4aa0e8b6b3b52d432a082f566112eaae1c490c', - 's390x-unknown-linux-gnu-0.2.14': '8b025f335dc7066dae5646114b7fa0e9026a12a05b8909acccaf9c6348298d7b', - 'x86_64-apple-darwin-0.2.14': '402525d3a113fbdcc687ca408d42cb104ce18e8e030dc05b83381ca4f9ea76ec', - 'x86_64-pc-windows-msvc-0.2.14': 'a4c00d69418061c1566e758e85f3f6fc1532908453d03cd9f9aeba03d0bf640b', - 'x86_64-unknown-linux-gnu-0.2.14': '79b2582675bd93c7d632e71a667478a3b1eed101669944e64c848f7240ab4725', - 'x86_64-unknown-linux-musl-0.2.14': 'c0f760078a326b6f861d0eb4e9a04bccd0bdeed6cf72f284efa698e54ba83c77', - 'undefined-0.2.13': '9ae345ea16f8c61997d8434153a20a1e95ba11fc46013ac951c70d3fcb77c8ec', - 'aarch64-apple-darwin-0.2.13': 'f588388d2b13f77e4526e619f618a306b6b026a96975fbfb2c6dd1ded134cb72', - 'aarch64-unknown-linux-gnu-0.2.13': 'f342442088a56a8a5e4af6781501870bed1b388b37ac2e9deb250cd1d0dc1845', - 'aarch64-unknown-linux-musl-0.2.13': '56151690ccd6a12205478212dd16013d1969e3ef808a66f99809da850a49ed29', - 'arm-unknown-linux-musleabihf-0.2.13': 'ef70483125e00033ed6bd5f9b0c4cfd377db54897284cd7d1d25e2ca6224312a', - 'armv7-unknown-linux-gnueabihf-0.2.13': '20f96f8a6b2dee8a6013bc12b243b718027e5a34c9fceb4baef7e85e530f9da8', - 'armv7-unknown-linux-musleabihf-0.2.13': '59b50354236a4a3919ecf9619bb5791936724351e6d1f96a18969d0e5df2dc51', - 'i686-pc-windows-msvc-0.2.13': '644e97188d6f4d96e0b149992958c20cce928ad0f4ab4800e0fed70ae16198ef', - 'i686-unknown-linux-gnu-0.2.13': 'aa94cec4368c615297aa4d81ab81c9034b4a40d66c75854002f0e26857e659a5', - 'i686-unknown-linux-musl-0.2.13': '152cabfaf4c433d6904c5f68c2771b0c5ad207e356ef96867680faeb9bba0c8d', - 'powerpc64-unknown-linux-gnu-0.2.13': '7f6bcf0354c87993bdcb76ca0ce3b6211703d19f08bef2cd3306b75cda6ff8ad', - 'powerpc64le-unknown-linux-gnu-0.2.13': '0f38a41264be0ef325f8d438f34ea95c002736b3c092e3276518a2253c4ff923', - 'powerpc64le-unknown-linux-musl-0.2.13': '081e0c31a971c3755108a6c70c90fb68a2b0829f995665aa5df1002eaa4945ec', - 's390x-unknown-linux-gnu-0.2.13': 'dc843c32e51ee3fb46381699bffbc4b6040c51083a1dc7d6c597582b84956aa7', - 'x86_64-apple-darwin-0.2.13': '6262eba42ebb9035a574b74c5ea253a41353fb4b6b264600e3b05b1a7f4cabc0', - 'x86_64-pc-windows-msvc-0.2.13': '898ce45b3767ea97429426a7bd0ec54d070eb9e29ff2b072bdcf288bf6ddc9a1', - 'x86_64-unknown-linux-gnu-0.2.13': '3f96048fa1b82eca14d45bbcc86714cd0dee19a73ef9311da6707faa308ec25f', - 'x86_64-unknown-linux-musl-0.2.13': '2121a2184aaa0e4c7ef599358dc2bfd20e5a07a1373c302b6fedf79f2ba0778d', - 'undefined-0.2.12': '322c672b515d240ae4a588dbf18086f0b5cdbc288335668c32cb6554cb3551bb', - 'aarch64-apple-darwin-0.2.12': 'cd9ca2c17a32f08dc03a6430fb99c16cb2eec1350a4857292df6a600d71a1467', - 'aarch64-unknown-linux-gnu-0.2.12': '8e57c9baf43f80a4b0eca7d5fd0de9152b99ec22809ecfd8350ab4317ae1d629', - 'aarch64-unknown-linux-musl-0.2.12': '74981df43332e9ca6abd2855d73e0d1f5565d3f724c60f4a67bf0c09d84902a9', - 'arm-unknown-linux-musleabihf-0.2.12': '50c8f8178978679455da0b14e5b03039001c39270d8fd1e51dde9addd45f3cb6', - 'armv7-unknown-linux-gnueabihf-0.2.12': 'cdcda5bef68ecb96c593a1389349b19d6a52a2c235308e6aaade522f67def730', - 'armv7-unknown-linux-musleabihf-0.2.12': 'b1c55e5e3b1cd5310318572d5243d7ba725c413e0a20d6a77987ea00dcfafbe4', - 'i686-pc-windows-msvc-0.2.12': '4bd4c4fbe449799d0ffd179b6432712c4843d1b802ea79b582989d3cd9eda6e8', - 'i686-unknown-linux-gnu-0.2.12': '301351fa77cf03bb0584c45deb36f0049223f404250ba31d69ebdf689ffae9cb', - 'i686-unknown-linux-musl-0.2.12': '379de8132478143542aeac0a4b4310eb2ed172927561ec9cdf11cda2ccd87a2b', - 'powerpc64-unknown-linux-gnu-0.2.12': '9dd50c32d2c3a41a43e5f08fb34cdf829bba0d2222abffcd20429f2dd19cc6a4', - 'powerpc64le-unknown-linux-gnu-0.2.12': '53b30539dcb80d074e8d33eae582745a155ff0c3291d816c0596332a980e6389', - 'powerpc64le-unknown-linux-musl-0.2.12': '9d9af6a119f15cec26e90e18dbdbf004a8ddfe9078e1877bb43a7ba87172150b', - 's390x-unknown-linux-gnu-0.2.12': 'df8a4b496f5307a27c4a8b90e356d4b508b3aab24ddfc5904f7ec53bc3bc5cb8', - 'x86_64-apple-darwin-0.2.12': '71f6c77cf22b8cdd04aa561fe4bd1da8720351359a7c04740bce6a68fdf582a4', - 'x86_64-pc-windows-msvc-0.2.12': '5a1b374ac29e1b65ca581573f175ec3c8071cd09eb73f127d9081d37a0ac21cc', - 'x86_64-unknown-linux-gnu-0.2.12': '7a0c67d32844afadd2d964d9d6ecb769a56e122e1423efce53e7554a33fb5c6f', - 'x86_64-unknown-linux-musl-0.2.12': 'a617fdeb285e0dbb13a0f37f802b80be1fe5272a44f752d62d1425ea56428170', - 'undefined-0.2.11': '75555dfd78bfd30f0b32e7515413319920bd1fcc88c4130c4fe02516dbd2bc58', - 'aarch64-apple-darwin-0.2.11': 'abcc9dd4234623defca3ee8c1b36d2b3662d5fd12c90727e1111b8e1592fb9ba', - 'aarch64-unknown-linux-gnu-0.2.11': 'ccdf23e44d3479ffe61bb68b61af5a014bcb76397f19b2a85587f55a6cc7a98e', - 'aarch64-unknown-linux-musl-0.2.11': 'f4f5b8f496d655206a4bfd28c54192a225da1274d04fa3ff6ff74df1e756c400', - 'arm-unknown-linux-musleabihf-0.2.11': '2579a68e7e434f0c47d3af460bf6c0570759761dcf1fa834f2df87abcfa0ee18', - 'armv7-unknown-linux-gnueabihf-0.2.11': 'f76c811a073bd0feea69555270fd0437e7b4c085d604a3949d2dd98b418b1597', - 'armv7-unknown-linux-musleabihf-0.2.11': '45463088ca59aadb7cd0343f98e1892198799e24b19873c8885433d72673c6c3', - 'i686-pc-windows-msvc-0.2.11': 'fb7e8b6647fca55e627a2df40c811e2d1af8a5f9bd802122b5b93edcbb605aaf', - 'i686-unknown-linux-gnu-0.2.11': '13e7682d48e802c16e41ca97c0b137eed9302caff943464f9ef43dc1de2dc8e8', - 'i686-unknown-linux-musl-0.2.11': '64f849ed7de03cd4ae08759224a3065677a4164f42318c8e6c883f28c443e698', - 'powerpc64-unknown-linux-gnu-0.2.11': '5cf33f99dc3318989c8e14697677ee5bb9029c38c60b44c69e9f58d8e8cd8417', - 'powerpc64le-unknown-linux-gnu-0.2.11': '70a3c979624bc22307708d84ef9dda1739672606804b68badd6a01b88ec5d4e9', - 'powerpc64le-unknown-linux-musl-0.2.11': 'a3ec1fdfbe0551d9ddd522eec0040a13eabeb8081d8114a8bbe3ea6b1efc5df5', - 's390x-unknown-linux-gnu-0.2.11': '57ac8fcb1880cda4551bad47065e434ed020b6b2a401fb655861813bec1de223', - 'x86_64-apple-darwin-0.2.11': 'b0c3cf377363bb0bc0917bcf8efa08590e3ec86a3713debb51b0a5efe7a48e9a', - 'x86_64-pc-windows-msvc-0.2.11': '07ee4e64fe871de647f0580348f317475906162398604b96bd5c52d99fd2778a', - 'x86_64-unknown-linux-gnu-0.2.11': '4a6188b172cb8d43e59c91dad8cdc4418ed0b395b09e4198ba4661cbcdbb40eb', - 'x86_64-unknown-linux-musl-0.2.11': '063afd8753870e147cf5d7c6273748d585f758d43d8df4bc04121667b7d5a6fe', - 'undefined-0.2.10': 'faf7b657b53a31d8d47cca58b33379d14f4701165a1867e61039a961274a45ff', - 'aarch64-apple-darwin-0.2.10': 'a099cd4dc28f879e023ce221697e07a2089b12dc42099dd240a2e64d5cf428be', - 'aarch64-unknown-linux-musl-0.2.10': 'fffdf595dd2a231b372b685a2e25589bd8d537fea252b28678565f01e5b8bddc', - 'arm-unknown-linux-musleabihf-0.2.10': 'c1ccd50c4f3a18dcdd46d44d285313a84a9a2b36e8a676e4935e339362794489', - 'armv7-unknown-linux-gnueabihf-0.2.10': '38c30fa3c5e3c97db50396609619c17741c860c36e13ee210e387c94c59ce1ff', - 'armv7-unknown-linux-musleabihf-0.2.10': '36b38e5124202686aa79ee7d872419746aa3675e34fa7782be489fe310cd4440', - 'i686-pc-windows-msvc-0.2.10': 'e4130ec5fd7af4d52ecf39144a15ff7926e7994a14a1c2e75f66d8c352f74bda', - 'i686-unknown-linux-gnu-0.2.10': '0ceaf9b11a1173497e96c5f74b2d13a8cecd9d794eb4096b8eb21537aefc0a6f', - 'i686-unknown-linux-musl-0.2.10': '078a21bfdd32363b989e28903d37d9a3114e5ec76683339abedaaebe2b78e57c', - 'powerpc64-unknown-linux-gnu-0.2.10': '5ea1aa731bfafe544b754daf06b987d50a569944ffebb856512bf016ae747b68', - 'powerpc64le-unknown-linux-gnu-0.2.10': 'd9122acabde5b4bca92fecb83abdb4eb9e2310b8985ea0c02028d6605dcb7d9f', - 'powerpc64le-unknown-linux-musl-0.2.10': 'cba75fdad8751c443db162af15a0ba730ceda6f0a32d58d0f794be906e518a69', - 's390x-unknown-linux-gnu-0.2.10': 'eac781c177f900b3175e24b38da8d20d2a985e7e1b7cb8a2506a663ba930ae94', - 'x86_64-apple-darwin-0.2.10': 'd81a89883ea4ed47a115f4b4947cfe20db26b91d28a08287554eb594efc20cab', - 'x86_64-pc-windows-msvc-0.2.10': 'f1df811e31940bb50c7f07a1e94eea0b7e3344f0e5ebed9e57a61f7c7857deef', - 'x86_64-unknown-linux-gnu-0.2.10': '99b25a80e170fde54b299c05f4c071c7130ed85db45fe8e7663cef44f09aac5f', - 'x86_64-unknown-linux-musl-0.2.10': '5ab4daa64daad2fc53624c1e88dca7166424526713e6fcbe8e34e80f23ee612d', - 'undefined-0.2.9': 'd1c2b96c86aa8f928d8f49c3addcbab35bc6c1a6609ae7ed64bfccc3135ec448', - 'aarch64-apple-darwin-0.2.9': 'ebcbfb397dc045356e1b758176b83fe192bf6cede3ac307e30e6934c54ef45a5', - 'aarch64-unknown-linux-musl-0.2.9': 'b8d055a0279c52021238a92e41bd6076813fac3ae77f4a3235b8aa4e2d398c0a', - 'arm-unknown-linux-musleabihf-0.2.9': 'f21a687de862282ed42f8f515a9221ef2d4b4e831a634c83837eba5ade3bed35', - 'armv7-unknown-linux-gnueabihf-0.2.9': '9c43a432b9e02b126e2a1e42262b8ecc7d5715e9183c0fdccfdb6a98911067ae', - 'armv7-unknown-linux-musleabihf-0.2.9': 'fa57fc9740b58b7db4cecbbb3e93a92f73dd30267965097504736ea6982e67b0', - 'i686-pc-windows-msvc-0.2.9': 'c68cbadfe1242f8f47469481773b9b7ec09b0b1bfa99cd545a170a3c4a3d294a', - 'i686-unknown-linux-gnu-0.2.9': '530a4070e2fe5733a0f1ea262033e83638f283fd80fccf81c0e445a68bf47f60', - 'i686-unknown-linux-musl-0.2.9': '68410fd939715734af7d0d7f2a770cb786996604af688f260db94e17f2aeb8e9', - 'powerpc64-unknown-linux-gnu-0.2.9': '04c59c34f3895e9484f40c05fe6fdd2bb1e17a919d4b9cdfd99633a2f52d2ef6', - 'powerpc64le-unknown-linux-gnu-0.2.9': '15a1902193c2654031fd7fafc416f434c36524d86a827e085b35580f83ced93a', - 'powerpc64le-unknown-linux-musl-0.2.9': '9c1ae1bbb60b334d3249e4fbfb6ee2c3b52854764a3e4f6e6a612c4b96542826', - 's390x-unknown-linux-gnu-0.2.9': '444f7bc74488219e6157136638696fdf6bad37f3090e324e6e843318ff09abb6', - 'x86_64-apple-darwin-0.2.9': '30f22cbe600b657cf6e987a05740194c2f1822f394b1c60e15621989b28b6591', - 'x86_64-pc-windows-msvc-0.2.9': '32057b35feb2dbdb8de32bda75c8621a00f2aa619cfcc6d4cb5506b3b6ba6d63', - 'x86_64-unknown-linux-gnu-0.2.9': '83438964a0be35ddded2099ea64599706e7c7a7de575429ce4df78e20d57774d', - 'x86_64-unknown-linux-musl-0.2.9': '28e583284cdbbd5e3796c4db2c94997f805b5c632d73dcd9a25ddb3dfa9453b7', - 'undefined-0.2.8': 'dad41d5189d272b0cca9a87b3bb16c7a74241b9051ebf2b6fd5e94a0659a35fb', - 'aarch64-apple-darwin-0.2.8': 'ce64cb16c5e0dd567ba926926a67c569d9138c5162685ed5a40639b2c9163275', - 'aarch64-unknown-linux-musl-0.2.8': '8f4bc88fbb7c498224122047f3f559b93e145753032d59782037ccf2969360b0', - 'arm-unknown-linux-musleabihf-0.2.8': '095db570c8c5d0b8033d605984d2a0513585232b6c44f0255365c1bc016a12c6', - 'armv7-unknown-linux-gnueabihf-0.2.8': 'c88b3f63ea7b3727500545edf0a6c1581a34ab5328fa2503e7c40911dce9e26d', - 'armv7-unknown-linux-musleabihf-0.2.8': '0063e160561a5928d73a8d89714aff77c51adbb62f4f1f4f0f438d7d3a03b4ec', - 'i686-pc-windows-msvc-0.2.8': 'dd3bcf604e2538625affbcda1e4e61ef1b27aa4515081ac13afaba92ed7ded02', - 'i686-unknown-linux-gnu-0.2.8': '7643a101a02befca1cc3a5c830fc51a157f54bee2afc1eb098686972a9079810', - 'i686-unknown-linux-musl-0.2.8': '71a792c953f782efb1648170abef72ce4ac0ca4dafa101719d87798dca5e7833', - 'powerpc64-unknown-linux-gnu-0.2.8': 'fa4afad36eb706bebea001d335aeab753b164ac6870267a6f6dc1f7dd70c03db', - 'powerpc64le-unknown-linux-gnu-0.2.8': '43bf0cd00751c0332c9016c7b30dd2a6c753f0922dc5a1ccaba45e8b6afa4621', - 'powerpc64le-unknown-linux-musl-0.2.8': 'a0f15bd3e80e8b97affda7d24e2143c7dd99fcb7c8c8e948bad849d4a3658e52', - 's390x-unknown-linux-gnu-0.2.8': '106264c325eeeb17e7d8ec5f1b30a31129d4ebe2c97f54dc88fde16be7177a11', - 'x86_64-apple-darwin-0.2.8': '8eafabb094127b35d472e8219047d4596652a9a645189f829f6bdb1b4786f282', - 'x86_64-pc-windows-msvc-0.2.8': '1ee50b71511cf7007b07843562fc2467dee81cb8baf488e8cc0ea0b58ee12ebc', - 'x86_64-unknown-linux-gnu-0.2.8': 'ce9f8fca5faef55af4fb83343143bb403ecef518f9118e97a37ccfbf1ccadfc3', - 'x86_64-unknown-linux-musl-0.2.8': '6f155b9b9d2b1baba811bd0c1aba0306a39ac547dd6eeb3906f692d3cec86984', - 'undefined-0.2.7': 'dafefc3926d85052bd3dc07e28ebd8ecde0ae575bbf80b5c5bab80fdc3a3ba84', - 'aarch64-apple-darwin-0.2.7': 'b9a0e6c501afbc4b47f07a199927d0783857013736c1c8c2d173201175139e45', - 'aarch64-unknown-linux-musl-0.2.7': '40e4fba3abcc76d5f69dc420cbc457ccc7bd7003a07e6caa0a2a8a803b339e31', - 'arm-unknown-linux-musleabihf-0.2.7': '5ec601accbc0b3a3cae4c8223dae977c4233313a246888ee5bf2adf381e07910', - 'armv7-unknown-linux-gnueabihf-0.2.7': 'a960192da71ba05438d1ab3632ee5a22c8b02dea087f9c054c224803870c9571', - 'armv7-unknown-linux-musleabihf-0.2.7': '62bd71eb14a9e6149e7277a7cc3f5ab61e291a861d2cb252544353972183427e', - 'i686-pc-windows-msvc-0.2.7': '51144d9d46629f0c260988ff486fe1720ad049fce7cbea201fa861752172d26f', - 'i686-unknown-linux-gnu-0.2.7': 'f35314685a233ee0b769cbac99d552f2feb21dcdf5f24bbf069b34dc5a26edf0', - 'i686-unknown-linux-musl-0.2.7': '41afe171469eb811b50fbc6f45c97db842019f3c8707fbf992335eecd78125d6', - 'powerpc64-unknown-linux-gnu-0.2.7': 'd84c24bc570589cbf61b35bff7b3b2b7a56fdcd5ba64f53602a0ab8009e07bd7', - 'powerpc64le-unknown-linux-gnu-0.2.7': 'f9ed8c319e5dc5920f5cc4455e088ac7768a858bed95eecec330f1e99e47d903', - 'powerpc64le-unknown-linux-musl-0.2.7': '8fbc6d52c63680cc6857b55cf8f025740a807a58c59ccadba87300f7103e0551', - 's390x-unknown-linux-gnu-0.2.7': 'e1d74dce851c3ef82e347221b36247f649d12e5bdfba5c91b211caee7de004b9', - 'x86_64-apple-darwin-0.2.7': 'fa3f52a05222d4cefba742e2db029f85c41b7e539c1f748b2583be42b806de91', - 'x86_64-pc-windows-msvc-0.2.7': '5a9b7053ae9d25cd28abdd8fb10a8c5353dc0212594013216da5905eb7515360', - 'x86_64-unknown-linux-gnu-0.2.7': '080bedb35224afca73cb424629e3512b529398f96353c4cdf59fe6cdceac5034', - 'x86_64-unknown-linux-musl-0.2.7': 'ebc3de0f88e8cdc211fa914124f201b91037c0ba5f30f2614e630295a147c833', - 'undefined-0.2.6': 'c822fc118367829825775874c19d14bb9415804a2c5efa6dfbb302b1fb18ae0e', - 'aarch64-apple-darwin-0.2.6': 'f985057f3ef9a101ca4d485337f8b5800d894277f4dbbda50dfef5e0e1d352e4', - 'aarch64-unknown-linux-musl-0.2.6': '41606b5c24e40ae2bcf71d9f8fc28b1f3e1399950ee324aa9925621d5bf1bc0e', - 'arm-unknown-linux-musleabihf-0.2.6': '854f619dfcc52b26e89189b8c8fce3a5041bdd1408cd867d87c9e4751caff6de', - 'armv7-unknown-linux-gnueabihf-0.2.6': 'f1194ec0b18cda58537698c5b417f9464d8258334d69049fc32c40c3b8dd173c', - 'armv7-unknown-linux-musleabihf-0.2.6': '5ec8d44a6ef6c732a91463a2c4f6817a71efa0838db6924e2bc889a48118f493', - 'i686-pc-windows-msvc-0.2.6': 'abff721157dcf759582735e4c9b366cbde1487d6d8a7d1fb50e1a20fd37d6b4e', - 'i686-unknown-linux-gnu-0.2.6': 'e1868d5f0e345d454a8895b09d2e62dd1886bdf01cbeb6d494be9e24a2717b1f', - 'i686-unknown-linux-musl-0.2.6': 'abd36ef7319182876fa2bde268f378cf3351036158c6ca9e45996b58f4e54ef6', - 'powerpc64-unknown-linux-gnu-0.2.6': '55b6480dcea50327c20b835fe81a30d685224c5022cabadf364b59a258967e8b', - 'powerpc64le-unknown-linux-gnu-0.2.6': 'e8de807c6b42e602b8aa05885627225a33b65d4155c514b58b7bc853d02b792e', - 'powerpc64le-unknown-linux-musl-0.2.6': '6ddc687f19bbb1f9279cf36d3ac05d8ccb7bde1c7b19f1787cd5ac427943fd17', - 's390x-unknown-linux-gnu-0.2.6': 'f596c5420cfc7eb608cc7c560d57047985ff1882d2e95c681e42ce85213adb3e', - 'x86_64-apple-darwin-0.2.6': '8e3a83165f751174041fbe0063cc063f4206270c0a187b55941f52e8a9f132cb', - 'x86_64-pc-windows-msvc-0.2.6': 'b359026e348df4e3cc12fc8411992ade3fc5bb5debe334669515383681088a18', - 'x86_64-unknown-linux-gnu-0.2.6': '02c7803b6209a80cdc8a4867a02ca6cb6a622f0d83f5276770a8d5636a89a396', - 'x86_64-unknown-linux-musl-0.2.6': '5efba2047b1e72dbecd64e707d0063f6dc49c22f8ba467480e665534c5f6a17d', - 'undefined-0.2.5': '798f49225017610715474781467463a0dc48be1708973b0001e547c98c7c5f58', - 'aarch64-apple-darwin-0.2.5': 'a827cb84658d321de0a029b7207b99fa6e20b99f0c1ab8d24484497b3b87c0e2', - 'aarch64-unknown-linux-musl-0.2.5': 'f465b75f0129bfb1e47902a14731460aec5cc71d9586a19ad19a644fd2fa7a5e', - 'arm-unknown-linux-musleabihf-0.2.5': 'd630b4b3716d4c4da9118d2d5c083e2fe6b7c769dcae39d4c8546ee3709aa0bb', - 'armv7-unknown-linux-gnueabihf-0.2.5': '3341aa26179eb68f6b6c7bcdf44a0c3f5dbea3f43905920f4c018410fb3d46eb', - 'armv7-unknown-linux-musleabihf-0.2.5': '8be8dacd13b0ea18720b818e536bd80d83ac30eba4d37e8913aeaecf9e2feeb7', - 'i686-pc-windows-msvc-0.2.5': '13cb20dcf23792bc7ad8d73c2e4f003702606f6e9821c1ac8eaf089f6e98f57f', - 'i686-unknown-linux-gnu-0.2.5': '8432f9d68840fe56a21a8542681045447dcab18b75f43a073bc28c4d5c1b8157', - 'i686-unknown-linux-musl-0.2.5': '52540ed8ddf78ec80db95cf54618e6e4fd4cdceab860cbea9a8fafa957c98983', - 'powerpc64-unknown-linux-gnu-0.2.5': '0a4891a6e8fe2ccd4c17196fad8215fe6611d74a89a7b2569d3fca3546103300', - 'powerpc64le-unknown-linux-gnu-0.2.5': '8717ac07d0684b618f112bfb9a7926490511cecebeed8f125b25f4969dba663b', - 'powerpc64le-unknown-linux-musl-0.2.5': 'c9811d9a90b3babf6c384d0a10d38f38e5109b604dcc68564f2c1216a3afb21f', - 's390x-unknown-linux-gnu-0.2.5': '70bbb790f817b1e0d930bea18bfa688d8177362aee8a49b83f1fe88d9123f86d', - 'x86_64-apple-darwin-0.2.5': '8e5808450482b5533c6b33096952b0cfca0a7020d7524c0132616926a9f58878', - 'x86_64-pc-windows-msvc-0.2.5': 'bd6c8e30fad5bb2207c2f7248c375034a9becc3ce905bd94322f9d70e9cc6b20', - 'x86_64-unknown-linux-gnu-0.2.5': '5eb13622b4450b3756f2395c261315562c48f405208cd1a160fe47e43fc85da1', - 'x86_64-unknown-linux-musl-0.2.5': 'dc591b1322d0ad2d3561c6d18657c5c5c34ff9addaa588645a062cd60d14f0dd', - 'undefined-0.2.4': '073532db6eaf44da32d9a9536f6c48f1c8d450340969234a1b6ac322811758d4', - 'aarch64-apple-darwin-0.2.4': '2edcd05f37e6f1c44aba1388086768dbc53777473c354feef3033fcb5cc3434a', - 'aarch64-unknown-linux-musl-0.2.4': '8bec0692741573c6f150321cdb9be14b1dd22f91fbdb1a87c9b94a184a6ef753', - 'arm-unknown-linux-musleabihf-0.2.4': 'c86f3a90d91fbe659708928493a69e35b1a79b2b4bf47d5941a5230ed9412462', - 'armv7-unknown-linux-gnueabihf-0.2.4': '59e781c25a16e667b57f76b8b99bfc31b85ca94811ddd95c549045928f80c3cb', - 'armv7-unknown-linux-musleabihf-0.2.4': '5a89f32071ace6e5d0501fdf7fe787f2739f89df862dfe1d1d48eaef09abc0ae', - 'i686-pc-windows-msvc-0.2.4': '4e6255288f9041070bb0736b4626ddbe9b8933ff5e067224584c9ca14867902f', - 'i686-unknown-linux-gnu-0.2.4': '7f78cc0b7f0316500539f8c9e4f4077c2a94d015673c1aa6ac9402dc8f35ebd4', - 'i686-unknown-linux-musl-0.2.4': '97df66100411c14f30639b8cb97b42365422f462e0a5d1acc0770f1d468cf258', - 'powerpc64-unknown-linux-gnu-0.2.4': '52b2c0dde7367c0424363092f276dc07d4fafa7a5696fc34849975717c53b5f0', - 'powerpc64le-unknown-linux-gnu-0.2.4': '14c765959084196deba0e4f858fec071b03fd70ec9176e7414e7cee88d6d8e0d', - 'powerpc64le-unknown-linux-musl-0.2.4': '118d70b310f2a4029bf15146d5e574c8b987144b13e235b76bb909654bbf8881', - 's390x-unknown-linux-gnu-0.2.4': '175c5c05689bb332f74927c4001d1a72866bcf8f5b7fd4f2ac766eb30119882b', - 'x86_64-apple-darwin-0.2.4': 'a5bd83234920728797fc523e2aa3605c45c7c3ca760e611c4071943cf109e58d', - 'x86_64-pc-windows-msvc-0.2.4': '60599a616c7ea04b2c6a4baac30de0b70e3d934795b672eef73298fdf187656a', - 'x86_64-unknown-linux-gnu-0.2.4': '2c470b016f749063080fefc5dd19176bd25b9761033df9df7b5ab914eba1a8e5', - 'x86_64-unknown-linux-musl-0.2.4': 'd795a27ccc2a47e8939b02296780c58377342ca35b51a518e36fa6b62291eabc', - 'undefined-0.2.3': 'aa6349670507cf6ce80d832d488391b82b48a9f4511c868886758349d62664de', - 'aarch64-apple-darwin-0.2.3': '20e466f87ebeda26da0fff5306ad998375fe1e27d2514e4b4f5711f9fad6bcee', - 'aarch64-unknown-linux-musl-0.2.3': '8574f4d4c56b87eb0e9041f984d8e79d98c53d2183533c2196f8a6dd16944929', - 'arm-unknown-linux-musleabihf-0.2.3': '092dd369d4336989dffc7114006c069c851a0a09b463e0522e06704fe002d149', - 'armv7-unknown-linux-gnueabihf-0.2.3': 'cf2925523919708024d7a99a24318faa252a5fd1264e19aad936295ba65ab97e', - 'armv7-unknown-linux-musleabihf-0.2.3': '04512d5e3d68a6b4f8bcaa8e94d0e196ca0f525a387c45272d3efbcf87ad846e', - 'i686-pc-windows-msvc-0.2.3': '4f9c95a4f10ca3a35ef3d7c84b02ee473826ca3089c0e701c84efaf9bc5dd1dc', - 'i686-unknown-linux-gnu-0.2.3': '1e9a60953f4c7910bc2a28e1b131cad975c4e0b8e4c1616a2c494160badfd330', - 'i686-unknown-linux-musl-0.2.3': 'fc5e7a35c7b229eb8be9c38901ffd29ecdbc7bcf4a54cca21c477f8d10f8cdb0', - 'powerpc64-unknown-linux-gnu-0.2.3': '079dd937d5c71ae1ec72ed47a3d78afbe73a1281094f4fb49884758752d28f06', - 'powerpc64le-unknown-linux-gnu-0.2.3': 'a6ceeeae7a98c410b97d72a26a6ce5d53115c4883672008a5c614fdf3519e18e', - 'powerpc64le-unknown-linux-musl-0.2.3': 'c093aad7e88ce3edd7a971b6921e3365c017cebdda704366249db13b143d8cb0', - 's390x-unknown-linux-gnu-0.2.3': '0f817aac0d53f0d362b23399d49c5c113c9cd1a7c60cc0d1677dd4306d3c2858', - 'x86_64-apple-darwin-0.2.3': '79c28e2121d4299a2190ab0c8f149d676a6d623a4396c86cda947a9280f494a8', - 'x86_64-pc-windows-msvc-0.2.3': 'c02509cee8e75ac1e17ea0101c4e0d624a8e4e033eb74d3fd50d7f06d30ff949', - 'x86_64-unknown-linux-gnu-0.2.3': 'd94b9f679b3718ed0f62eee1126f02f1552301b7dc473a7dc3727f20b889e057', - 'x86_64-unknown-linux-musl-0.2.3': '872113d59455f86700d23b4589bd2767491fb7ee4e21c0a62a9f2555c631045b', - 'undefined-0.2.2': 'e7ca19e90cc640ac96756b52cdae640d03e427fbce92643a00883cc530487ffd', - 'aarch64-apple-darwin-0.2.2': '4533c5a3f81f64dbcf9fd154cfa5e1cf904e4d9698eca63ec6a209f554a0beb9', - 'aarch64-unknown-linux-gnu-0.2.2': 'fa01c8584e6dbea991e9f14e50ad33e51c1a321cabedae738075fe58ee5a3ab7', - 'aarch64-unknown-linux-musl-0.2.2': '2f004af91dc4e5e18074724e3f6ddf074026e264a2ecd27fad067d152e739893', - 'arm-unknown-linux-musleabihf-0.2.2': '3d6038f9d043209c9b135743e766ea11ddd26d25721a21b2494d72233f470090', - 'armv7-unknown-linux-gnueabihf-0.2.2': '2e680d9b99deae3939da2d5bab5997e12713a2991a326a412c117c3471d41d32', - 'armv7-unknown-linux-musleabihf-0.2.2': '9363ea6707d8451b78980cc2a4baef357d9f86ed2e1bc877f68140c5ec47aa3f', - 'i686-pc-windows-msvc-0.2.2': 'e3c321c02572db320f1f6555da93fa0a2550cee84be49df8890f45dba49cc31c', - 'i686-unknown-linux-gnu-0.2.2': 'e81b97d0dc2756b7ca632d1344d9dcdf0dd3d127f1c4b134c338a05b28454e8a', - 'i686-unknown-linux-musl-0.2.2': '54d79ac9d9f04637176f1eca20917c27993f1cc5040e9f73d2672ba5f414d044', - 'powerpc64-unknown-linux-gnu-0.2.2': '9811a9021a302229a487bb717f643d96c2746691773c552f0c43294b0935a78b', - 'powerpc64le-unknown-linux-gnu-0.2.2': '386bb032c291e0f2c24fa6866588e632eeb999ebac6ab20ce7aaee97f046ba4b', - 'powerpc64le-unknown-linux-musl-0.2.2': '28540d8ca31c5d7568bfb361d7a28a0b5f20ef9f08086d5cc70fda07ad9fb250', - 's390x-unknown-linux-gnu-0.2.2': '237b3a93ac0d9ccf7d841f89ee0e7b122ae21a0e637ff8149e1faf7a4f55550a', - 'x86_64-apple-darwin-0.2.2': '4c0acbde53ce0fec440379c112bcc6beafd924dbbd6717d97e92245473d1e51a', - 'x86_64-pc-windows-msvc-0.2.2': 'fdfede202032b74e3a3e94034c26e23607b4a4326625953f48eae74c1f7d4d0b', - 'x86_64-unknown-linux-gnu-0.2.2': 'd19904a4eb2dca1b654639e82fc0327957c73427e504492005645f62d2205a3b', - 'x86_64-unknown-linux-musl-0.2.2': '82c4759fd56e932fd94642172ebea98cb55f4fbaafc4d00038ce425b08a5547f', - 'undefined-0.2.1': '2b7e04835f90d280458fbc473a2d4f47cf960d97769764deb059d0e85a978c45', - 'aarch64-apple-darwin-0.2.1': 'bb50bd8c7844ecc366c6dd99205d8cadefaae3a8bc10ea03d51e3e3634426b45', - 'aarch64-unknown-linux-gnu-0.2.1': 'e26270d4d3a2f0273ed40e1a237e085500f4db85255ed7d17ebaaa48123a0122', - 'aarch64-unknown-linux-musl-0.2.1': '6ab4c698ee4d2efc2ad9db2d832d47b77feaa4944e8ac90bedb78eae76c0ad76', - 'arm-unknown-linux-musleabihf-0.2.1': '0f58165c9947ea4a2178076fcf31f28186185f73537ff7e77aadcc04225cca0d', - 'armv7-unknown-linux-gnueabihf-0.2.1': '8d36878c23be2c560bb2a14d9fb8e4d418dc14593bd2d7b4ad93aef82eed6d6a', - 'armv7-unknown-linux-musleabihf-0.2.1': 'f714dc140fd40d149659ced54ac2d5e9532957afc4d66c3071131b648e417f3e', - 'i686-pc-windows-msvc-0.2.1': '65e6f8c12bd9feb46b0d415d2af9fb4bf018756c1158931a1e8adaa075ad41cb', - 'i686-unknown-linux-gnu-0.2.1': 'ce3973a4f332ef0ff996e1dcd7cfcbbcde977a5eb5febe118c4bd1387da66ee2', - 'i686-unknown-linux-musl-0.2.1': 'de3a0be9533980e74f1f6d834960cb3cda326a9aa33f86de18238ec9eca148c9', - 'powerpc64-unknown-linux-gnu-0.2.1': 'f60a5e600c56cac45289d738264ba99c27c1e345c7e75f41a01d65a3f78d4098', - 'powerpc64le-unknown-linux-gnu-0.2.1': 'b49dd3b2e9691daaa9793f1fced2b32edf0998ef55c630b5dcf18670005bdb73', - 'powerpc64le-unknown-linux-musl-0.2.1': '068a869b16d7a1310d895c6bca1b6a6dd6c6b6b5d2c7998433d10b59aee0ff11', - 's390x-unknown-linux-gnu-0.2.1': '0d79f0c4ad50f6c397889723c22db136d7f819c21576d0a40fb8b762d136b80e', - 'x86_64-apple-darwin-0.2.1': '438b30b81e86b95118ceeee0f8e2a2e018dccb22a5ef83985728610715336d62', - 'x86_64-pc-windows-msvc-0.2.1': '959a818ecf5869d69a4689c3984c5c87c915d898d8327ced120806e0b2f0f699', - 'x86_64-unknown-linux-gnu-0.2.1': '623069deb38e4f2d47054388fdf1e4f9a676853fa42080d3b9bf52cd812c75b5', - 'x86_64-unknown-linux-musl-0.2.1': 'd8af260263364fed8f2d4ba7c1c404bbf30f587cbc2a97807b6f8d5a1feb4cab', - 'undefined-0.2.0': '352d767c63e4b8ad10d30f705b62121291c2492e1df3eab26ef6dc94948fe090', - 'aarch64-apple-darwin-0.2.0': 'fc2c917a8c2b1567b1d035f4a8122750f900cd813409f9d80bbd287e2597dfae', - 'aarch64-unknown-linux-musl-0.2.0': '3504273e59259c6307446a2c7c1f49f194e8c7d8b79474cdfac97696a655fc34', - 'arm-unknown-linux-musleabihf-0.2.0': 'b4664ef3e726bd5569912e4ebab338263b5da150985513fcace4481b8422a09f', - 'armv7-unknown-linux-gnueabihf-0.2.0': '202f293aee0e156611898ef95313be812f9de6273412a27a530370763c5a5daf', - 'armv7-unknown-linux-musleabihf-0.2.0': 'afa807e1ce8fdaed8fcb372a0ca46cacd39572d1e87613d4df583936bd8bbfdb', - 'i686-pc-windows-msvc-0.2.0': 'd65d94ade914f7507dc93122561e47996c5e0861bdcccdabe794bcd5c9185f82', - 'i686-unknown-linux-gnu-0.2.0': 'ac307c2cc67d81c3e22b0cb9af0e808551df4c1b50d1f92ee41bf6f07523ab3e', - 'i686-unknown-linux-musl-0.2.0': 'f81963f737b1398d4c3c5ee0d370e7c4706936949e82ae42b52e54fbcc1840fd', - 'powerpc64-unknown-linux-gnu-0.2.0': '5bfcd8a0061edde591868437fe061728c4ae0fcedbe5a2671628eeda35b444ba', - 'powerpc64le-unknown-linux-gnu-0.2.0': 'd1338054af7e09ea91016fb0e3656646774e0223859498d814c7495b8a008c94', - 'powerpc64le-unknown-linux-musl-0.2.0': '90fce3a907c1124391408bb5f71a795264a226c8fe31b58ae1808fbe802de043', - 's390x-unknown-linux-gnu-0.2.0': 'e9554cd1d54f00675f768a47b7d68cf541214256d4db9b7d2c60ddab3e85bcd5', - 'x86_64-apple-darwin-0.2.0': '5ac4c95dee24980ced348a86cfe4e114cfcef442ca3cc11046cf8b6edc65f58b', - 'x86_64-pc-windows-msvc-0.2.0': 'd716371c39d9075f664f9c30697fe0987fcad79a3d403f79b87f30e1022656e7', - 'x86_64-unknown-linux-gnu-0.2.0': 'a14c9317e2c000475851100c83c20ae725e998511b1ff890006d70532567a822', - 'x86_64-unknown-linux-musl-0.2.0': '44a6168281d2fe1226f4af6c94b068006dc458a7b98ff4d4dac1991e161eb678', - 'undefined-0.1.45': '79fee4ffca82be961a2cf79b024506a672a4e5ea1f924c1174ce3a2e5bfee54f', - 'aarch64-apple-darwin-0.1.45': '4990c1ca07e87ea215085c798294205057efd7ed97d7d5f4c76e840fc366753c', - 'aarch64-unknown-linux-gnu-0.1.45': '71ff02cac3e257e12d35fe9bbd6dc096858ec23e218b069b5ec6e5157db39e1b', - 'aarch64-unknown-linux-musl-0.1.45': '7ca9c40f40b1b9f9673f78475a08e45b5c367bf3d73052896ee57a5f434872a6', - 'arm-unknown-linux-musleabihf-0.1.45': '64526323d11e496ff7012821424be3bb102ca2b74bf47392fbdac4991674a650', - 'armv7-unknown-linux-gnueabihf-0.1.45': 'c26b07ccb7e35595addc328bfcb99356343b12d59c4d3f9676aebd7aec24163d', - 'armv7-unknown-linux-musleabihf-0.1.45': 'dd2fa3ecfaf7a73e86fcb7f3945873b242a3f863742530afc98921cc0daf30b1', - 'i686-pc-windows-msvc-0.1.45': 'b010c1ddf3c0de9ec25068e1f7026b369df453b78c6619634da9cdd14aa9d810', - 'i686-unknown-linux-gnu-0.1.45': '2f14d4d41617b0358aadbf1bc8d77db60ca27200a8bdf66b8fd87fe66a18575a', - 'i686-unknown-linux-musl-0.1.45': 'bca68fe4228aebd2f5f9572a6cc70fe4a1d0c146a2d64135f264e4ae355bc3d4', - 'powerpc64-unknown-linux-gnu-0.1.45': 'f62159477309071a00fef10f0f0305e527bb6ffa1dac99650de365ba4ad6a2bd', - 'powerpc64le-unknown-linux-gnu-0.1.45': 'b67882e3778107610793c64048d07ad0d8e9ac627ef215f43ea45cbe074e25fd', - 'powerpc64le-unknown-linux-musl-0.1.45': '1c19bf1fad5e032c812fb084826ce5630081a2863a4aa529f1689e091f340499', - 's390x-unknown-linux-gnu-0.1.45': '85f6ee976f34bca558da5117613a16dde793e3b05395463cff0f3d3547ca309e', - 'x86_64-apple-darwin-0.1.45': 'b820364764eb628a89e11b25acd3fe19dfce436546f4f7c8dc38ede3f7d939df', - 'x86_64-pc-windows-msvc-0.1.45': '3de68132a6316e346f2ae3847dcedaa13ee89a8672b91544bc7d31f49362f20e', - 'x86_64-unknown-linux-gnu-0.1.45': '11341c386088233e197707a30fd9b13233deb222fd366cd39f9daf8e5924c7db', - 'x86_64-unknown-linux-musl-0.1.45': 'ceac15973402e27c6c9b1077e35249437b2cbc26f60fc90be31114c47631884b', - 'undefined-0.1.44': '295c120a2b63297d929ee9592c9b1993435a0c6907436d14f8bb93cff5ac4800', - 'aarch64-apple-darwin-0.1.44': '154d45db602d5c4f8dbffb0e038fee581f161963f5562568be565625ac7bc753', - 'aarch64-unknown-linux-gnu-0.1.44': 'afb7039f033546d55730dae38a106dd56b358117a565a42bf3ebda9c48db53c6', - 'aarch64-unknown-linux-musl-0.1.44': '3a461fb08697104ac5ff9749a6b370af87b95ad83008978ceffa7d0564fdc8c7', - 'arm-unknown-linux-musleabihf-0.1.44': 'db0371a9995d3d6c9ec9a7528ca535d0a5def1177127032360b374817030a71d', - 'armv7-unknown-linux-gnueabihf-0.1.44': 'a89e4114aa9855c9070e74c06f663213da614dc145ad21c0ec1aa5f0fa294c30', - 'armv7-unknown-linux-musleabihf-0.1.44': 'eeff1ff78345df0e86dc8f3144ea7af47d50ce9400f0d73798964a399167b250', - 'i686-pc-windows-msvc-0.1.44': 'c0f74ab851a704b8dfe6afd6bc7fad9d23947561d6c2da1a6cd5274a762c6c4f', - 'i686-unknown-linux-gnu-0.1.44': '6e68901f49540494274fbccb83feda57bef7ef137443228669c790f5f1a14fc9', - 'i686-unknown-linux-musl-0.1.44': '592020dd3bbe026d657341b0a7b28daaa57a68626585491a70863ae9f63a4769', - 'powerpc64-unknown-linux-gnu-0.1.44': '1af1b7839ff2a5cfebc7997fc579cc61a34c8ac4c838edfc07cae7318f1c3ed9', - 'powerpc64le-unknown-linux-gnu-0.1.44': 'cdd52a058a4243f9e3c5a4c2ba8edacb969df09623344e45a7adfe5e61e83cfc', - 's390x-unknown-linux-gnu-0.1.44': '3022aa438b64de7e75c8adea6b1e9650874f63d6e317e4c294d24e41e53d1621', - 'x86_64-apple-darwin-0.1.44': '0c2deb646f49ad7dbf8db9a9a7fa839b76654569d97b1ccd9d18bea89a34b3e0', - 'x86_64-pc-windows-msvc-0.1.44': 'f876f8c0867707db2d653973caf9ea306d65503ec772d0df9c02b6d0973fc7df', - 'x86_64-unknown-linux-gnu-0.1.44': '68e8fda65c987cc104bdf7ae1eb332477733d44a27823032826f9370928568b2', - 'x86_64-unknown-linux-musl-0.1.44': '1df53dac9e3a81df6fbbef36e23cd932b1cf0fad9016d943fef63d2ca284bd02', - 'undefined-0.1.43': '0d57d370baf24dcb00ce59f6ab0d3dc2ceee41bd2c870a73fa517d3747d34a4b', - 'aarch64-apple-darwin-0.1.43': 'e52c5f38cbcbd238fc40382252e2d40df3df1bbcc1302da86c19324285e9d27c', - 'aarch64-unknown-linux-gnu-0.1.43': '9dd96e89be41fa12b1101ac921265538871d99947ca3b31c87713f3edc6140ea', - 'aarch64-unknown-linux-musl-0.1.43': 'f0667c6d7e412ad40e5bbe5964e7448afefaa07d1d9c1a820090f3d555f9184d', - 'arm-unknown-linux-musleabihf-0.1.43': '940a297a5ee1833239632c28c5570e661ff7281607e6c6da003167b70ac28d27', - 'armv7-unknown-linux-gnueabihf-0.1.43': '1adc03865b683480c454994fd6a679607de2843e96a94d470c1e89abced8105a', - 'armv7-unknown-linux-musleabihf-0.1.43': '84010f6b5010caba4186c7824004000687d326f91a9570e176a23ec627d5a83d', - 'i686-pc-windows-msvc-0.1.43': '5e1896d8d83a58c8b02c328c1bcd852515ff760253622b9508228a062120f9c7', - 'i686-unknown-linux-gnu-0.1.43': 'ce026f056c1d4cbab5bfef762d1d08f8833191d595151550419d45e4b3a5303f', - 'i686-unknown-linux-musl-0.1.43': 'da54678dc50154ed8254308cf6f0c51c6e3fd34cf1f74f418dbdade980705fea', - 'powerpc64-unknown-linux-gnu-0.1.43': '2bc10fa243971de5c7aa2ca1d993b431dbd191ffc0858071c4418f08983f642d', - 'powerpc64le-unknown-linux-gnu-0.1.43': 'b624d9c4ebe991f52452b038848e3d23eba9aaa790ff1727520d21f9efa876a8', - 's390x-unknown-linux-gnu-0.1.43': 'd3f707cf4547669431eeb557b097682265c1534e8745a029ad48fd9eacc1c11e', - 'x86_64-apple-darwin-0.1.43': 'cf86ff709df440f3bf745af81217484d49fb9d5d6d896f3a9e1b9fd7956cc643', - 'x86_64-pc-windows-msvc-0.1.43': '5765acc5bd938e3dd9e47b2807e9552129de466f31cb835b3c0da3029c46def7', - 'x86_64-unknown-linux-gnu-0.1.43': '62217d8a269cd8901e84e3e197133cdb719a1fa37cd6f4afb07fab001163d247', - 'x86_64-unknown-linux-musl-0.1.43': 'c27d81bd87b60ca7bd0119316f0026b231c0418638255400b54e1094140367b0', - 'undefined-0.1.42': '70ad9addeb1259afe4077ed6266c1d9359929cc5fe0311463e52275600814564', - 'aarch64-apple-darwin-0.1.42': 'd49e7dea59668962765b8aa2f3a4512b03c166042e380e7a6fec971146ce11e4', - 'aarch64-unknown-linux-gnu-0.1.42': 'd4f1192eb260fb67a7b2f69313474c5a08bb3feb777b6ce6e9a74b3c12d22374', - 'aarch64-unknown-linux-musl-0.1.42': '3836a7a5147f6e8826ccfe7b0a081b16b26922ef8359c26b5d678fb50c36ad21', - 'arm-unknown-linux-musleabihf-0.1.42': '354f1d937911f9683dc5f249a4bdd09c637f34b078cd7a2ab0df1133126066b7', - 'armv7-unknown-linux-gnueabihf-0.1.42': '7ef29721204772ab0584acf4d98a43f7a7c54a3beae090b4c443128336492bcd', - 'armv7-unknown-linux-musleabihf-0.1.42': 'bada2af1a5cd37573ad88271e8ad6cdd8e038aa88335d667180d91cee4728445', - 'i686-pc-windows-msvc-0.1.42': '7c31034d3869d0b38c64c3b5c066676e0f0e03b1598bc51d931d958bce4ef214', - 'i686-unknown-linux-gnu-0.1.42': 'cd7395cb8bf4380f895d88912d872470eae7656e549fec1c2fcf404ab84018d1', - 'i686-unknown-linux-musl-0.1.42': '0eacdfc8d3fe450fa8203797ce1cacc9a6b43e9e4bcabf2901ddd5804b1f84cb', - 'powerpc64-unknown-linux-gnu-0.1.42': 'e7b900e759cc429baea47c6f200bf70517207388392c268bdf3dcea98727d271', - 'powerpc64le-unknown-linux-gnu-0.1.42': '03da000f9ca22693e45b729d90eac800014d5dcefec22b74553ea6bebc0b3790', - 's390x-unknown-linux-gnu-0.1.42': 'c9d6d0ead67084fde129e1672d14b56507cd4bc6bb96aef6b0ba6ed0ce085da4', - 'x86_64-apple-darwin-0.1.42': 'b510fb1ba6b039acac0e1b4278ef0b8e935feea4dc8006c68e3ac4cf793a0876', - 'x86_64-pc-windows-msvc-0.1.42': '57d82e1b0507aa7b4f2259e411dde942876888265aff04ae1eaa3575ab53fced', - 'x86_64-unknown-linux-gnu-0.1.42': 'cf3ca3ffbd1971ccef9b4d6cf703c8cf1730b824888bf63a7f1ede13943ddf7d', - 'x86_64-unknown-linux-musl-0.1.42': 'ba96ab47ec0366abc78f8f91613d9fed314da8ff414262535a7dc605caea5a9c', - 'undefined-0.1.41': '8aff538cd8cb640bb12b669a6e4a09f5c077c4d39d22be1245bb93965b5a249b', - 'aarch64-apple-darwin-0.1.41': 'c493ac2c5170d656499b7aa4a06d0c20d1c42b8b3b006b72661c747626cb7133', - 'aarch64-unknown-linux-gnu-0.1.41': '84c7427e700888ed4fd8ccd368c69cf28212eac4a81ead1ce376631e51127a1f', - 'aarch64-unknown-linux-musl-0.1.41': 'a334362acc469af8928df113e881638e23582d0b86eef133a58c047e904a3974', - 'arm-unknown-linux-musleabihf-0.1.41': '8348e5cf28b04ca15e8f2d04a38ffd43daccfa3b1dd82cefafcdca8b692fcf9a', - 'armv7-unknown-linux-gnueabihf-0.1.41': 'e0e5b30a899924516c574d9159fadcce008f5f11a5dccbdf95eaa35c24b28c67', - 'armv7-unknown-linux-musleabihf-0.1.41': 'b4ea7eee3c6b2ed72d0f0602304f64d405ed4dc600c8879309c9876818c5e5ce', - 'i686-pc-windows-msvc-0.1.41': 'd090a0e918b889e963f681322a3f0901d2dae78be15afc2907ded13a8534c815', - 'i686-unknown-linux-gnu-0.1.41': '21b6ad517cf12b5ff2eb030b0dd523ca49e16d9d99136328f1e8197ec50d981c', - 'i686-unknown-linux-musl-0.1.41': '40ed1d7ee942d25458e9d59a27a261cbaaa3433a966aadc141e48deeaa58b243', - 'powerpc64-unknown-linux-gnu-0.1.41': '799f5a7e1ad802a8e5a7dcf3f340bbaf3ea74cc330cd0294cd9787064cd271a0', - 'powerpc64le-unknown-linux-gnu-0.1.41': '1d80e8205503dab569b7d5d4f833a32b7163bd7770917321185e078e84f64298', - 's390x-unknown-linux-gnu-0.1.41': 'd8ee3120408bff3313832d623debb8d2dea79ce05427daf534ee5f54e9360d81', - 'x86_64-apple-darwin-0.1.41': 'af544d0fb0d902b5e4ad1ce574b9bcd1ced6718ede9f7a2c2c163c531b10c602', - 'x86_64-pc-windows-msvc-0.1.41': '0d9567b67a6cc6404c4163f8b661561502440eb68698ad7be1197276717f8d75', - 'x86_64-unknown-linux-gnu-0.1.41': '8d4782acbea2c04f34d90df25c8a7cce62e3673949d3be4a2baaf610385d5db4', - 'x86_64-unknown-linux-musl-0.1.41': '9b0058e9fc92c96e3530ec4e1a998e435214cb3905e7284e09cf7c68f1c33c01', - 'undefined-0.1.40': 'c842a83107554c3a90451e7e6d935aa9d3d066bc25e1cba5c66b80c10754384f', - 'aarch64-apple-darwin-0.1.40': '28e92ed4534fa5085050fe51db0a641c319377e6498e5ee98d892ae91139f603', - 'aarch64-unknown-linux-gnu-0.1.40': '452cd7ec339345d4067f27b6db672f02db942bb525c80c510bc3bdd7596d74b3', - 'aarch64-unknown-linux-musl-0.1.40': 'b2fcf9819a5fb53aa98a0fc19ecee6bcd862969886de9d63fffe9b3270d284d6', - 'arm-unknown-linux-musleabihf-0.1.40': 'cbeada3fbd6c380aa5524e8e963558da11a214d9c416da64428d92af555567f6', - 'armv7-unknown-linux-gnueabihf-0.1.40': '7ae8180326f005e12dfc8be04c2f88c54efba020d5bdfe49608e1b3407956e55', - 'armv7-unknown-linux-musleabihf-0.1.40': '0c1aa0c94457412d466798e565aefbd11e9de4e1b2d4dc9ac0ae45c91d01857f', - 'i686-pc-windows-msvc-0.1.40': 'c985f0339bc7375fab00b4a06d1e215017516188040202dae9d6147196a4bd60', - 'i686-unknown-linux-gnu-0.1.40': 'e1e5c191d4b5634be80a7f4e79484d58190848253a43c678b8c9a8811483fe93', - 'i686-unknown-linux-musl-0.1.40': '2b6cc95ea515a50d8da69536eb68478009ec7ae0fc94a13f584be11eedc4a4f9', - 'powerpc64-unknown-linux-gnu-0.1.40': 'e7d56ee62672e809ddcc7f90b863d5f1a0d314fb613647abc830526b0161b975', - 'powerpc64le-unknown-linux-gnu-0.1.40': '8c5217c8b58824f1939748818fbd0eb57d35196b361c1dad774bbb2ff0b38869', - 's390x-unknown-linux-gnu-0.1.40': '60689531d1a4308396dfacc16a466749730fdcc9c5fced509172349a2f5d9b58', - 'x86_64-apple-darwin-0.1.40': '9b29374bc79dc4cca9b6e82e420867a06806651f814081987927fec5bc3ea85a', - 'x86_64-pc-windows-msvc-0.1.40': 'bf3845b59aaf6bb383c6caf89eae949a18106387be154fb5b2ae9a4e4ed646a4', - 'x86_64-unknown-linux-gnu-0.1.40': 'd9175308fcd2bd4b953b05cee66a022380ba493c01b2d35884684719d599299c', - 'x86_64-unknown-linux-musl-0.1.40': '7a5a1173ba3319f176167bd32544ad5d8edf0f38c753820b5627b036c74aabad', - 'undefined-0.1.39': '56e3247a49c76a42c7f686292d8f706110a308c45153913b165657f8db8bcbf7', - 'aarch64-apple-darwin-0.1.39': '35e320cfa41c8902d66e2c491b5b2d2414e1c6443177c660736de657c66fb2c2', - 'aarch64-unknown-linux-gnu-0.1.39': '62b24363f21c07e02f62cf8e298ee6ec30e844006f3a52ac55c02903c755586d', - 'aarch64-unknown-linux-musl-0.1.39': '1a77b4cd4bf6ab52efc780fb252097184c23f81233a8f508e49939eb2e6e690b', - 'arm-unknown-linux-musleabihf-0.1.39': 'c8f628862e665199b82826db24db3007c16c361c8d0f31d8dfbd4be2d7aefdfb', - 'armv7-unknown-linux-gnueabihf-0.1.39': '63342dac1cac572f8f12b179d91fcb0527f115f6a7ef17ba7aa24b699854cf39', - 'armv7-unknown-linux-musleabihf-0.1.39': 'a9013c428f1505e21e56715e6c91a4e45367b7eb341a14a51663e61305cf7162', - 'i686-pc-windows-msvc-0.1.39': '53e4c2ae32318699a5f6c4c7f19f1dd114b39b15e63704be902ff894b428dfed', - 'i686-unknown-linux-gnu-0.1.39': 'f0280538ed9bc68283606e4db031f9cc4c4c8404dc5719e9d1f03f705762966c', - 'i686-unknown-linux-musl-0.1.39': 'baa9ef041ed3834d7e5869b10945bb804449e23ea0ffbe91a9475bc4c4e83fe2', - 'powerpc64-unknown-linux-gnu-0.1.39': '5d0312a1ee77d652115a21021f47e374886e84e8d986f3a1bcaa7e5851cd2767', - 'powerpc64le-unknown-linux-gnu-0.1.39': '07b1856e71c35f93ef5359c54f63d819841762316bf4d7c2774e178412d9090c', - 's390x-unknown-linux-gnu-0.1.39': '773725ad1e02d6f4c90494fad5309a7cb4ce03b2e377fad336fecd895bc42dd2', - 'x86_64-apple-darwin-0.1.39': 'cf5393f17de6961c7140d68f80e09c1f43ef47f8fac923ccd41896cce698f296', - 'x86_64-pc-windows-msvc-0.1.39': 'a44eb417b0c1e1c7cffd7349b8019d684f6200d0b5cfaef7dc322e8312bb254c', - 'x86_64-unknown-linux-gnu-0.1.39': 'e748caea4ddafd3aebba771f4e8f51fe5aa517b71151a648269b3be982a349a1', - 'x86_64-unknown-linux-musl-0.1.39': 'dc57b6f64ae82fe604390e05cf66092fe598ae0fd0fdea9d568f6c4874fb3fe2', - 'undefined-0.1.38': '1fde633a2c16b51e43f346681471b3daf26e2b918a6d13de170eada19945774a', - 'aarch64-apple-darwin-0.1.38': '9ed4dee0e0f3da47fc85264fed79ea118f66043481ad71182c21e838f4f207dc', - 'aarch64-unknown-linux-gnu-0.1.38': '8d5afd982060a11748a46b4ca8ef9a2aec52ea4736419dc7c0dc53ad98843454', - 'aarch64-unknown-linux-musl-0.1.38': 'b15f7f84f0975825f6f0e2f10ec0ad49ad3bb48d6b7bd89f058e578a939cf383', - 'arm-unknown-linux-musleabihf-0.1.38': 'df7fd36d0de1d751f091c431d955b9d0a5cdcc74f446bdd65b91aad97cd016d2', - 'armv7-unknown-linux-gnueabihf-0.1.38': 'e0a55e1dde1d1421a10d4706a8e79f37039fd57026f02e629e93b6feea504cfe', - 'armv7-unknown-linux-musleabihf-0.1.38': 'b1371b764e2840e5a4ef3567a36626b4aaac2ede2165d42e5ac19683ae4beaf1', - 'i686-pc-windows-msvc-0.1.38': '4acad6296bb67eb9900fefd0ccca8af7d770f485f40c0545120e7b452ef7a0dc', - 'i686-unknown-linux-gnu-0.1.38': 'c7065c75b52ba3b9eabb69378e01a1a5d4ca0f80545dcb8a027080fdfcb112a3', - 'i686-unknown-linux-musl-0.1.38': 'b65b24356366655aa112c18205d3214fd5fd3eca80888392f7b1e25d215f70e5', - 'powerpc64-unknown-linux-gnu-0.1.38': '2eaad33bb7d742498aec2dc6ff52ebc82103347db74ccdf202e0dbe2047815a9', - 'powerpc64le-unknown-linux-gnu-0.1.38': 'a1110c55b4383fb0dc967ae0ee3950499915d34d69d10c08c39d66340f28651a', - 's390x-unknown-linux-gnu-0.1.38': '537202439156061acea27ef3be90c524368ceffa642f43333dbce223c35be866', - 'x86_64-apple-darwin-0.1.38': 'f35f8e07f66109867f10bce591188e5a54a822344517bf5150fcd28c616b744e', - 'x86_64-pc-windows-msvc-0.1.38': 'decfffd2e6e707b7b51b0981a51d6d277e8c15aa904be3c820dbd46b35a35a95', - 'x86_64-unknown-linux-gnu-0.1.38': '9b19bf6067ebb2e200211a300f0721e35144424f8f0f703dfc50c0bc745f69df', - 'x86_64-unknown-linux-musl-0.1.38': '29635ef915c1bb4048720e6b5e19f424a5a5f3934adef5a0e036295256c098df', - 'undefined-0.1.37': '158c7d7a9bfe2dc8430eeaa1e985a883d241745fba1acfb75e8d2242169983bf', - 'aarch64-apple-darwin-0.1.37': '1a160798d79a626a06e16634d77315e9dbe363ab6bfdaef424f7b5bffd30cab7', - 'aarch64-unknown-linux-gnu-0.1.37': 'd59ed726780815d48f95bf4f7a2d9c41aaa05fc746d5a8af49ae11d7e1f3f34b', - 'aarch64-unknown-linux-musl-0.1.37': 'd86cc49c68c9efd1116fe164f4be14d096d20f846ea50fb02148cb44ed3d920f', - 'arm-unknown-linux-musleabihf-0.1.37': '2ad8488bbc2f519bcd2a4435aea33ba79c0dc71fd61f90d898964a02068b8aab', - 'armv7-unknown-linux-gnueabihf-0.1.37': '86441af7ba294abf25ffd60a452955db4e8610490bdaf8c054976bb31d96baa3', - 'armv7-unknown-linux-musleabihf-0.1.37': '7b813fdcadffd54e629dc65541edf2d90d043083e32def8332bf87ce2443f583', - 'i686-pc-windows-msvc-0.1.37': 'e676cacfd871e33e7c4972ae241ed6362e20159261f9da8545a3816e436b59b0', - 'i686-unknown-linux-gnu-0.1.37': 'bf4c37a3aa6ee61a409c89261593909756dbbd86b0819d5003dc3ac83aa081e1', - 'i686-unknown-linux-musl-0.1.37': 'ecf205ac1196602877ad24d1c5fef5c8688d66262d358fe818155190ff0ad8a0', - 'powerpc64-unknown-linux-gnu-0.1.37': '4a0cc47732dada5ee1e1392fe6ddf6e2947a6bcb0b61e83936eaf1ebd363b5e7', - 'powerpc64le-unknown-linux-gnu-0.1.37': '70764f4145e931dfbc195b4f6c2ac592a776b34402480de8dc6145cf2196b7e2', - 's390x-unknown-linux-gnu-0.1.37': '222b3567a5ce77b4ee0b8732cd18a34a88e31e0c5230c652609da922b83d7d36', - 'x86_64-apple-darwin-0.1.37': '61502d8054f12aafd56ff193abca0606f688fb7d84cea40e94ff3de5a0cc950f', - 'x86_64-pc-windows-msvc-0.1.37': '6bc00aec8b4731a7883b88d27450c959055a24a1f5858777313addbe850a7cad', - 'x86_64-unknown-linux-gnu-0.1.37': '33cb815958a3e84b929dc06d42bf5170a5a5eb60b413f2243b4e62e75edc3e49', - 'x86_64-unknown-linux-musl-0.1.37': '2c591eaa0be3711dce1ad6d07a7564c8738b5c16b009c84037727f94c073a962', - 'undefined-0.1.36': '1d7cf52af7406ddabc4feb66dee5c4573f7b22a5ff73fd8a5b47dec7897c8e7e', - 'aarch64-apple-darwin-0.1.36': 'd37641e38512b7e55b9eda7f8a6cb831375b5f1e86f0f326dfe0e6a8602ca7b6', - 'aarch64-unknown-linux-gnu-0.1.36': 'c64b7d23c3e27346a5b31a95fc16663407bc72aee0b17eb0aa9d069e312e606e', - 'aarch64-unknown-linux-musl-0.1.36': '89740c2cb16bb57dfb125764fb889f86b225cba0b8691b2bbf30baf96d2348c9', - 'arm-unknown-linux-musleabihf-0.1.36': 'a802fd2c6ccd2ca8dcfe85fd2c5fb58689c5c082e6ce8e3aa1b1436031c70879', - 'armv7-unknown-linux-gnueabihf-0.1.36': '07b8fcdcde9f43c94ab4d5296c1e8c86f41589f4d8d15f124311bd3c1f019777', - 'armv7-unknown-linux-musleabihf-0.1.36': '78026455886e3c264eb952c92d2795d19cffddf529651a2d8f20cadac4ad31f8', - 'i686-pc-windows-msvc-0.1.36': 'e945b6a176ee08d7440703eb4a975a8b7d383b8e9b480f724dc5d614a90a080a', - 'i686-unknown-linux-gnu-0.1.36': 'b1ef60a4b5b153a3c11e9177e2d72f334e1c7d9311bea75d42faa8ac8c9d4e42', - 'i686-unknown-linux-musl-0.1.36': '7fbc9f02618d22f54644c29c65cf6d5ff3cd813f1fcc26cdeaf3ae393057f604', - 'powerpc64-unknown-linux-gnu-0.1.36': '678a5fba4ec6b6d52d6de833a447b288869df501ba33399ddb437977bac14efc', - 'powerpc64le-unknown-linux-gnu-0.1.36': '873a0531ba05ff56ee452365e4ef9c40acd4c4e6225c250e6a6c4c65d728ef70', - 's390x-unknown-linux-gnu-0.1.36': '14b4956ea11f85a43031509c6d01e8bb941d946f974d405f3cf5dc65500f47fe', - 'x86_64-apple-darwin-0.1.36': '30e3e1156c38e335b969d999b83d9e9f6fa5d497c80e5cdf1c43339cdbbd02bd', - 'x86_64-pc-windows-msvc-0.1.36': 'fd43e117e08414970f84cddc6300c5fbd5096be8f9c981d5b3464c28720ddcfb', - 'x86_64-unknown-linux-gnu-0.1.36': '7108a5709273156a176394d6da4b64f63b3c658e350657978eb1ba4c9e287e02', - 'x86_64-unknown-linux-musl-0.1.36': '3c95bc263adcab13ae5c7e9a0c97e9de5037f8926294cf22902d04eb99f951ef', - 'undefined-0.1.35': '033df44758caf9a2d81675419c9ba3bfd9a15255e670078b236b373a6ca8cef9', - 'aarch64-apple-darwin-0.1.35': 'd5c0740e4a64c5d79150f1e819d903ec6281906bfce433bfe599312de7994435', - 'aarch64-unknown-linux-gnu-0.1.35': '70721a0535ab34354b2fab1461c6ccfc5949943ad34bfec179f4558aa331635c', - 'aarch64-unknown-linux-musl-0.1.35': '59e4100cdad71bcbf4618516ba860b1829c3b2f255bee00794b5ae1823cd1388', - 'arm-unknown-linux-musleabihf-0.1.35': '4832abf5ab1c3d238e35a1634c6cb62148f5fb722e48d498c1cb10876efaecb5', - 'armv7-unknown-linux-gnueabihf-0.1.35': 'ebdda308333bf6ee351f0f225d7076697c316e6f671a23caa8922f876ba2627c', - 'armv7-unknown-linux-musleabihf-0.1.35': '6ea7e2e6953bf3afcc973fea7aaf12ada410407432d86e7665ccd641c503d739', - 'i686-pc-windows-msvc-0.1.35': 'af6066ee9197a675a6138a118d3125890468ea036c81d3d3327329830ad3d587', - 'i686-unknown-linux-gnu-0.1.35': '9ad7c1b2a4555b37e54f3e999482d0301e8d030ce3e99627b0fcb1435e853203', - 'i686-unknown-linux-musl-0.1.35': '41be10fbc59cbd7a059f0fbd33440c7b034086d36395546856f2076cb562b4c4', - 'powerpc64-unknown-linux-gnu-0.1.35': 'df17a85fb14b5e295bf45a2e371ca0f78463ac66b5fa6d1c1f51f22f3eed592c', - 'powerpc64le-unknown-linux-gnu-0.1.35': 'd6300efc3079c3d7fbc861a1907c76c9e9f79bb0b3b6effd39bfeefb38bc9bc3', - 's390x-unknown-linux-gnu-0.1.35': '6fcece3d517c4a47e4dd40ef8cf40c18bafa88c22f7846abe80f10ae494260a9', - 'x86_64-apple-darwin-0.1.35': '9de159d413f235d791377ecc7266b6c1b076c8a638772f04e6dc05fca32b6b4a', - 'x86_64-pc-windows-msvc-0.1.35': '543ed32847307ef50b5d21c1f9f4968e1e8c97e75a5899f80de5a6c26cd61888', - 'x86_64-unknown-linux-gnu-0.1.35': 'ae2081221ea244e4998b89c408421e9922499fecf371c7310cfa0e951bff2a9e', - 'x86_64-unknown-linux-musl-0.1.35': '9abd44dfd8958e251a3b29a1eb95f152fef94f38fcef8bf534b86fd94ef89e35', - 'undefined-0.1.34': 'ff93be812726a344252374ba1751b0089237439077a30c9214fb9a44bc32582b', - 'aarch64-apple-darwin-0.1.34': '40233daeac0eca7ea233b79a8f312fb9d85913fc74547031c81f2ec7c3f3aae0', - 'aarch64-unknown-linux-gnu-0.1.34': 'e4fac2f30a2c8e1773b08d4f50994c484a8166f64fc2cf0ed19ccac62f5d01a9', - 'aarch64-unknown-linux-musl-0.1.34': 'e13bc0a5fa7aebdb83627cccb95d50d202d6c1d08ec3bc8ff035abc6c5438edf', - 'arm-unknown-linux-musleabihf-0.1.34': 'ad0fb8ab07cf301192a829684c8f3b0fc3d024d7e75297c2ed4dddd8d249fc89', - 'armv7-unknown-linux-gnueabihf-0.1.34': '48b5588ad3ff90944a13c24744a14964b68a99fac7694d9a79f4cf38aa38b386', - 'armv7-unknown-linux-musleabihf-0.1.34': '7591b8ee28f1c79b9fa35a32a3f3af32012a221f01851a9747e2686dffe735d6', - 'i686-pc-windows-msvc-0.1.34': '1dd6e548b6f3f661152fed143257184439b819334d7f1124aab015a4919dd4e6', - 'i686-unknown-linux-gnu-0.1.34': 'e5b8ac197e33d4884cdeaedf48a90bda44dabff330c194ca55ceff769dd8dcb9', - 'i686-unknown-linux-musl-0.1.34': '2d43d99471b8dc32f6776559769d9dca1c9b587445f9be12ae751d7c58947f06', - 'powerpc64-unknown-linux-gnu-0.1.34': 'a6774692b35f66f871c537e0133d4e1ea629862c73dccd6221307a609f7b4cf8', - 'powerpc64le-unknown-linux-gnu-0.1.34': '8ac52b6ad77eb013fa289b42f465b9ab8ba5f861cd76c828c69aca6121682cd8', - 's390x-unknown-linux-gnu-0.1.34': '2d394cf56c1f81b434e45aa0df61b48241675a5b5c97b91b6d511827aa0f2ea4', - 'x86_64-apple-darwin-0.1.34': '2f6933cf0e10e99cb3575deebcad5cc143961a3da167c4b21eff4d600ef872ec', - 'x86_64-pc-windows-msvc-0.1.34': '98c824618c808cf4ae1af16c5341086f0038e0dc1ae7e0a805c872d6fcc033b7', - 'x86_64-unknown-linux-gnu-0.1.34': '1d3b075c89e5763ddbd19efdaf03d6ad96a753db889a28f5127227c40bb9f0bc', - 'x86_64-unknown-linux-musl-0.1.34': 'bd162c354d0406c5ce91c0b16d130a62edbac6528ecd90a7f5b3f2d315f12df3', - 'undefined-0.1.33': '54a67168f4c5cdf44f4197e948cf4ecb65e71001f49584d79eab82358bbda813', - 'aarch64-apple-darwin-0.1.33': '6e6af126bfc34a9d0e02641bd99fda1201a81356455ee4f196b760b3d995cb7a', - 'aarch64-unknown-linux-gnu-0.1.33': '12f04ed3437f06ce6fc0384958e4dbb74c441bd9b46d5f83b8342c6c9247da97', - 'aarch64-unknown-linux-musl-0.1.33': '580542f3997a10191091cbc1f142e1526afb9e98aa6ba0a709245cfde2d99d99', - 'arm-unknown-linux-musleabihf-0.1.33': 'febb8276163a99d18fadb04f9dbe298e613b1716c5721a3e2433c2da0fd9b69e', - 'armv7-unknown-linux-gnueabihf-0.1.33': '0302de0a1f48ae05a3a0f7d7924f8845012628fbc55da590037d433bc5977e8f', - 'armv7-unknown-linux-musleabihf-0.1.33': 'db82699a990ab3f37709dd0108a336d1cf3e9d3d0f5cd906795eb1a1d0758714', - 'i686-pc-windows-msvc-0.1.33': '753a1ef176fc87846a48eafdda3b0b5e0a3e0e70a746f6868e6c8c097c6322c3', - 'i686-unknown-linux-gnu-0.1.33': '7b55900bfb6423541fdb129ca34396efb614ebfcb8e40027d7861907278f9258', - 'i686-unknown-linux-musl-0.1.33': '302f5755e99fe449664135069e60be7bfbd931d09e22f6447fc0f64c82a464bd', - 'powerpc64-unknown-linux-gnu-0.1.33': '8b007854d21401c41cf2084e21664981aaaa7cbfa5df71365858d12470323823', - 'powerpc64le-unknown-linux-gnu-0.1.33': '02ed93b767b1d4a2d69c61932366104bd016417980cf71c1f898fcd93ec74232', - 's390x-unknown-linux-gnu-0.1.33': '4341f067c105607d971dca3d9c79cac59b3e8cf4f8f61a50fe87b6236d97cc44', - 'x86_64-apple-darwin-0.1.33': '3e32e8242b32c1231a45888134b5615f45bfd938fc865d82f270a9ca76ab1a90', - 'x86_64-pc-windows-msvc-0.1.33': 'b5adf2b7abdd72ab763a1a65624bdbde178797387c461a6e12803157dbf62fee', - 'x86_64-unknown-linux-gnu-0.1.33': 'c582cf587db50ae4dd50360c5bc5dffce110c7e457f1dc1955fc6ad447bdfcce', - 'x86_64-unknown-linux-musl-0.1.33': '6a9877d92235c225ba82d18a6960489a8463716ce1f858f793b971f4aa2f7abb', - 'undefined-0.1.32': 'c0fad19c5c03cfbf104ccb8e21c510aa556f5d296ad83a5faa737b4dc763a932', - 'aarch64-apple-darwin-0.1.32': '2f33ca87c17c27d6c2e7ac45b26e19de1a07fcd5e9312670a7bbb90634278414', - 'aarch64-unknown-linux-gnu-0.1.32': 'ffd433c6508a165f29688694b436289214c5f4569ee62e4b8b00a95dcd661cee', - 'aarch64-unknown-linux-musl-0.1.32': '5b19aeef841ad88313afa80dd56198af6a33c3be2f890936e88e5ee197b914f9', - 'arm-unknown-linux-musleabihf-0.1.32': 'ee9a2df7647689dac93f7e98f0f71ea04977b9cbf899a56b061aca594542a8c0', - 'armv7-unknown-linux-gnueabihf-0.1.32': 'ec316ac2dc8d5b8ba81e3f19f4550bbdefa5c36ef2a8a7bc90afcc82f37e3f96', - 'armv7-unknown-linux-musleabihf-0.1.32': '43c0dce83f4450ee6442ad768071f834e0d4dadedf333e3d6ff9d2e9b23f0487', - 'i686-pc-windows-msvc-0.1.32': 'df848217d4ef5f7a0d55572ac307bccd0052d97c5be21437ec717bb9e461d85e', - 'i686-unknown-linux-gnu-0.1.32': '93c79fa1bfc8d558176cdb5a457c106e3327a5a00c01127d099310fcf312c8d7', - 'i686-unknown-linux-musl-0.1.32': 'c6804b16c453d08acfb0a62a9e537d526447df06bf6eba2e70b407dd620ccecc', - 'powerpc64-unknown-linux-gnu-0.1.32': '2b69efb247e543134ac2a5cc662b90f73ed1a2f23eb0a09475db16a82ba7bfa7', - 'powerpc64le-unknown-linux-gnu-0.1.32': 'a421a69614e9600df89761193f947f8a1411636dd676a7eaef2f8a38e30d6a51', - 's390x-unknown-linux-gnu-0.1.32': '4a6e350dfe0b13b56a0877ec033f97c6e24283dd99c9664c755a9ff79a97fd06', - 'x86_64-apple-darwin-0.1.32': 'd3450c42b890767f2bad09e496f35f392e0d52f502a0d12b207371852b013a44', - 'x86_64-pc-windows-msvc-0.1.32': '4df4192f5c7824bdfaecd4d3d8fb6310ced6e0980592d5d44b7afed88ef89ff0', - 'x86_64-unknown-linux-gnu-0.1.32': '281204339346c00f395332cec43de65bcdd3675a7dbe17b5d8d1292d7854679a', - 'x86_64-unknown-linux-musl-0.1.32': 'a9dc63f9f48a1964340488e4d139d64b59fc14b06733a165af06d1857980dc97', - 'undefined-0.1.31': 'b5b97391649fb35d588a7f741339e8862b731d2d31448462758428cbd8c51536', - 'aarch64-apple-darwin-0.1.31': 'b00f0d2fbeb2806790b18294c0bf82ae8e69043a7da29d456b369202b261aef1', - 'aarch64-unknown-linux-gnu-0.1.31': '9de4de11f1297a96aa731cf2f8ed7bc2e85405692dd3216d50685062b877ec75', - 'aarch64-unknown-linux-musl-0.1.31': 'fc4127da459a7f7264662faca4c697c71ac5c5a13dc92354520453e1f62426fd', - 'arm-unknown-linux-musleabihf-0.1.31': 'b2781e289f12f47e7f6af9e908c404e9fb47c74935f3c5d71f6bd34e68c2f88d', - 'armv7-unknown-linux-gnueabihf-0.1.31': '3ef451b3f6dd065a17b3f25d945e3ff0084e2d29c2487ba2cac01f55caa19368', - 'armv7-unknown-linux-musleabihf-0.1.31': 'ed6888e8c090593857b9112af8cdf918053e09cf26cb960af73c66f2fe708e1c', - 'i686-pc-windows-msvc-0.1.31': '84b3a4480643c722d7b5a53b219d9e4546b428b9acd5bf003584e3d458b61a4a', - 'i686-unknown-linux-gnu-0.1.31': '01e6a76d251f692fa18630b99b0dc941b11ac9d08cd01622272892f6a75708a6', - 'i686-unknown-linux-musl-0.1.31': '8e3a1312a7d54dc05e661c2af91164b27ec6ba992d37af7c32611c83d970b00e', - 'powerpc64-unknown-linux-gnu-0.1.31': '74ec1054cde973ee495dddc95026f12fa7cf584c1b67b728cdcad118d6524b33', - 'powerpc64le-unknown-linux-gnu-0.1.31': 'cdb328074d4f795fee91fbe7e6930149f8b7b5a7921d96e5d7c00b574a4583bf', - 's390x-unknown-linux-gnu-0.1.31': '90fc1a8614195626642470d4e31b52fd3ac27d5d12df4fe81e008568822c5017', - 'x86_64-apple-darwin-0.1.31': 'c10ba963e651ab09a5b1cbb8ac1d0ee74c8f7dca99eab7d41cb9a35b5b7c06b7', - 'x86_64-pc-windows-msvc-0.1.31': '980833bbbbcffb3cf0e2abaf8963cdccfcb4cd378ed980a4168be124efda5c0a', - 'x86_64-unknown-linux-gnu-0.1.31': 'f5b4508eb49d8d65fdc712267d18312f4e3d67f168a8d9b4bb24a28bafdaa831', - 'x86_64-unknown-linux-musl-0.1.31': '02ba313bd081d2a99137f123e30692c991d0c6d9e190bdf403fe5b1a53c2bc2e', - 'undefined-0.1.30': '72c816316dc84a6daceadfb856b70f046db7d1a473a16a8bdea5041c786c1693', - 'aarch64-apple-darwin-0.1.30': '2efee289f003bf2033a44396886836dbff9d4e76ad2e0ef6d81d7a39a1068c49', - 'aarch64-unknown-linux-gnu-0.1.30': '169e02774fed015ee7e780b614548f2c0aa9041a6cfb99b7f57cd9bfdebcb367', - 'aarch64-unknown-linux-musl-0.1.30': '35883d461fa233b076a9643e4ca5b0f61ddf0dfc46d545156793beec673acac6', - 'arm-unknown-linux-musleabihf-0.1.30': '673f9a4297e555507cc3e0228693b94d0e2f689022cd04076c49df2b0e84b6ea', - 'armv7-unknown-linux-gnueabihf-0.1.30': '79475a7560e463c484acee1f0da822c32316bc08086445717b5cbb813821593e', - 'armv7-unknown-linux-musleabihf-0.1.30': '168ddee00a64eef97a709084ebafb822bf47ac1fc4962cf44d60a64fb5b8d4c5', - 'i686-pc-windows-msvc-0.1.30': '9c057e5bb6e86da7477fddea1f942cc605c7b780071875fb9b4c3b1931083199', - 'i686-unknown-linux-gnu-0.1.30': '2e3e0925aead2a8e6e2a5dbaa36ac8c292758398d412eab6b01c0651d956df1d', - 'i686-unknown-linux-musl-0.1.30': '6df4acabcc41139433f24d37e4acceeb576826f651b815f3f363afe467e5c5ae', - 'powerpc64-unknown-linux-gnu-0.1.30': '57b9885562cc038d0e784c5875e9e03c7dd13f0b6b3f5fceffb573891ed1b68f', - 'powerpc64le-unknown-linux-gnu-0.1.30': '02f5f9e086980b4429d51c8e73ee5098f69f00edd0684465cc15ee7e2d5eeac0', - 's390x-unknown-linux-gnu-0.1.30': 'e16fdb1ca6941eafdc4ff992ce8e7905c493da3a64000dd7bd362bfc75766627', - 'x86_64-apple-darwin-0.1.30': 'a99071ba49044263a24be61aa8341bed035d15f3f1023e3e29eb4522d978a485', - 'x86_64-pc-windows-msvc-0.1.30': '0f8a4b6d093a91b638ac1c9683ed484c491e19911249ce64c26cd31501a90206', - 'x86_64-unknown-linux-gnu-0.1.30': 'bf102d20cf00bd2c001610570b6cd1409b63db3f5cef6b55e386d64f3d4724a5', - 'x86_64-unknown-linux-musl-0.1.30': 'ff073ae9fce030fab64d1b93fc7a4688a0495eecac7316d55e4dc08a9283a326', - 'undefined-0.1.29': 'dad20061d2e13b281925c26f6e1f0872852d095774b241ca8d963a13da4f4249', - 'aarch64-apple-darwin-0.1.29': 'a5f4cf59f873ea6ffb8d1c11468936f508e444dba0c8278b8f550e811bcfe77f', - 'aarch64-unknown-linux-gnu-0.1.29': 'f4227d02eecfe3f2a7cfb42b25630dd5a4e5f5144231b84b5acdf6be0158a468', - 'aarch64-unknown-linux-musl-0.1.29': '22bf69e1cef9958774751b2770278a0aebaf132c51c04cc6800f0884a18273c3', - 'arm-unknown-linux-musleabihf-0.1.29': '54b34a71c3d3f011f9920caf0b8a9081a62ec16c77e0c69e947c888782f5f6e6', - 'armv7-unknown-linux-gnueabihf-0.1.29': '86c73423657e91cc4e5e1d541f6a061678bb098bb23b74fc44d79524523031af', - 'armv7-unknown-linux-musleabihf-0.1.29': '76108491438a15f9acae142afdec5ca0ea31437ea909240a2534bd7aa45ac96e', - 'i686-pc-windows-msvc-0.1.29': '3dac7e8f710f723accadaf876b7034cd1108509e95fb1ad7fff3a8bf579bda3e', - 'i686-unknown-linux-gnu-0.1.29': 'e117aa0b4b1f588699a4259d4e7485938b6aa00d2ab21093ab0047304450fdf1', - 'i686-unknown-linux-musl-0.1.29': '690682d5103b907e43c9704fdd26e5f09ad68894b8135db823b391adef654a91', - 'powerpc64-unknown-linux-gnu-0.1.29': '27aa0b5c7e2278ad74afb27f1f2843ccd6bc0c1c8674e6a10e0bcec73e660012', - 'powerpc64le-unknown-linux-gnu-0.1.29': '90cf042117be9de01e9e2348a7200954fc25c6989b41b4d5e995b8f42dfa5fcc', - 's390x-unknown-linux-gnu-0.1.29': '4242e2cf825ca433947d44d985eecb11460638f1a8427cc9fe6fa6b70de86c6f', - 'x86_64-apple-darwin-0.1.29': 'cb51b2f22f06e99f79ee85f3d353a93a9c25ad674f150490e391166a97fa6db8', - 'x86_64-pc-windows-msvc-0.1.29': '7926be66598e6c0f2b07c6db72a1d9c61f7b1cce72663266dcdcbf4055e1c9a3', - 'x86_64-unknown-linux-gnu-0.1.29': '59e9df30439a01e6852da3f62615d6e6fb8fd79029ee86c7ffdd3fc06c76a84e', - 'x86_64-unknown-linux-musl-0.1.29': '72b43a0e804d033d4064b57acfbd95671abfb0d2c0ddf11bfaf779efdad03e94', - 'undefined-0.1.28': 'd6d23768a49cc7ba3a67cded5e826370c6f9e7f5ce6aa69743c5a5deb2f7e08e', - 'aarch64-apple-darwin-0.1.28': '3892e0a04ced4e8a1c900a7577a0c0805f362c5cbe13abc9c822215cb8f2317c', - 'aarch64-unknown-linux-gnu-0.1.28': '6615631b7f8eab6841de405f1978114bba290540fc8b581d4581133dd43d3635', - 'aarch64-unknown-linux-musl-0.1.28': 'e6b3421876506904f6aee949303403f5065b00a3be3b799fc921c88e9652bacf', - 'arm-unknown-linux-musleabihf-0.1.28': '23ae513903449d357a452553b9f4f59d7b852507615ddc79136a3c1cec48e5d0', - 'armv7-unknown-linux-gnueabihf-0.1.28': 'e6595be0cc281eda4833ea6d398d030a0f8a4f23634004b83a6c0e52805cce78', - 'armv7-unknown-linux-musleabihf-0.1.28': 'f24ddffcb5270cb297a5ecdc6a4c59f8be74e47772ddefa26ab2f36339be53bd', - 'i686-pc-windows-msvc-0.1.28': '1eddf62f14320c1049294d2aa3ddefc10f8d309a64735e9b06b1a02e587bc134', - 'i686-unknown-linux-gnu-0.1.28': '6f5627bce734f3a4d3fecb20a047346158d166970e38600eb4c2e4381a3749d6', - 'i686-unknown-linux-musl-0.1.28': '411d3c65c0fe26abc5d6fdc81b3fa5b8a9baf4b431897a52c840779ff1483cd4', - 'powerpc64-unknown-linux-gnu-0.1.28': '39cbd9850e5f40eee31d72403321e00faea9179406d6a670db79b3698eaadf8f', - 'powerpc64le-unknown-linux-gnu-0.1.28': '5a32ff73dbbb335a4b30326ff40b731ce91118d8c792967e274bf43c8811ddc9', - 's390x-unknown-linux-gnu-0.1.28': '09b41889c9a2c6735f8e8106c31570840ada321c7e574c4e9180ef8e4670f6bc', - 'x86_64-apple-darwin-0.1.28': 'a126c460b6cb471c5a9df400773a1e918fdb481db13ce56d072feb5487cb13e8', - 'x86_64-pc-windows-msvc-0.1.28': '5ef7961cf2f35e6df6029c7c83ca3fd08042c9c8b2c692cdeccb19c2a19eb7a6', - 'x86_64-unknown-linux-gnu-0.1.28': '8047abff126ceb1a0e6c3e4f7a6420568e3421b485533f22f30767302ebae235', - 'x86_64-unknown-linux-musl-0.1.28': '2c50282284cf8fdbfa605f6c7c7f2c407be858cc1d36c545571d302da24480c8', - 'undefined-0.1.27': 'ca9be4a2ba3ed1bbe4f91530fd65f44e704f968f12c80728d755712f7e5c9d18', - 'aarch64-apple-darwin-0.1.27': 'c805ff702e7b5557277154e5d97b0456c811475a704590de8f4e14679efd276b', - 'aarch64-unknown-linux-gnu-0.1.27': 'ab1eb8b6e1f7ff05083a03811e33dac1324b20d109747be2aa8f8503800a949b', - 'aarch64-unknown-linux-musl-0.1.27': '7c07173dede199d35061e53827901808dd3cee423ff983e16cc6f5af3343b145', - 'arm-unknown-linux-musleabihf-0.1.27': 'ee63d702ddba49e41ecb4073c1ccb75199d61f805b749b9c240c7ae706e641b6', - 'armv7-unknown-linux-gnueabihf-0.1.27': '8a0d62408d061c240fd2db5a50424eae1b37868dbfef9693d8aac2604755a327', - 'armv7-unknown-linux-musleabihf-0.1.27': '3082a815c196f75d80b7104268d6d0c7eb188445fbf5a556d744fd07c371ff94', - 'i686-pc-windows-msvc-0.1.27': '159ae0ab972533827a8a1374145506dc7c761e41f932318b90c5f704d04b6579', - 'i686-unknown-linux-gnu-0.1.27': '1e44735218fec4f95abe3b113c1f7001255a8867166bb007b051f2c930fe0ed3', - 'i686-unknown-linux-musl-0.1.27': '7cc8aab8f6893736847a39075986ed35acc30f75c943202381e287dc3d5a78da', - 'powerpc64-unknown-linux-gnu-0.1.27': 'e12e774e4caee36410362bce92ce57f08d438a29178152bc03d097809941b733', - 'powerpc64le-unknown-linux-gnu-0.1.27': '721b6e0dafdd8465d19a22104fc500eb81e9dee1792faba032eec0cea2a9fbca', - 's390x-unknown-linux-gnu-0.1.27': '4e0697704f335912178816063cec97a5d43da5723e029559ffa245ed6fb73b27', - 'x86_64-apple-darwin-0.1.27': 'd2382aa0fa9e42be04bb04132b94765d3f69aeac79c9d4ad3b6066269d0195be', - 'x86_64-pc-windows-msvc-0.1.27': '7e045d7976419e954d8e527f42c27b1726a81ef835747b2b1e4440eb05312b06', - 'x86_64-unknown-linux-gnu-0.1.27': 'ffdea092d716bcce4483b29b52c8a14645f4c12c5aa4c012249963d333a0ca7a', - 'x86_64-unknown-linux-musl-0.1.27': '573115039c44ab9c83990bfe9cffdec0ed3d2ee03ad81bb4c391b5e95dbea50b', - 'undefined-0.1.26': 'b1187944b39dc0426397b1554fb5c6a862fffdcf4ae46254835b6b286e42b4ab', - 'aarch64-apple-darwin-0.1.26': '37e5e9359c6eb943d31ff0082b0ec5327c93b572a2eafedc8266963181dbb1d0', - 'aarch64-unknown-linux-gnu-0.1.26': '17ebc81973124e4c1c0958ce0eeabb541553d74bccad5a055ab2d33dddd4051b', - 'aarch64-unknown-linux-musl-0.1.26': '9bcedf6847f85a687806a63af1c78d81ad86136074519a2de41120cea1d59ba1', - 'arm-unknown-linux-musleabihf-0.1.26': 'b4c4f3acbb11a61074b17c2c3cc18dba861da23cc2f2f512104d4c2710261111', - 'armv7-unknown-linux-gnueabihf-0.1.26': '7c310d13ba517a5cb1e7210b2969a224490d099d2da0012b02613f8448aa7428', - 'armv7-unknown-linux-musleabihf-0.1.26': '1c5900b15c11483d6cc1ecf6aa5c49f5807c2280c8a0333bcd7e47db75635ce0', - 'i686-pc-windows-msvc-0.1.26': '45ad6ac84cf7d4a4195fa96011fb902c7c05221cb65dcb0b84aeeb0194125c76', - 'i686-unknown-linux-gnu-0.1.26': '5f30097ff062c718c40178b904cd654f1259f7ee012db7c102d31af650047602', - 'i686-unknown-linux-musl-0.1.26': '0beb787beb1b8491248977a6407231462b27e47a7678027b3a540bf5f08076b9', - 'powerpc64-unknown-linux-gnu-0.1.26': '576afce4b7a8b8f51b7ac4adb7c93525f6fdf6527e0bbd7a2f0329f3cfb73f89', - 'powerpc64le-unknown-linux-gnu-0.1.26': '98654b9dbf6696391d7362fcf8bb7604afef8e999ffcb645694350e77eb064d8', - 's390x-unknown-linux-gnu-0.1.26': '7ff5028b7939b346ec195443df9f18155501a1829800d70d9b0face999a4db09', - 'x86_64-apple-darwin-0.1.26': '431a180adf346d96b39f3477a4f26b53741819e0fe411c276c2aa07b90b0a4f5', - 'x86_64-pc-windows-msvc-0.1.26': '874ce589229f3423cd2824dbc4fc1af7c933d0dde544d5883fd68012aaa44f7d', - 'x86_64-unknown-linux-gnu-0.1.26': '27e4edfa8f12986430c2f6265653b7fca3dec9cd8709692b7fb353c5c0f4db82', - 'x86_64-unknown-linux-musl-0.1.26': '39738b23bcedb73e51f2010aac87e759d6b31463af40fba27b5e72cfdb42dd95', - 'undefined-0.1.25': 'a5f31208af15c9a4c739abdb04a8daaf4a791c905ec8b95ef4402e7af8d3ccf9', - 'aarch64-apple-darwin-0.1.25': '4971997b9e3abe7fcb6635676db8f3e1d94c4e1939a21024639e6ed08129e512', - 'aarch64-unknown-linux-gnu-0.1.25': '5ab29171ee0b08f2eb3c53416857c4e4737b23fc43ca1e5ec6647e8cd15f94f6', - 'aarch64-unknown-linux-musl-0.1.25': '00b8aa7808e99bb6e8ae07a125f171a4235e3e3f50eb4ac5754bb065ee89df3c', - 'arm-unknown-linux-musleabihf-0.1.25': '24ff2311900171455e909e369e071b419dba3554fa45c01c61e14731f81c936c', - 'armv7-unknown-linux-gnueabihf-0.1.25': 'adf4f27836d7dd8e5fbe243eeb15088a47d0aff30e4ed8f0dee5e098e790efd4', - 'armv7-unknown-linux-musleabihf-0.1.25': 'b4c36a4eec6fb6f03ef3f7df1b19384d8b0132563e28f67422c557c66a0975f7', - 'i686-pc-windows-msvc-0.1.25': 'd647fc906d07c080743b0b0b5eec4e8b40258016b79cff042c47e0ef84464d60', - 'i686-unknown-linux-gnu-0.1.25': '73376185add2a603281bd8d01cca84b9a432228e81d8ab3d801a7493a82d991d', - 'i686-unknown-linux-musl-0.1.25': 'ddf82492c02474371c5cae6bc1dabd6f78c307264a8b494300d9eeda443921c0', - 'powerpc64-unknown-linux-gnu-0.1.25': '730ffc370137f938e3dcfd4a3e93ee3824f159aef94d9e992a4791f485501a86', - 'powerpc64le-unknown-linux-gnu-0.1.25': 'e8a57fcf40cb53dce733fb9d04f0e0284861992a33b92dec057147ef93bbe857', - 's390x-unknown-linux-gnu-0.1.25': 'a8045c20f903ec32fbbecf63555379b36b7ce1f4b678912c251a501fc2690603', - 'x86_64-apple-darwin-0.1.25': '658de1759adad8218253f142959fba74b1857a3b77fe5e9c75497bea6ab61277', - 'x86_64-pc-windows-msvc-0.1.25': '101807a6fa761be68d02849c648007dbc2575c86014dc5b1cc6e3273a1e51440', - 'x86_64-unknown-linux-gnu-0.1.25': '8bcac2c9d93cf39d248e5284a2dce442a239f69923f999bf87ed39ec010e204a', - 'x86_64-unknown-linux-musl-0.1.25': 'd42a18274d064eeb5bc9a14f48b175c7b5d814effd12cd5a32e8c37c1846cda0', - 'undefined-0.1.24': '9a9d91d1a5dcfecf5029931530d417fc3febf4c469d7d7b9567845c4210bb59b', - 'aarch64-apple-darwin-0.1.24': 'e87bdea0fdd29327cc94f4be23e75e1894692423f714ef9afd544c3cef53ebea', - 'aarch64-unknown-linux-gnu-0.1.24': '1799b9fdca185a7efb3abdccdee1a6923c233642d2e84413e1e25bfbdf375db0', - 'aarch64-unknown-linux-musl-0.1.24': 'c22b8089a79ca82897e5eeca2cd8a9122ef1423c9b73bf1a12e46895beb01106', - 'arm-unknown-linux-musleabihf-0.1.24': 'c90fd4f848f5e87de6117c4f2d1ffe32e5b6347c6ba848427f6557451f117e86', - 'armv7-unknown-linux-gnueabihf-0.1.24': '5b729378de4018d9d722bd3daf60c8e0168ebcfbe6ca2a2eb12fb409c8b0979e', - 'armv7-unknown-linux-musleabihf-0.1.24': '8b3184c5339ac0a1221b1c2b43a1a788bcfa483cf99741257be3e54913aaadfe', - 'i686-pc-windows-msvc-0.1.24': '5fd539c4a8b4838e7ccbdc83270e654cf9dc695f6f70063646f7857c05d558fa', - 'i686-unknown-linux-gnu-0.1.24': 'cb8fb04212fab42a5c0886f79d75d578d500676aadfe4549a47b3a880072efb4', - 'i686-unknown-linux-musl-0.1.24': '26c5e68560ee87a017f7ff304da8e38a5b81c8eb6c7c4e866167c14fbdba6421', - 'powerpc64-unknown-linux-gnu-0.1.24': 'dc8af9b4d77af8a2f7969ea717f855733bd33179aa134cfafa8cf53399cbfe58', - 'powerpc64le-unknown-linux-gnu-0.1.24': '216cd6ddbad3d6249e516562df59d786cb98640cfa6e19a62043b86192afa97a', - 's390x-unknown-linux-gnu-0.1.24': '45d2fc92dbbcceb2c64176f5d795bb8259cb3f84b5e5f3b2f3d3809ff4e22531', - 'x86_64-apple-darwin-0.1.24': 'f2cf50777bf50f004271be23d74b29fcefe80b98f0c5c3026c003df33cb3467d', - 'x86_64-pc-windows-msvc-0.1.24': 'c2ac19c64314f45349c1db423b2b246800d9080f023c231a875de1e084e226eb', - 'x86_64-unknown-linux-gnu-0.1.24': '128c23c81dd74f9fa8fe18844b649c0060322ac13e0e1b3a9ceba259b0c10dc6', - 'x86_64-unknown-linux-musl-0.1.24': '8d2eb876a50c8bfd187fbf166dbadd2790ff41cd351a2e9667e43c97567bfdb0', - 'undefined-0.1.23': '5024e379b0f8cdd32a3682dda3bfe228e03876fadc51105af164b7d5f20590c9', - 'aarch64-apple-darwin-0.1.23': '5851419401ceaae8f902cf9f439409e7216abdad4f708fbaedd3d229041aff7c', - 'aarch64-unknown-linux-gnu-0.1.23': 'fd322ad0454ad76ba642fecda02d4e2c12971c6c82affdb36f604b1fc9f3481a', - 'aarch64-unknown-linux-musl-0.1.23': '08bd62cafb09d2aea69baf144eb3d4417c9ec2119f02a69103322def653c6ad6', - 'arm-unknown-linux-musleabihf-0.1.23': '0215ea54d551052e90fe6062e574f6fc3888e57a07b5fd790d48750cae037033', - 'armv7-unknown-linux-gnueabihf-0.1.23': 'fdb7687c0c3a0cd06c1364379f98641fc58481f05edc32f59dc679abbcab79bc', - 'armv7-unknown-linux-musleabihf-0.1.23': '17972bc9dc7d0d987dd9cb05f7be72dfa8f86c1835b9ccd483e762da20e0dc88', - 'i686-pc-windows-msvc-0.1.23': '8a03b0c564c9b7a82e7811b913b6db0502a05a59baffbc7a5453259f5527dd32', - 'i686-unknown-linux-gnu-0.1.23': '4c65c0772e1f6dbf99923c0564314638df36476c43f2cb394092c72cc79e6c65', - 'i686-unknown-linux-musl-0.1.23': '690afb97130c2d916ddb083c2c853765f6cdb477f28c3cc9e197a2ceae2622d2', - 'powerpc64-unknown-linux-gnu-0.1.23': '0a4bb782d4792b0f1f77249f08841ad82a33f9d46d9bc3f76b330bdcf6cf4726', - 'powerpc64le-unknown-linux-gnu-0.1.23': 'bb5cc89be676f9c4e76fa2fc99fbcb9cb9d243f4f27050c115e84ef0824735ff', - 's390x-unknown-linux-gnu-0.1.23': '0e0f8d08ba4378184819bc02b11e52ceea1bb7aadcf5f70c7c4c01b598c9fd3f', - 'x86_64-apple-darwin-0.1.23': '172e1499a0a02770e7b2544921745596d5c3e7b650043460eda0758249342051', - 'x86_64-pc-windows-msvc-0.1.23': 'ad1e99dffc902a3d58589e74180ed4399e59c144bef80cae2027414188f66892', - 'x86_64-unknown-linux-gnu-0.1.23': '81909f58ec476a40998e5ff2b81f8704195140305c8dea58aa041ec1a8e5aa06', - 'x86_64-unknown-linux-musl-0.1.23': '7748461ee4d8922b93843e1850e4dd2defbb1c0b3db8b3c062977637a9d6ffdf', - 'undefined-0.1.22': '20856f7aec12b8c576a8de8a3528de3cdb35789cc3609be580133b59942256c3', - 'aarch64-apple-darwin-0.1.22': '4768499576438c1d7c741b5dc907a5778fd7f52c88555c1eda7288c7c501a0bb', - 'aarch64-unknown-linux-gnu-0.1.22': 'bec340cdf59d2451bb22189289e1cfc799c40073a3b40eea62c1efb69c4f13fd', - 'aarch64-unknown-linux-musl-0.1.22': 'f8e56575b94adfd190807e248eedac0d4ea5298881e67c00c90f9f7b1940393b', - 'arm-unknown-linux-musleabihf-0.1.22': 'e212ab59866890a08f6df8f744e64091609aecbc09eaaa407e70298f0c9fccee', - 'armv7-unknown-linux-gnueabihf-0.1.22': '631d1f8908570a4d0a158de5502f6822ecd80b090f1d71a4642432c988f03097', - 'armv7-unknown-linux-musleabihf-0.1.22': 'bc10728ced9bbd5e95b7b55e87e7bdd5c3ed5784ce15350edc99638e9a4220f4', - 'i686-pc-windows-msvc-0.1.22': 'e2620f54e81e89071c9bec1bb3ee2c20856a47290b940965a1c2a8f172a44e69', - 'i686-unknown-linux-gnu-0.1.22': '869b6b8587f5fde32dade9ecc1eabbf0a2c41395d0d5936ad7e0ac3d5d3539db', - 'i686-unknown-linux-musl-0.1.22': '7453ffa73990121103a0cec73ba1cfdb16141276c13925a6e043dd70f35381c1', - 'powerpc64-unknown-linux-gnu-0.1.22': '859f3bef8acadaa80c653748dfcb71bae18cc00024c4b74b28a6a3a9b8e058d1', - 'powerpc64le-unknown-linux-gnu-0.1.22': 'd39570a41d46206ef04eb2e258e6d005db9cfb797f44cc810001341eb5d46076', - 's390x-unknown-linux-gnu-0.1.22': '46a306e508b48b3ba404ea10cf13ec18a44caa8851d1ef8e7cad90ac0d665d03', - 'x86_64-apple-darwin-0.1.22': 'a46107c1844b21b96b6ed4c222925bcd8b1429ad24d56a3cf41ecb9732554a5a', - 'x86_64-pc-windows-msvc-0.1.22': '7c597a925a893d6e326d3dbb2971883728968ef815168048896ede472563bc35', - 'x86_64-unknown-linux-gnu-0.1.22': '9c17b11bd3991ae98b5333378127aba0ba51888b6969427259b51fbda6bbf955', - 'x86_64-unknown-linux-musl-0.1.22': '6f80cd8ad79c119ed6882bc9c5b8f860f7e554f87b97830a4ebf1e5b746d5e70', - 'undefined-0.1.21': 'eae4d4641e57ef2eec75d9f76653b8a3a0dc0b91b3dcc8fbbb2ce4456a08fcfe', - 'aarch64-apple-darwin-0.1.21': '1e7788eb132a6e8b1c81829d81cdbb8ba0b26fe098320217284d4af4332fe606', - 'aarch64-unknown-linux-gnu-0.1.21': 'a749bb07a4fb16dfc1942868544043483a233956a882af2944036cd081e54280', - 'aarch64-unknown-linux-musl-0.1.21': '2386ec124440ae73d3a74af4f80685210b2dc7a06266546f21987db557186242', - 'armv7-unknown-linux-gnueabihf-0.1.21': '0a6978192ca8a1a3c0ba9981a946a876c2ab6f06f6e223e79fe77d786b786e67', - 'armv7-unknown-linux-musleabihf-0.1.21': '53ceb4be6f4f036e482c22189c3198f755055725864c38df4cb5928b0e08b0de', - 'i686-pc-windows-msvc-0.1.21': '8713eda354e6dfe9b5d4802c3da111c76210dd7dc671df62fe2fbbfa50522ab8', - 'i686-unknown-linux-gnu-0.1.21': '667846071d7b7dc76d2425270ef569774d18defa59c6ea335c53cca27e1cd3ed', - 'i686-unknown-linux-musl-0.1.21': '531750c37b6aa1694f3e3999dedbe504dd9178196af66db8d9e9412136761143', - 'powerpc64-unknown-linux-gnu-0.1.21': '62713acd9cad5cefc99637f81d995b7d61a900f5a0a15d454ca30ceebd79bae1', - 'powerpc64le-unknown-linux-gnu-0.1.21': '95aad3d08499e9e369d49a02e70ec5ad3502cceedcc08d5de04c490406b1ed90', - 's390x-unknown-linux-gnu-0.1.21': 'f781f57cd8976449e83f7233271021e57646eac516f81c61b284db54759545ab', - 'x86_64-apple-darwin-0.1.21': '02bf25cc3f25c6a70d4c7f40a23c1122aecb0191824e9fedea4814e8295d09e6', - 'x86_64-pc-windows-msvc-0.1.21': 'd453b672f4db4a5fed1d7cefec2696b7c6e534f340da22f2d275b0e093c29e60', - 'x86_64-unknown-linux-gnu-0.1.21': '1926f6112b03934f9e4b5caf14f15dc284e5129d1f8572ec55269afb798ed3a7', - 'x86_64-unknown-linux-musl-0.1.21': '999773834330b6b20174f4486d2ddb19e51dc812291189cfb509aa1e1a3d6b6c', - 'undefined-0.1.20': 'e0ae591d4c14f0cb6b67ca4d64183fec0130e08a623fdaa991ef707f10908865', - 'aarch64-apple-darwin-0.1.20': '7d6b1bb7e4e044a1f04a541703ea9de0df57111dab57863d82602d848556bc23', - 'aarch64-unknown-linux-gnu-0.1.20': '8dc61e683cbcfda8f3584cf3c58a70fb8f574e1b882e5c94c6b6bc3c00eff44f', - 'aarch64-unknown-linux-musl-0.1.20': '9a4337d01191a16cdc875ee8ee19f884e948a2b5ce8b07f8a7ec1672292cc63a', - 'armv7-unknown-linux-gnueabihf-0.1.20': 'aa3ec54087cf351d2016f61ef327eb85117d005b1b6e21027996b7b12e9ce08f', - 'armv7-unknown-linux-musleabihf-0.1.20': '692c438a97afadf193c03ce2de4aee1dc5714ebdb3f8de6a52ed93411927eee4', - 'i686-pc-windows-msvc-0.1.20': 'b20110c34f308608d2061786c334e6004e2e91ec165232689fb6c2a4209889c9', - 'i686-unknown-linux-gnu-0.1.20': 'e1c1d3947fb72d83a6dc1498c0cebf6ec3be4c963543636ce8fe476731ced694', - 'i686-unknown-linux-musl-0.1.20': '035bfabc092e230a89fcacfd7e0e77ce7e70f03c4e76307cbaa80f2036a38829', - 'powerpc64-unknown-linux-gnu-0.1.20': '49ea75ecbcf149991ddb7ccb9401be88852ff0475e60d55d54bcd4abccf6181e', - 'powerpc64le-unknown-linux-gnu-0.1.20': 'a40ccdc8dd695e5b3d767ecec98875615e94ac8cb4c3f81f990c7a619e85fc5d', - 's390x-unknown-linux-gnu-0.1.20': 'b8afa3df67516e9ed86bfd6caf889a21337e20f03f356079e85546ac1912d731', - 'x86_64-apple-darwin-0.1.20': 'baff815f3fe568af2440ae4da23b8a1a97c00c6c2710c980f0b0eaff22002ffd', - 'x86_64-pc-windows-msvc-0.1.20': '9be323847cfab082cb2dfa75a5f42631efcd7c1ffbab96d0f36cd7afef4a0c9a', - 'x86_64-unknown-linux-gnu-0.1.20': '88cc7354f27134acf45df679bd6e529191409183a936a974ead9ff2714c3e6ce', - 'x86_64-unknown-linux-musl-0.1.20': 'db28ca169154ce55ea7356071dbbed94fc5cc94b3564cd58bb458342788ac45e', - 'undefined-0.1.19': 'a0e28df167a8184016b0b8e571eed6d1aeac2cfe63b34e1a26bbb611ebe67657', - 'aarch64-apple-darwin-0.1.19': '1ac97b4bedad801cd5860a83e92e092e9e04246fd7028393ba6b5c2f76fc1dff', - 'aarch64-unknown-linux-gnu-0.1.19': 'c9371f7189f129b01bce0a9923d6067ecd77de57860ec3071f163d7ee247fe45', - 'aarch64-unknown-linux-musl-0.1.19': 'aa56f9002481cc5e3994d1afd61c03b766967946ceafb95d460203369f262eec', - 'armv7-unknown-linux-gnueabihf-0.1.19': '2d832319b08d16df798accec166f257afb5d308f17a93927f1f2e4b9f9b52e92', - 'armv7-unknown-linux-musleabihf-0.1.19': 'bd404945a5f8a46b5b88c2a0fa1f23394cb02cc22c523fb6b248e77c629e6982', - 'i686-pc-windows-msvc-0.1.19': '0c22efc82e8aafd73b1183bebc36f5712df260df6b42b1b4649a16143c1a47bc', - 'i686-unknown-linux-gnu-0.1.19': 'fb85b8910523422ccc81822614dac97cf8f2de258b535c7d177fc5932e64a766', - 'i686-unknown-linux-musl-0.1.19': '559720353183dbcb4c29ed359988159369660b80b41e6bc60b47ee48d74caeec', - 'powerpc64-unknown-linux-gnu-0.1.19': '9bb39a224f870c168a1fe5568a9bb16aa358899fe2a74c8870545c058270cf87', - 'powerpc64le-unknown-linux-gnu-0.1.19': '2c131f1139079ab740f8ab9b24865df3fa1d64d8a2f6608a331915e8ecf071ec', - 's390x-unknown-linux-gnu-0.1.19': 'a8cd88c4a007e7bb6260f8b3a226611a3a509fc37d924af651e41ae9302a41fc', - 'x86_64-apple-darwin-0.1.19': '35a276f51381ba7497a3e1d7fec3c47688f485045d65d8922d7ec30f1da489cb', - 'x86_64-pc-windows-msvc-0.1.19': '41f9663eb2407ad661d0f204dcf479a93257a72be06d36e787b0dea93fcc2e0e', - 'x86_64-unknown-linux-gnu-0.1.19': 'ab187b253f9f7ffb0063e827cf5efbedb0482d013ac619f6b28158941ca8d5f7', - 'x86_64-unknown-linux-musl-0.1.19': '10e5e7f2007f363717a69393c7c4fee3b7ca8f16d1ae7a4e2cbfa67f7bc41bc7', - 'undefined-0.1.18': '87d953dc58d3936c299609b1697b6d17ca85407edc177d293c98bb9451f8e5ff', - 'aarch64-apple-darwin-0.1.18': '1806f3ada6ab943d86aa45a336e690f66b160145fe85f2adb82f3fcaf4eef925', - 'aarch64-unknown-linux-gnu-0.1.18': 'db4eaf43f593b4b7ae8bbd0235e850aa7a18b7e8d8a20141e99866d43967f868', - 'aarch64-unknown-linux-musl-0.1.18': 'bd15842c9b530b544b21597cc2212e2e28b1e18b83a27d344482c9df6800c604', - 'armv7-unknown-linux-gnueabihf-0.1.18': 'c2971d604eea6d3869bab0d7a292d16f5c8167d48f85b22f6c16fe27e947e26f', - 'armv7-unknown-linux-musleabihf-0.1.18': '4875b208471317c9a7212bb4cdab14b0b350ab35a9c21c7481ebbdf09b4983e9', - 'i686-pc-windows-msvc-0.1.18': 'f4e17a94f14bc775dbef4fffc59ce6290e05806e93c348d60e82adc4d9850d51', - 'i686-unknown-linux-gnu-0.1.18': '6a06f1dddfe7dbfe8a09ff2c1d2971204095300edb5bd39ba3b6b289220d52b0', - 'i686-unknown-linux-musl-0.1.18': '12300f65ab5d023e3708327b826de20d7a0451539379fcbf223c6125d221a159', - 'powerpc64-unknown-linux-gnu-0.1.18': 'fd8262bc61f6ca8f051b3f5abe0e5d5f5fb25002d0940760a949d5ed61838a97', - 'powerpc64le-unknown-linux-gnu-0.1.18': '557f836ed5c52678db56a90db9b5ce91396d80ce14ac94141a10eea57c44e693', - 's390x-unknown-linux-gnu-0.1.18': '651f6a6e81939f5e9ed781111f581b71a9ccd3f9dfd269a7d72ffd860d852e58', - 'x86_64-apple-darwin-0.1.18': 'a54f1b97fef0d94834e77bb5c013b26be6e94ce888172c80d671453aa12e3cbd', - 'x86_64-pc-windows-msvc-0.1.18': 'c34cf263728d784ec98eb6bfda4adb2d7e9ab5f649af8e22a05b60253f919668', - 'x86_64-unknown-linux-gnu-0.1.18': '605e49d8dc48081ef8ba32212df2f17f02e531c02de36b5caf417bd97818fc3a', - 'x86_64-unknown-linux-musl-0.1.18': 'ed1e5264e84246f91e1f2dbb642eff24fbce273ded3bac337930a0c6ef9ad6b3', - 'undefined-0.1.17': '7ecfb6fc6c19e3c85cc2ecae0271da16b43bead58b2f0d91fd1c24d1c0f1ae0e', - 'aarch64-apple-darwin-0.1.17': '8f6d1b142dfc4d2040b86a94956eb3c2f5436fd0e889e0d0d1c59dbb8fbbf9de', - 'aarch64-unknown-linux-gnu-0.1.17': 'f2aa28f1f9e35c67eb1f4e20d372eca5474c7421b0f1f416210f6542942c5a26', - 'aarch64-unknown-linux-musl-0.1.17': '34fd79808e301a31b884fe98ef2da209883d00f6253cd75df8966744075599ca', - 'armv7-unknown-linux-gnueabihf-0.1.17': '06ae3888af28eab2827e836acde849b4caa993c302a296e35b7275d16346ecba', - 'armv7-unknown-linux-musleabihf-0.1.17': '95bbff6685491e1c9768bb68e35e8a9973abfa65218fc36404f0ad03ddb9dd06', - 'i686-pc-windows-msvc-0.1.17': '7d90730e88affcc9ef564e75d477fa03d341d6bd0473b7ed8060bd5845a73548', - 'i686-unknown-linux-gnu-0.1.17': '7cb5dc29a6bc9d46758f121007d6ed9bedd0969db30214205a298c2b70805605', - 'i686-unknown-linux-musl-0.1.17': '70167e21f118995d5d64ad653eb17430bda962806b6d2df767773db6b33ba444', - 'powerpc64-unknown-linux-gnu-0.1.17': '40f920c10951a89a967b7d6722c74c88038b8c978e3651d5e99b9a1145604df4', - 'powerpc64le-unknown-linux-gnu-0.1.17': 'e76e43e9eda10c3730e1b36856a510458a708cfab150a888c8a96ca21234de7f', - 's390x-unknown-linux-gnu-0.1.17': 'de8ae6042474e876d1235a09a771a274f848db13c82229bc9d7d63d5c89f8ce6', - 'x86_64-apple-darwin-0.1.17': '957fbe84e1fb1a7e8b43ed4db7bd5ef5ea3b3f996c92144d5eaf6b3e259859cd', - 'x86_64-pc-windows-msvc-0.1.17': 'bd7c736a62f8a102e31a425f4a614de586be30a7c5dbe782bec99c838edd8cdd', - 'x86_64-unknown-linux-gnu-0.1.17': 'add91a881b3de0a2defa6cf363bbbbfb5dc58e85cff52e8164052e86fee73809', - 'x86_64-unknown-linux-musl-0.1.17': 'd793d93fa5eac748c1ca84ae28f1ba3fbe6d0ec4093818f960e8378d3c012c3f', - 'undefined-0.1.16': '8cffa14f967e4900606afb952a1f5efe92e93a550792cd7ba77784fd7a149d0f', - 'aarch64-apple-darwin-0.1.16': '915b89c135b3890f086149cc50019fb6b243a26311dfe69d7f00204fb6035c87', - 'aarch64-unknown-linux-gnu-0.1.16': 'ca18e5b1c9d776130d67e6b7a4f22d14e6abd65c84106fb8b3b2c097bff18f90', - 'aarch64-unknown-linux-musl-0.1.16': '64d8c04ce2b251e34f38f14eeca5d126a05a97bd5734ea77dab2c48a7923921f', - 'armv7-unknown-linux-gnueabihf-0.1.16': '216e542e2c7a22b2325ed7b0f94c1b6491c4dd3297fb595e166f7cce2ea6a0fa', - 'armv7-unknown-linux-musleabihf-0.1.16': 'f886aba91e4a79f07899eb97dbde5ffcbcff93b750fff9ccd6a0361fc97c3fab', - 'i686-pc-windows-msvc-0.1.16': '6dbcc9df5402155a8514b60b07b48d09cb402ee34ed07a2450298d5e75b2ce11', - 'i686-unknown-linux-gnu-0.1.16': 'ea109c8a25ff78e99318af5c0e8ef9348ff64af2ee718345a4a1e87d0e1e4820', - 'i686-unknown-linux-musl-0.1.16': '48f35670fffab656a342201eca3b6c1c0279cab52fc11b5b42fb87df8fff5297', - 'powerpc64-unknown-linux-gnu-0.1.16': '636ecb9fcf40a7e0d970ec0526cbc7803de8800d8f6945fa0005add0334c7770', - 'powerpc64le-unknown-linux-gnu-0.1.16': '2b07b26602e6d39481e3db5cebe3456190d281327590ef03279357d8b05305ee', - 's390x-unknown-linux-gnu-0.1.16': '9db4724da884ff01b394c7499b0520f977d10f20f697f6bb5e9b2e01d50470e2', - 'x86_64-apple-darwin-0.1.16': 'daf6316c3e5e610ed99c1eb054bcf9dcc66f970b96a334f7bf6d4eb0d211736d', - 'x86_64-pc-windows-msvc-0.1.16': '73659c150df62c0c42d8f195763fc270a213383fbcf413f746bb026878fa1d93', - 'x86_64-unknown-linux-gnu-0.1.16': '84b15dbd298969ecf2bffb22a3e1003df085579d53d39a6bb87d5813a14e10f2', - 'x86_64-unknown-linux-musl-0.1.16': '1d76289dea83224d61eb84284f00136a1275234e7537baba44ca3c9e696dab05', - 'undefined-0.1.15': '55d165ea2c9ab28351c0f5f680c21a66bc8b8c7799ac39162ca5044d0e23a3f4', - 'aarch64-apple-darwin-0.1.15': 'df9bab49d9a171bfafb619422ec8c88c0bea930fb69ddd6c8884420b9cf7a13d', - 'aarch64-unknown-linux-gnu-0.1.15': '33c5c5340b0c29381b0dcfc0458194800a74866301fd6f64efb1e77e4491beba', - 'aarch64-unknown-linux-musl-0.1.15': 'ae21b106eb5dd26f76d163613746ae869ff5c6f111aad2a7b482f906a8de81f0', - 'armv7-unknown-linux-gnueabihf-0.1.15': '9bc6769404a17f24340ae39c1b23a495c405644d3c003719145d92596b1559f5', - 'armv7-unknown-linux-musleabihf-0.1.15': '5d678a5a06561c01e8052528186394a45eabcb37595c4540205c292d8d9f2f82', - 'i686-pc-windows-msvc-0.1.15': '84cfd219b31f5cde825d212012652ab326a81d621faf86c08b03b0b85e72ae4c', - 'i686-unknown-linux-gnu-0.1.15': '56ceeb2d72f0ae1fa2852b4951bb0c64c5502472a867532ca157c89e93ade4c2', - 'i686-unknown-linux-musl-0.1.15': '62b821fd3e94190b2f7427a6a805b0b9308e21383a8c3161bc4ab7d777ef40b0', - 'powerpc64-unknown-linux-gnu-0.1.15': 'f06fbd8a50544d9e76d1e0a984a5fc17fcaddf237e28f2874d8a6f01ea5034a0', - 'powerpc64le-unknown-linux-gnu-0.1.15': '14f177d8e9c83356e57f7f3f54c1dcca28f47bd784278436207c6149244ee1d5', - 's390x-unknown-linux-gnu-0.1.15': 'cb714eab80809c6b921c2b4f7b81e2c166c07a75c990032ee6d5e939986beabe', - 'x86_64-apple-darwin-0.1.15': '8cb18f0aa3d61dea3b3d8dc98aaea6b9f1f8677d43db89a0c69b53c86ad6a9c5', - 'x86_64-pc-windows-msvc-0.1.15': 'dfe55955cc7ab137b0dfb186f0e6108f320d79383761d62415ea554167cecb42', - 'x86_64-unknown-linux-gnu-0.1.15': '00a37907aa7985e88584ab4765905b720fa8b9088d1bcae7611c10f398299c5d', - 'x86_64-unknown-linux-musl-0.1.15': '5f7378a55671fa53e32cf5cc8beaf2cca40db95a579faaaa1310399f9329d27c', - 'undefined-0.1.14': '19be86f31cbf3d4c5f7094fc77652c57cd05f70876d22df469d85c52b2108047', - 'aarch64-apple-darwin-0.1.14': '793d267ae803c4c59b9d825bbacd09d4f1a06579567a7ea9aa458e2986b5b778', - 'aarch64-unknown-linux-gnu-0.1.14': 'fd82838503cd540c5a2aebb38b0c539912c858ff6b8e6c4b74b90a190442a0db', - 'aarch64-unknown-linux-musl-0.1.14': 'ef9e8a2cb2a440d8b6b8fddd00f7d7d91b5f060ac8e2142b6ad778a85f00fda5', - 'armv7-unknown-linux-gnueabihf-0.1.14': '03ad6b59053a933de33a4779484ea275fa7e885a8dfe833153eb1cc24b3009ff', - 'armv7-unknown-linux-musleabihf-0.1.14': 'ddebfea1674aeb6534181d034477c39d7ccc15065e34e7c9c4abe1333f5f0890', - 'i686-pc-windows-msvc-0.1.14': '365b29899ee7e83057850fc25e231a33f27671785724b0718bda07fce311de1a', - 'i686-unknown-linux-gnu-0.1.14': 'f3983d685e27a55554b6107d59db017addebacf143daeceaf15f7a81a0286006', - 'i686-unknown-linux-musl-0.1.14': '84f6644fb06ef46478c68e55b367ecfceebbed80c7e3b5e2b8af70d7fdee6c87', - 'powerpc64-unknown-linux-gnu-0.1.14': 'bd21243c9d1679e27ce5d0651cac380521743d20bf996ba146b7a98c9c975dd2', - 'powerpc64le-unknown-linux-gnu-0.1.14': '25f42e9e3fd230e7cc9f416143dd0aa6a5806f306a1abb4d02989edcf938000c', - 's390x-unknown-linux-gnu-0.1.14': '15ce4609be46217639b0b589398bbc6ead801cb42c750b0c734d51e2384e9be1', - 'x86_64-apple-darwin-0.1.14': 'c8d471a0c6f5a710508284cc260005e2d535ecb255b5f2ddc8b362057d8cd80d', - 'x86_64-pc-windows-msvc-0.1.14': 'eba641a900d26feb5158fb131a80bb7bbb4ce4bec71284753345f23f885414f9', - 'x86_64-unknown-linux-gnu-0.1.14': '394c421302ba972fffdd674a0a57f7189d8cc5a728fac8a175027abf833eee59', - 'x86_64-unknown-linux-musl-0.1.14': '3c26c7a3e236d9f5d10aa6f32a8751322e8719812424b0b05ede1023f16dbd52', - 'undefined-0.1.13': '859b13879d2a6f97c3c4d8928cb6a81b067b022b4e5b6c8e75bba099570bd0fe', - 'aarch64-apple-darwin-0.1.13': '9d7a71dbb75dbabcbaace98d06517caa691ec8dab8ecbda3afee44ac9cb1e1c3', - 'aarch64-unknown-linux-gnu-0.1.13': '16429c1a00b0a1fb653ae8a104d5af121bc765f047a7b750f356515c50c226c7', - 'aarch64-unknown-linux-musl-0.1.13': 'c07044d21142e308961c1509975b71f52bc2f298497869ba40aa84fefa3807cd', - 'armv7-unknown-linux-gnueabihf-0.1.13': '7a62ee6b4e669ea1aec3ab05da021e59ae8b226f524fdc610e14cfafc5b513d7', - 'armv7-unknown-linux-musleabihf-0.1.13': '24c717aa7d4b8cc2e0b2378d2b6097adc376cb8422733a0478f0696ef4f2b5a9', - 'i686-pc-windows-msvc-0.1.13': '5e75f004ece194c6c0bbec894f229bae440556c3c43df6d6a33a93b287a6ef96', - 'i686-unknown-linux-gnu-0.1.13': '3a74bace4da3dbdc3f36e7720d7f6bc56098716e7c3e949664b301136fdf3dee', - 'i686-unknown-linux-musl-0.1.13': 'd9c18676b96654a7133cf9a9f1dbfc47b37bf02ba8f7ab9f5f0307a3d6483311', - 'powerpc64-unknown-linux-gnu-0.1.13': '2ffd41af6962f46807f64a44e30c7d5faac3fa8faa1bb1dd65f03cd49e61f66c', - 'powerpc64le-unknown-linux-gnu-0.1.13': '9fcb334fa7d99f732628214f2af386183fccaa7abbf9157df0966b619f741131', - 's390x-unknown-linux-gnu-0.1.13': 'e575fd873988078a20d99346ba0c4964e6fbc322700c8d2541e9fe9e07eee113', - 'x86_64-apple-darwin-0.1.13': 'ad133fc0c67cbe2d578631d77d2f6442626c77a1e144bbda2912b7af9085e91a', - 'x86_64-pc-windows-msvc-0.1.13': 'f61cc5c329abc535248cce0912fe01c20e7c99ae9bead6015842f8c5fd3cdfeb', - 'x86_64-unknown-linux-gnu-0.1.13': '2bfc6a542a3df6af6f56ccd8ec9f1b0596fff62b11650b0bdb830f10ee4e2d64', - 'x86_64-unknown-linux-musl-0.1.13': '5e771e72b3dd42d99a354fc4ce9be047e4d9fc1a653b2f551128a3b4fd533d28', - 'undefined-0.1.12': 'e16d94a2d6365a99d88168175325bc1f9f7e9f72eadb136691150e3fdad4491b', - 'aarch64-apple-darwin-0.1.12': 'c27629967760a84caeae66a130bb4c53dc1da0386122a4e67eeb19a0a163311e', - 'aarch64-unknown-linux-gnu-0.1.12': '84b611afe5b7234585999a9ed2e24b542b8d3cb438595f9564629cae6d6a7580', - 'aarch64-unknown-linux-musl-0.1.12': 'c9abbf7d6c9ebe737e3b881243297eeb6d67b5a8fd458b9d55deb80b29b45fb8', - 'armv7-unknown-linux-gnueabihf-0.1.12': '1b3bd6f3e8d8080481af2c231fb72defd0d0c63eab2e28528ca420cfbc1b71cf', - 'armv7-unknown-linux-musleabihf-0.1.12': 'd74b4a43ddd2601b18e2f4bedd9bcdd84bbd64fba2e4bfb169cda95bbabc88b4', - 'i686-pc-windows-msvc-0.1.12': '6424486541fbdb17c3dd9144e690e3e86c318374342f02db94fc2a369ba31a14', - 'i686-unknown-linux-gnu-0.1.12': '84caece3b6498801a9fca6ae91c341c4287a6f16d3a089199636259b00217bef', - 'i686-unknown-linux-musl-0.1.12': '3daee4d2580054255a78d73eba040a247b1bc1db559726a4be0a4029b9bd1006', - 'powerpc64-unknown-linux-gnu-0.1.12': '588ea9f541451f435eca5811d970e528cf599fc7054d258821f96a87af51eadc', - 'powerpc64le-unknown-linux-gnu-0.1.12': '91c60c49b0309f2f51919a6603eeb03ae32dd7ead8f9f3f390929703577a1ac6', - 's390x-unknown-linux-gnu-0.1.12': '54334b0bf35ef275a092f4567539066d4a25c59de08bee9dcfa1bb3eaa2348b8', - 'x86_64-apple-darwin-0.1.12': '5ce7d6c25e68cb96ed21773fba9bb9cebca81dac70ab7dce86e620eacf547f24', - 'x86_64-pc-windows-msvc-0.1.12': 'c458aa2416bde29315d73356ac34f6639cf55305018bec226c0e310343d6af07', - 'x86_64-unknown-linux-gnu-0.1.12': 'fb1f56e7485b6c94364d11f227107fdc74799e8c91ca5321c35e8a19828d7a72', - 'x86_64-unknown-linux-musl-0.1.12': '3d4fe441702e719156c373caffbfccd75254594113d8e3ef5e43d871fad7c722', - 'undefined-0.1.11': 'ce4fd6fad4986f5ee738455e251825de4094f48c86555e9b4b3adafc1a88ed27', - 'aarch64-apple-darwin-0.1.11': '64e0aeae1d5135684c65e5d41741f1b2eba5c60e574dfef7386712b259066d95', - 'aarch64-unknown-linux-gnu-0.1.11': '56a7edd9bfadab67100bde6aca3012c9d7d8619405ebb360eae50b88ba2c6dff', - 'aarch64-unknown-linux-musl-0.1.11': '0c890bb996c6431149583a402d5bfc3124da92b6e65ec3ee3a961935b06f8cfd', - 'armv7-unknown-linux-gnueabihf-0.1.11': 'd26ac8502154f45e080c8330c58842e33e2330a73937a8f8be0d02f0d20391ee', - 'armv7-unknown-linux-musleabihf-0.1.11': 'b7b3e0ba037f28994bbe99abba47ca2fe651e451c533fa54927ab61d21bacb9f', - 'i686-pc-windows-msvc-0.1.11': '75e74c43bf6aeb3cd83a7b7a1f578c2247c48a03fa421317ca7f27f881c0890e', - 'i686-unknown-linux-gnu-0.1.11': 'f8d63781a8a0d3452f7322268a4bfb3a6e06816b76deafde660d53bbc2d790d9', - 'i686-unknown-linux-musl-0.1.11': 'fef030f0adb05a19072a8a4f042a5e8f55102633653cc092841ab5ea6fef342d', - 'powerpc64-unknown-linux-gnu-0.1.11': 'de28ad908376178c3a66bb71a1e882bca9d30964c068c2d84e26982da5fa12b4', - 'powerpc64le-unknown-linux-gnu-0.1.11': '62454fa7c614b129bfdfebd8ed1928b66e379ba4f3da14750255fcd936890256', - 's390x-unknown-linux-gnu-0.1.11': '75915f9b4efb686247e6524cc467f7d498054915c1aa9888eafc5d3385c3e904', - 'x86_64-apple-darwin-0.1.11': '62f2c6696fdf8bf394662cad54244411b9e96908de9e52b3743955b0d94bd8d4', - 'x86_64-pc-windows-msvc-0.1.11': 'e3e49f27f032c195f01d33df30dff16c9ce7d6ac60512c1af117fc4597d0e632', - 'x86_64-unknown-linux-gnu-0.1.11': '8b1d098549f46814ed40975db6e88aba2eb541196bea54753b08f789b6db8384', - 'x86_64-unknown-linux-musl-0.1.11': 'a74b6e51ccf087f78814eecd449ad759f55a633015d9762f06d134394e6122fa', - 'undefined-0.1.10': 'cf57c25c9b806efdc8f81ff1e66df985513caf28a4508b6399d1e125fabbe359', - 'aarch64-apple-darwin-0.1.10': '1febf66f3377f28d59cedaf16ca08fdf0b18a19dff201ee29cfd4c09b5672a7e', - 'aarch64-unknown-linux-gnu-0.1.10': '88d6b781dfaef6676eb1aae170a8dd18dc0935bb49e6ef4fff0cb33733d3b7ac', - 'aarch64-unknown-linux-musl-0.1.10': 'bc7b0d6bbd58eb6eb00ef0fa3bc4ef2fb54c693c0027bcfec8787259de6ab9e3', - 'armv7-unknown-linux-gnueabihf-0.1.10': 'c3a6624ce92cce721d32327b7354b656272ee593b1fe97ed8221b429b103a353', - 'armv7-unknown-linux-musleabihf-0.1.10': 'b3ac69be2544c280acf6ef4aef660bbc78b000bfe08d46156833031359a3fe8f', - 'i686-pc-windows-msvc-0.1.10': '354b9be42669c2b3e90a3d0e900264fdab89212c0159551a4ef3d2bb273a84a4', - 'i686-unknown-linux-gnu-0.1.10': '665208a455b369b36af3558a2bc75248eb357d54eeaf84b6aa06673c69b7e5ee', - 'i686-unknown-linux-musl-0.1.10': 'd2c152c9192eb565917089a2c5d0b5462d01a3e6799ae9e37fc11f4b32e97291', - 'powerpc64-unknown-linux-gnu-0.1.10': '69ab3b4a36ee75892e4a242fd030dbbe11f8028c84b318196496d8ce2e368fc3', - 'powerpc64le-unknown-linux-gnu-0.1.10': '6d037c45c46ceb8b760c8c80e37b0f9cb5cb194ec0ed152ee6b43b3700a1bd37', - 's390x-unknown-linux-gnu-0.1.10': 'bd2bb41a6efb3df0f8336685708963d37cc019ab6782af2d9f5a0e8e08e5f199', - 'x86_64-apple-darwin-0.1.10': '349e36a0b1806d6760b7529384b94b450dffb0284bf541f50f1b9880a4c40667', - 'x86_64-pc-windows-msvc-0.1.10': 'd2842d27994304c8613a1ef366386f1cc7d15c05fba3c48b5b115ccb4b59a88a', - 'x86_64-unknown-linux-gnu-0.1.10': '94c6a8bdde7151ea9587f866f47f5d376acedd90606c546bac9585d3ad5b4426', - 'x86_64-unknown-linux-musl-0.1.10': 'ff6b01c23bab0333dc258d9decaeddd500d7bcfb3bd6a1c47c12b449e9430bfa', - 'undefined-0.1.9': '5ac47ac172b0d451bb9820174d2b1ddbf1f99a257d512f065735d3a0dec44854', - 'aarch64-apple-darwin-0.1.9': '0b92f201c4f48a54a23074001e490722d8a532043566f3b24fdfddcee5dbbb81', - 'aarch64-unknown-linux-gnu-0.1.9': '51e3791eff68824daf1360631aa2f11f98f3728d5d342cadef191f53e9321c61', - 'aarch64-unknown-linux-musl-0.1.9': '9b00d23f7d7267af182641df08c2c120271164c803f31e9cfb6de62ef1facb87', - 'armv7-unknown-linux-gnueabihf-0.1.9': '8e0c5b9838daf8403dbfc5f6befa54440afbbecc54eddb446265c6db3b3e91ba', - 'armv7-unknown-linux-musleabihf-0.1.9': '0569e3dd62ed50478f1b546d7c32bdfbbf8fc7a9bfd5331794733f89bc1ea114', - 'i686-pc-windows-msvc-0.1.9': '1b6bf7348f81c34912bdf7bf5ff57911849820f198dce12e737f635f87b79cda', - 'i686-unknown-linux-gnu-0.1.9': '3fed572fce343c86737e3912f86dce47a26611b07c86b2ff3be0f4936861a1d3', - 'i686-unknown-linux-musl-0.1.9': 'e3f71bc7566e407c88caa0acf98fd2d7267a0e88ba53ca8d8ebd0018ef1a0ede', - 'powerpc64-unknown-linux-gnu-0.1.9': 'c2918765883475223e63f9281fc43695f311162a5583e21bc20f86dc5bd124d8', - 'powerpc64le-unknown-linux-gnu-0.1.9': '6571b7c86c31db0e0bca2a002566c94a557968fd58b8f9c7d38539b89cac47ce', - 's390x-unknown-linux-gnu-0.1.9': '2c7c5a7409a6ecf47062b29342f4a792c689170d9bea4ae9e3db81c6a134bfd3', - 'x86_64-apple-darwin-0.1.9': 'a2cbd617b00e26d633ce0622b97ef96282e4924d0aef222754412d2c2ab7e625', - 'x86_64-pc-windows-msvc-0.1.9': '0de903c0c36b91dd1d734d61a1677afbd80e6c0db3c91d775ba011d710866c60', - 'x86_64-unknown-linux-gnu-0.1.9': '4c6305655fba53bd68dcecebc622e172c9de369543539428a5449b4c6ee53ec0', - 'x86_64-unknown-linux-musl-0.1.9': '93f43d609bc6298af89519fc2a8ddcdc3a494110f64e7238c6f19639b3a45755', - 'undefined-0.1.8': '6ba549d17d0b699fa4c955cdc482bfd5a89d6ec4c382119ab1937f6d75c6770e', - 'aarch64-apple-darwin-0.1.8': '0993fce3759983899a83d6c2727576a4b35176d97c13d1bcbabd41e91f6147fb', - 'aarch64-unknown-linux-gnu-0.1.8': '6a8a4ffa1e7157563706e1fbb5b42936d94bbe57effab8b62aef06c69234558d', - 'aarch64-unknown-linux-musl-0.1.8': 'f4ae032d4484c5493584b2effc5936627065440eb4c7fa1265b0f5da904f9538', - 'armv7-unknown-linux-gnueabihf-0.1.8': 'eb223bf424c28f7d60f24b1a51a8903746c9020d94fb51c91a62024b5463bf2d', - 'armv7-unknown-linux-musleabihf-0.1.8': 'eb060441259b20e77b6115a483d8505ff44cb358449dbcb3d72b9ae561ff7c11', - 'i686-pc-windows-msvc-0.1.8': '71d40d232f81acac3ec4ffeb9a732ec231945093867eae3b1008ed516f588c3c', - 'i686-unknown-linux-gnu-0.1.8': 'aaf5320b5305621b5ef850e5dcda5e65946443980147015bdf19472ae3ea5360', - 'i686-unknown-linux-musl-0.1.8': 'e68cd09932d18ccde2e48830eb068b5ac01f93d06b0c690f8035b9f3dcf07cd1', - 'powerpc64-unknown-linux-gnu-0.1.8': '3980df97930b76b5b93975321f8662db7f8518229079b383df667e88616afdff', - 'powerpc64le-unknown-linux-gnu-0.1.8': 'c76e9a5e285c8f728853749c2cc0f39480d0b59c4215437df5055ae73a7659fc', - 's390x-unknown-linux-gnu-0.1.8': 'ec5ed3af4632c6c8a23364bc88b2f9f2266602219be0eada354d4ad1d2496067', - 'x86_64-apple-darwin-0.1.8': 'a6f9188e79a95f5220ce27185283d9aba2fc3ea8cdd2abb9d41eda08a9416fb2', - 'x86_64-pc-windows-msvc-0.1.8': 'f7fa2a6ff10c3a0281014acabb463ac5b1ff7b3599b6f91e6f507c0fd52483ea', - 'x86_64-unknown-linux-gnu-0.1.8': '074267e2a2eaed2eb87c3ffc71eb1ce1c21c5594e079ec2f2d5d5ff6815cbdf4', - 'x86_64-unknown-linux-musl-0.1.8': '3d8d92513f85811d1383d74c2b5eeef75002b33f1dfcf48cb46c253c31297cc8', - 'undefined-0.1.7': '9729f66c74df1341f05b8e3ef4b02598caa234c1fdfd834adb7435b3ad7107a9', - 'aarch64-apple-darwin-0.1.7': '020cd34efacc144b7dcd0bd1813ca1e8153cbb281b6fb4506be80714ad2322da', - 'aarch64-unknown-linux-gnu-0.1.7': 'e349b8e6959ec7840178e48bc06be3a6c41c35dabb7243bd7627ad0c8b9b962b', - 'aarch64-unknown-linux-musl-0.1.7': '8fec50377df06f83dab2248f7397de8250e531e24ef2d2f840e74b55469e4d64', - 'armv7-unknown-linux-gnueabihf-0.1.7': 'd07ee44215d486aab894a054576f45efa65cbc45d026785187053aa33f8e195e', - 'armv7-unknown-linux-musleabihf-0.1.7': 'f795784c9d352afbf3b7fdbe2109bbd664c65217e6cdbd55efa00f8c383ed2cd', - 'i686-pc-windows-msvc-0.1.7': '6acf1caed9ebc233a3de1cb9fe2ebf20253e4fa915cda65fa53a53a13c860f13', - 'i686-unknown-linux-gnu-0.1.7': 'a7022f599dfa97fe21c0926c95b24d04379ec364c8210516525c837e7d19ec9d', - 'i686-unknown-linux-musl-0.1.7': '8045ed3acbf3190daebd5acd62e8707add1b0dd40b138cf9e49934eecb8622d8', - 'powerpc64-unknown-linux-gnu-0.1.7': '52245ab38a7f443e2951814ccb253e4aa11d7c183bbe3ffbd352d5afd6b8bd0a', - 'powerpc64le-unknown-linux-gnu-0.1.7': '1ee56598340ea158ffbfcd3b9ae50e30f3802df5554b1537971531a5b4c8fe23', - 's390x-unknown-linux-gnu-0.1.7': '179840bf7c06d0d99dbaca52b02a7d697bc43fb48fdf7327b1f4733511d1dc1d', - 'x86_64-apple-darwin-0.1.7': '4a98413d5edae3117d0c0960be2f91dedd88ca0975583819eb520279bcfae55c', - 'x86_64-pc-windows-msvc-0.1.7': 'aa20b99f4d687fe95e0ad952300648bad9bc581d034f8fe9952bb1ce3272cc6d', - 'x86_64-unknown-linux-gnu-0.1.7': '60175158c359cf247e67b6499feca8d0848c75d95061b7552dd3c5500938ef63', - 'x86_64-unknown-linux-musl-0.1.7': 'd0777ccaf989172b821f7c1a6d2f94b327e527a01ffbd3d5cec1d9d2321ca5db', - 'undefined-0.1.6': '0b1086d16d4fbba5dccb1aed7e8774fbb6d4feccd5cd42efd4509dce521ff698', - 'aarch64-apple-darwin-0.1.6': '3c6f147f2f45d0327803a690722d25ba4c23c4145cf08df971cba161567e448b', - 'aarch64-unknown-linux-gnu-0.1.6': 'de9f62f4fbad55c6b8918006e02c65e9cb871d017263f4f1ec3ebb7b6ca87247', - 'aarch64-unknown-linux-musl-0.1.6': 'e8a5e657a2837c5522a9f6d5c7b20384cdc53f8841c9190d34cfd251a0087385', - 'armv7-unknown-linux-gnueabihf-0.1.6': '324b4645fe37b68a33fdcd292ba026201c3321882f16ca8293decf943c360426', - 'armv7-unknown-linux-musleabihf-0.1.6': 'e4ebba2ab004ea22aa59829bb774230b58e9c750b277a995c3247dcede63ad6f', - 'i686-pc-windows-msvc-0.1.6': '8e6d2180a42c468d72b1ac4bd2b16adfc16021286fe1aae34c27248158fbf25f', - 'i686-unknown-linux-gnu-0.1.6': '332a3a588e95ba99eddbe059d7cf330d98a5d11db4b7d24ef3e9472e046d944b', - 'i686-unknown-linux-musl-0.1.6': '32bd89273ce21fdc064c6bdebcbacc07e74d9ffcd237a2cbdabb522aa5952f7a', - 'powerpc64-unknown-linux-gnu-0.1.6': '7dff85ff980f80915247674288020b9e7050fb42286b73bfa8ea09c6def6aa96', - 'powerpc64le-unknown-linux-gnu-0.1.6': 'ad3c76383c5c61e6510057658d013594bf9c34e0d80484de18b8f864ec4dc752', - 's390x-unknown-linux-gnu-0.1.6': 'b58a9ff37ca400c22844e0e0d4aa691b11417b98afe4077a8f2b468aaadd602a', - 'x86_64-apple-darwin-0.1.6': 'ac26fa53a156385781959487abe5112d5154bc395eaacbdb21e3ceb20ab5b835', - 'x86_64-pc-windows-msvc-0.1.6': '864a4142b671b1f67fa7e853094e83af8a71445463886f74552636ac7aaac985', - 'x86_64-unknown-linux-gnu-0.1.6': '7dc7a615ed6d613ad49d77c0e4a39361a97f43b842e8b14536a00db9671ce5ab', - 'x86_64-unknown-linux-musl-0.1.6': '4d956f457e0f5a2116d4138082f030488865c0c04aa7389a54f4f80ad0868119', - 'undefined-0.1.5': '90eeea76c1c1de3343f97be1f270c990c10193cdea7925a80913cd31aae71d45', - 'aarch64-apple-darwin-0.1.5': 'dc62f02d9684e3453ef62d2b8775323a54d89a446e3dbbd94115e809dbd0aa56', - 'aarch64-unknown-linux-gnu-0.1.5': '23d4ac8e358ef51e436e0dc66f120cf5acb86c1cede69d8ee3bed0864a44efdf', - 'aarch64-unknown-linux-musl-0.1.5': '0b4f963239a69e03ea856e52b474c05be06417961ff7003e06bc0f0db1025f1b', - 'armv7-unknown-linux-gnueabihf-0.1.5': '53778c45a8d95bab74b096bad6e5071b45f7b9d379438c770dbebe119bbf55a6', - 'armv7-unknown-linux-musleabihf-0.1.5': '09a37f4749d1efe473aabe8bf7de3429a92456703741eaa5a41aa85eb3a08f51', - 'i686-pc-windows-msvc-0.1.5': 'a50ef8b67c8f50e73a080dcf8e1b928c266a6c08d5c5ee8485b2b9e5a0cc57d3', - 'i686-unknown-linux-gnu-0.1.5': '8a9b3fa8c50ab85767db7c633589ce8aae6440ce615e3984c96aa2885b97d949', - 'i686-unknown-linux-musl-0.1.5': '16f37509d028e7dcd28679f9b24cfd5a21751531a05c8f79fefdbd385b81403f', - 'powerpc64-unknown-linux-gnu-0.1.5': '2788c0444cb62cf6536f3cec9996ec1eeba9daf9f039176920e5f55e1ee30e8f', - 'powerpc64le-unknown-linux-gnu-0.1.5': '08a4022f73326145ce468cac03169e1970685f0eb9bdb053bf61ec53f6f769ed', - 's390x-unknown-linux-gnu-0.1.5': '3763dd278fe3df1e911cb11fd104327a07dead0e642550ee817e956937da61e2', - 'x86_64-apple-darwin-0.1.5': '3559b67be0cc77a944323bafd5e70de8bd2933613f1825d7980fa0b22ba5f465', - 'x86_64-pc-windows-msvc-0.1.5': '5f3f000d8405d0f93756cefeccca7cf529effc0353d2c694a4b05d79be677ead', - 'x86_64-unknown-linux-gnu-0.1.5': '06e1530ca6dd161d7052a26cd08716276d8d6aee90d6e164cf4e05d4f5694312', - 'x86_64-unknown-linux-musl-0.1.5': '6d290240419ba81e789b458b3d0685bb3cf8c61d725fb43949b554c64a50ce9b', - 'undefined-0.1.4': '1fffbd35b2b8feb57d320b5032cd3972b6dbf99606929dc30b8959aaab1e97cd', - 'aarch64-apple-darwin-0.1.4': '20ddf1a3919664d427d2d5ebb9875d9fef39a9ffd6850c036591235678e42609', - 'aarch64-unknown-linux-gnu-0.1.4': 'd0341732b39688b2464cceecaf617af40898eb80b1093ced778e91d13837e057', - 'aarch64-unknown-linux-musl-0.1.4': 'f05108b90840554a42b3486c1779c283348131093ee459883e3af73c6bff9cd5', - 'armv7-unknown-linux-gnueabihf-0.1.4': '57fd95339e096d1f59641083bc58b42cd8e4b49ac355a40aed2613fbdaf5bafc', - 'armv7-unknown-linux-musleabihf-0.1.4': '9f0a39ce106970b437ab36cd7f04ed9e5790c79632a44c62e7eee3e97fb89fee', - 'i686-pc-windows-msvc-0.1.4': '55619ce61c7b1788cf6c490f45491a11656c1067e2e6e53a759e9eef338538b2', - 'i686-unknown-linux-gnu-0.1.4': 'a3d55664de30d58ba26d34106fea81f2532d73afb47d6812efa884d0726dae39', - 'i686-unknown-linux-musl-0.1.4': 'c08cdb5232797e88c3bcf817ff1d8c47c2096275574391e30417fd2cc3f7976f', - 'powerpc64-unknown-linux-gnu-0.1.4': '80ac83cbe2ee1b3c8632988d45d1e9873bd665d8ce03275f8c67cb8a5c4ffc6d', - 'powerpc64le-unknown-linux-gnu-0.1.4': '35fa6f4234785dd0a7362fe3e4521caddb8aec3645cc6b55fc196f0e22756019', - 's390x-unknown-linux-gnu-0.1.4': '9cfe751e4c0d0db2d3693f777966e2e4b9d01f3651314df87871d5807aa1fd7d', - 'x86_64-apple-darwin-0.1.4': '3b0648dffde1337a592963da1cf1e6167d54cb832128bba2a151b23b260decbc', - 'x86_64-pc-windows-msvc-0.1.4': '0e52e5e2f92599f839d2a69739343d80044fe3593f807c9415729f56cdf59673', - 'x86_64-unknown-linux-gnu-0.1.4': '1eb2f8ba39c231a310e41784980c8085eb747711ad59e430e75975a61a0a7fbf', - 'x86_64-unknown-linux-musl-0.1.4': '04789d4a7f5a50524679b0d7f440566cfe69873448f4128815fab1354d3a0bb0', - 'undefined-0.1.3': '0eeba5a57732dc3b0b81fe0b67f01986aac2580ef27275292b97bc1c48837014', - 'aarch64-apple-darwin-0.1.3': 'f15e35d795cb370f6ae9d4107961acb3e7ab190196d6f6e1243ed8941947dcff', - 'aarch64-unknown-linux-gnu-0.1.3': '51d4d1c9fcd4db37535b8aa75698efcb38aeaf29a35ad969c2b17d099e7b9b89', - 'aarch64-unknown-linux-musl-0.1.3': '3e15d92c271a426b7bd3fa65e5947aa7d91c97202645eb8269fa483d58d49167', - 'armv7-unknown-linux-gnueabihf-0.1.3': '391828d0f9916852650de441d947e059a6a1c47eb2a96fcb4e3fecde385a6878', - 'armv7-unknown-linux-musleabihf-0.1.3': '7361f722e2cf3e8c16017778140be3f27f3a4a4f0167c1f25682a35dc374e8d4', - 'i686-pc-windows-msvc-0.1.3': '50370c13b2b841c9f48d66ee056caf369ed70ccfe465f1a7caa44457af494cdd', - 'i686-unknown-linux-gnu-0.1.3': '3516336206e39ced43d534e7319ed01722af68cba0b7d110921eb62e1db991cf', - 'i686-unknown-linux-musl-0.1.3': '0738d7d3a2e9bb13fcaa4c1001c2af00295f3e2f76441fb34edbb83a6ba0f433', - 'powerpc64-unknown-linux-gnu-0.1.3': 'f5cc9474f9b19d0ad210454eb779b85e2cd3089f0f509da0995f1c90f86ec9cf', - 'powerpc64le-unknown-linux-gnu-0.1.3': '8bd935aa9c9f894e145de738cdd11b97ee8164ac6fee4915d3b5a5d3ac37d121', - 's390x-unknown-linux-gnu-0.1.3': 'c044ef56eb600fff4c734da9912deaf3b20d962679fde9a88eb7de4cc3d77ad5', - 'x86_64-apple-darwin-0.1.3': 'e08524327a9c3ca3f087dcec5fa6ab20c35f3714051034a97ea04eda19e7dc04', - 'x86_64-pc-windows-msvc-0.1.3': 'c37479397b96f1576b08a2bb82d94fb5228918633b4605e0b580feefc5794467', - 'x86_64-unknown-linux-gnu-0.1.3': '785f82659bb563553adc08608abd65475bce99f080fd01e9f5a358d2e8ddb2a6', - 'x86_64-unknown-linux-musl-0.1.3': 'f7355abd4f4013c573d7ae64c0a42986ffc6b08a73ee24e8bff74ee6335136df', - 'undefined-0.1.2': 'ba37d11fcbf801bdacdbffac31817f6be7dc4b11155957e98ed94f65e171c436', - 'aarch64-apple-darwin-0.1.2': '13289f543d96c2506f7c3319e8bbc5fb944c8109374b61188593567dc2dae454', - 'aarch64-unknown-linux-gnu-0.1.2': '5d4a1e82e78080ba308a06ecc408b3f17a13077dd35174031ed37646a4c24bfd', - 'aarch64-unknown-linux-musl-0.1.2': 'c869e839347f2fd9e0302d25470659df99918ad8bdfad2477a61393a32d1a361', - 'armv7-unknown-linux-gnueabihf-0.1.2': '67f6d19583bb24d628c6d3a97fd412a81b0f15f88491b6b244cda2832365d3a3', - 'armv7-unknown-linux-musleabihf-0.1.2': '7acbfaef69adffb9591766c1e6b25b5750ddac8c43bded8b8b6301852b3bb436', - 'i686-pc-windows-msvc-0.1.2': '7c923a8c0198da91094c96fe9bf9f737e09aa67f569b5c0f76b5f492b9394190', - 'i686-unknown-linux-gnu-0.1.2': 'd5462c8746aaf8f36ca43829c6bc71f8ad303bec83d9173f44e1a3ad36d83871', - 'i686-unknown-linux-musl-0.1.2': 'aa85ccbac61b7e8153dd7239f9757ca3a95fb01d0782949f554fd88a396edb29', - 'powerpc64-unknown-linux-gnu-0.1.2': '4055b1ce30f7786fa49fcc9dd7eb3b818aa8903930fc49a42dd11ce99507f8d9', - 'powerpc64le-unknown-linux-gnu-0.1.2': 'd36b4d8c78ad8816a760f2d888d52c732b2eae5d62fc0830e6918a0732361c96', - 's390x-unknown-linux-gnu-0.1.2': '5829510eb1684d2f0f58ddab2e80313e5858d5e5be6e315b9b9a74c9742f6fac', - 'x86_64-apple-darwin-0.1.2': '20777b7f904ec9cf7e4f7ee19fe8a0b64afada1a7168908c14557130768f46b7', - 'x86_64-pc-windows-msvc-0.1.2': '35b7fdb10fad5e644125bfb3d7f5aff83d9aca24268701359e9fef767b8a4a15', - 'x86_64-unknown-linux-gnu-0.1.2': '89624cd11aa20bc4a841bdcb110940ecb9f05555d79c3f8f4758e34d76c5c7ca', - 'x86_64-unknown-linux-musl-0.1.2': 'f69cbd79dfea3bd69c4db064565f9eaebb86db2c0ba0609c090be86366d5db42', - 'undefined-0.1.1': '525a76cf1603007fff9d1909126b2f2d3068b1cfa0e0f20dd41769a5efe87808', - 'aarch64-apple-darwin-0.1.1': 'ff595133104cd486c7d852f68d5fa82bafddc7cedcc5087432fd55f0681af89a', - 'aarch64-unknown-linux-gnu-0.1.1': '4919f30de5b5321df003f4c73cd8d43e6d1b28da2050e221e7b574398a6c48d8', - 'aarch64-unknown-linux-musl-0.1.1': '1a4382a0e417658c531ad4377f3d2ef95c55cd0bf52b9e854b7a46dc7ba679fe', - 'armv7-unknown-linux-gnueabihf-0.1.1': '96f169f7bbc78bcef25f4a36ec51baf9cf2ecb4f3628267ca1cba780e9f4434a', - 'armv7-unknown-linux-musleabihf-0.1.1': '581d354ec9b3504a133863e2a7ffde8bec2cce12f13e9fffed8f8bcfb28e2a24', - 'i686-pc-windows-msvc-0.1.1': 'f8abfe07f7c80e6f0b0bc41b827735e6342bfa14ef302195b23d9d548a3e4827', - 'i686-unknown-linux-gnu-0.1.1': 'b976191b1a507b709e95efee48befbf41df0e31cb882a07d4c9a928070985a68', - 'i686-unknown-linux-musl-0.1.1': 'ee9702c41ad0606c5b811b62acdbc5a82d814ddcf90b6d9e4f337ac6d5692f97', - 'powerpc64-unknown-linux-gnu-0.1.1': '62cbd638e66db9eddfe05a4d21eb9b3c611b81f8f941c0b93bd8e4c0adb80426', - 'powerpc64le-unknown-linux-gnu-0.1.1': 'b0b8107d6f18c9ddfb287a5f25ff01c6b9505aae1e1001be19acfa0c0b024799', - 's390x-unknown-linux-gnu-0.1.1': '5b50e4cadb4e5ab9f2022c976f41c171fb92c4ed57b3366d8b89397d0de4735b', - 'x86_64-apple-darwin-0.1.1': 'dde96aad74a1abd6ba3440eceebca2a5c9f29aecf9178dda0b10d1177cfa3a8d', - 'x86_64-pc-windows-msvc-0.1.1': '2f47b60169f343f0ee64cda77392aab96b77444e52b2e800d881263f33630abe', - 'x86_64-unknown-linux-gnu-0.1.1': 'f9d426e72ae4fccb849cef5e944ab8391accde203966f6e309dcc2505379f341', - 'x86_64-unknown-linux-musl-0.1.1': '05fbfb6d1f46b2fda2bbb916b5e0c5e396dc01e8f5b14cc2a9b46f427539a380', - 'undefined-0.1.0': 'e745f9958b6cf7c413f52d56e4005e0a8809bdc0237d26fd53555948f4fab8d8', - 'aarch64-apple-darwin-0.1.0': '955d8dcb920b0a544f3595ebf35b813912fefedf4e18f8ac6a984a0532f9e35e', - 'aarch64-unknown-linux-gnu-0.1.0': 'fbd2a9edbe98517ba8eb89e8650a411498b5da7b5e6470f3a0cd072bd31f7b79', - 'aarch64-unknown-linux-musl-0.1.0': '492c26b75153aefae58a2f81f4582dc20e2c7b686b284dbb085a7bc0a6270430', - 'armv7-unknown-linux-gnueabihf-0.1.0': '674bf524bcd8b6ed0b9ed42873bcf18af09352ea91777ecec1f1c6bc174f9837', - 'armv7-unknown-linux-musleabihf-0.1.0': '8cfbe423184a860e805dc1b7a2df7b390e0c605cea77ad8dacd8968fca650a41', - 'i686-pc-windows-msvc-0.1.0': '75ae72a862cf609e2141eb5fbd8206cae861e9368c27eff72f34911739cb4a3e', - 'i686-unknown-linux-gnu-0.1.0': '961e44ac4d75e10f64154dcdefa40650767727fba08d73de140b8bb071db0918', - 'i686-unknown-linux-musl-0.1.0': '7db329f27696a0ea70cf36ea6a437eac6ac8740a462d130af1c96fa5c5ae7539', - 'powerpc64-unknown-linux-gnu-0.1.0': '0b5996241dbd3c774bbd76fbb682496367773871787132e3a917f251419ff647', - 'powerpc64le-unknown-linux-gnu-0.1.0': '2d53a5bdf82f26702d5e8db20981b048265040fde49e3e5f1bc8add56ca72ff4', - 's390x-unknown-linux-gnu-0.1.0': 'd9ea9847f045366b428e679d9e44ccce53119f9ed6b2bd167563ef865097695a', - 'x86_64-apple-darwin-0.1.0': 'e8e386f588f8fb1a51e309e89da771febda1dc34e99fce5ebf042211389e7c01', - 'x86_64-pc-windows-msvc-0.1.0': 'd9a55a65d761831e073a9461a3d5f4462203e991b814522f27dad12ddfab0183', - 'x86_64-unknown-linux-gnu-0.1.0': '43a5253b18dee80d3e259dc0df39db39728296d0a506ab89974d3fc15d8e3a16', - 'x86_64-unknown-linux-musl-0.1.0': '9caa5b457d1adbd30b28444bfccb6c789702e3bb260e286d8f3278bd0cb02af6', - 'undefined-0.0.5': '5eaac1dcbcf6e25b7e2cf73aee3c9ced014605bcd3fe055e337e505ece443835', - 'aarch64-apple-darwin-0.0.5': '887f58afbcdb879bcb07a0d5f99106a10b8023d4b104882627a93798629c7ed8', - 'aarch64-unknown-linux-gnu-0.0.5': 'ac9aa3b0ecb1655baafe87be9fdc6e4f904fc7856779e292e8d55d679867f033', - 'aarch64-unknown-linux-musl-0.0.5': 'e7ae701ed98ccbe51ef07345c9721b73afac8e68d0c95f9739e2eb367856bf15', - 'armv7-unknown-linux-gnueabihf-0.0.5': '697804a6c83cf1fcfad284baaf72a7a5d03228759aefeccc191a4ed4d6e2ff89', - 'armv7-unknown-linux-musleabihf-0.0.5': '23d2fa787666ed1b4418d584758789805d0954e36e221ec9d58376b5630d3fcc', - 'i686-pc-windows-msvc-0.0.5': 'ba05493ffbb4b848ac333278471f119c58bff3ff56a4de9c98449c3cde5b27d4', - 'i686-unknown-linux-gnu-0.0.5': 'b867363feedcce39bb6935ad12a597e6474280f69b6c759cc0ee00d0d9859427', - 'i686-unknown-linux-musl-0.0.5': '40e56b614a64d0b2001738f41808f543cd3e43a0bcc4df70d4c28b92376ddf84', - 'powerpc64-unknown-linux-gnu-0.0.5': '0742fd23ced7fafba5ecd580bd47dacd5613acf4b962385909032f1f6d484cb7', - 'powerpc64le-unknown-linux-gnu-0.0.5': 'a7f847c0490388a9f970559ff88f935d83373efda94f9db260cec26aa85f11a8', - 's390x-unknown-linux-gnu-0.0.5': '27fd1a54606ee68d07d5acd2a6000497f43fb1b87203a0c0c92da9cc77007c74', - 'x86_64-apple-darwin-0.0.5': '9a62a8b6d8cefb8716aae62e1deb34df18b4fa6cfc5069c5ef645193c5a9f6c6', - 'x86_64-pc-windows-msvc-0.0.5': '952e3e9ca0e88ad49c516ddaaa6625b0f818b34d83b3ff65f7557c3e07d90c2d', - 'x86_64-unknown-linux-gnu-0.0.5': 'c0f3bc450ffac667dd3c12e2fb221177262d60ccac0521797bb4f4fef14cfad3', - 'x86_64-unknown-linux-musl-0.0.5': '705bbe04a93a9d4d9db5224c2f980a88bba272538a33a78ea2e966f46b4d5eb7' + "undefined-0.4.4": "32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6", + "aarch64-apple-darwin-0.4.4": "3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae", + "aarch64-unknown-linux-gnu-0.4.4": "f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2", + "aarch64-unknown-linux-musl-0.4.4": "803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d", + "arm-unknown-linux-musleabihf-0.4.4": "e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6", + "armv7-unknown-linux-gnueabihf-0.4.4": "fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37", + "armv7-unknown-linux-musleabihf-0.4.4": "9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681", + "i686-pc-windows-msvc-0.4.4": "01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a", + "i686-unknown-linux-gnu-0.4.4": "9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4", + "i686-unknown-linux-musl-0.4.4": "5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa", + "powerpc64-unknown-linux-gnu-0.4.4": "7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744", + "powerpc64le-unknown-linux-gnu-0.4.4": "79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17", + "powerpc64le-unknown-linux-musl-0.4.4": "bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce", + "s390x-unknown-linux-gnu-0.4.4": "a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf", + "x86_64-apple-darwin-0.4.4": "618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f", + "x86_64-pc-windows-msvc-0.4.4": "dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65", + "x86_64-unknown-linux-gnu-0.4.4": "c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b", + "x86_64-unknown-linux-musl-0.4.4": "a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586", + "undefined-0.4.3": "05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554", + "aarch64-apple-darwin-0.4.3": "e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d", + "aarch64-unknown-linux-gnu-0.4.3": "bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801", + "aarch64-unknown-linux-musl-0.4.3": "8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f", + "arm-unknown-linux-musleabihf-0.4.3": "c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0", + "armv7-unknown-linux-gnueabihf-0.4.3": "f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0", + "armv7-unknown-linux-musleabihf-0.4.3": "9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585", + "i686-pc-windows-msvc-0.4.3": "ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0", + "i686-unknown-linux-gnu-0.4.3": "762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa", + "i686-unknown-linux-musl-0.4.3": "8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9", + "powerpc64-unknown-linux-gnu-0.4.3": "b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8", + "powerpc64le-unknown-linux-gnu-0.4.3": "cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710", + "powerpc64le-unknown-linux-musl-0.4.3": "6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3", + "s390x-unknown-linux-gnu-0.4.3": "f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086", + "x86_64-apple-darwin-0.4.3": "bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd", + "x86_64-pc-windows-msvc-0.4.3": "6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e", + "x86_64-unknown-linux-gnu-0.4.3": "af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8", + "x86_64-unknown-linux-musl-0.4.3": "ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333", + "undefined-0.4.2": "98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3", + "aarch64-apple-darwin-0.4.2": "c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e", + "aarch64-unknown-linux-gnu-0.4.2": "19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc", + "aarch64-unknown-linux-musl-0.4.2": "2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4", + "arm-unknown-linux-musleabihf-0.4.2": "9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26", + "armv7-unknown-linux-gnueabihf-0.4.2": "d6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e", + "armv7-unknown-linux-musleabihf-0.4.2": "931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e", + "i686-pc-windows-msvc-0.4.2": "c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6", + "i686-unknown-linux-gnu-0.4.2": "2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2", + "i686-unknown-linux-musl-0.4.2": "b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e", + "powerpc64-unknown-linux-gnu-0.4.2": "61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6", + "powerpc64le-unknown-linux-gnu-0.4.2": "ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6", + "powerpc64le-unknown-linux-musl-0.4.2": "8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f", + "s390x-unknown-linux-gnu-0.4.2": "8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d", + "x86_64-apple-darwin-0.4.2": "4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d", + "x86_64-pc-windows-msvc-0.4.2": "3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c", + "x86_64-unknown-linux-gnu-0.4.2": "56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289", + "x86_64-unknown-linux-musl-0.4.2": "7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d", + "undefined-0.4.1": "bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82", + "aarch64-apple-darwin-0.4.1": "d89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b", + "aarch64-unknown-linux-gnu-0.4.1": "2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694", + "aarch64-unknown-linux-musl-0.4.1": "d9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f", + "arm-unknown-linux-musleabihf-0.4.1": "1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2", + "armv7-unknown-linux-gnueabihf-0.4.1": "19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01", + "armv7-unknown-linux-musleabihf-0.4.1": "d750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92", + "i686-pc-windows-msvc-0.4.1": "7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee", + "i686-unknown-linux-gnu-0.4.1": "ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2", + "i686-unknown-linux-musl-0.4.1": "43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe", + "powerpc64-unknown-linux-gnu-0.4.1": "12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7", + "powerpc64le-unknown-linux-gnu-0.4.1": "13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0", + "powerpc64le-unknown-linux-musl-0.4.1": "c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f", + "s390x-unknown-linux-gnu-0.4.1": "cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181", + "x86_64-apple-darwin-0.4.1": "7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d", + "x86_64-pc-windows-msvc-0.4.1": "a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89", + "x86_64-unknown-linux-gnu-0.4.1": "f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e", + "x86_64-unknown-linux-musl-0.4.1": "f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44", + "undefined-0.4.0": "3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18", + "aarch64-apple-darwin-0.4.0": "33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9", + "aarch64-unknown-linux-gnu-0.4.0": "0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07", + "aarch64-unknown-linux-musl-0.4.0": "5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd", + "arm-unknown-linux-musleabihf-0.4.0": "1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8", + "armv7-unknown-linux-gnueabihf-0.4.0": "b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce", + "armv7-unknown-linux-musleabihf-0.4.0": "38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae", + "i686-pc-windows-msvc-0.4.0": "60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc", + "i686-unknown-linux-gnu-0.4.0": "0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f", + "i686-unknown-linux-musl-0.4.0": "bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690", + "powerpc64-unknown-linux-gnu-0.4.0": "56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124", + "powerpc64le-unknown-linux-gnu-0.4.0": "e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0", + "powerpc64le-unknown-linux-musl-0.4.0": "64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838", + "s390x-unknown-linux-gnu-0.4.0": "d899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da", + "x86_64-apple-darwin-0.4.0": "5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272", + "x86_64-pc-windows-msvc-0.4.0": "2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792", + "x86_64-unknown-linux-gnu-0.4.0": "1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1", + "x86_64-unknown-linux-musl-0.4.0": "033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c", + "undefined-0.3.5": "7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572", + "aarch64-apple-darwin-0.3.5": "a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8", + "aarch64-unknown-linux-gnu-0.3.5": "30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae", + "aarch64-unknown-linux-musl-0.3.5": "012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5", + "arm-unknown-linux-musleabihf-0.3.5": "88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f", + "armv7-unknown-linux-gnueabihf-0.3.5": "ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3", + "armv7-unknown-linux-musleabihf-0.3.5": "1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25", + "i686-pc-windows-msvc-0.3.5": "3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c", + "i686-unknown-linux-gnu-0.3.5": "91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8", + "i686-unknown-linux-musl-0.3.5": "8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966", + "powerpc64-unknown-linux-gnu-0.3.5": "cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12", + "powerpc64le-unknown-linux-gnu-0.3.5": "343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7", + "powerpc64le-unknown-linux-musl-0.3.5": "7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55", + "s390x-unknown-linux-gnu-0.3.5": "b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d", + "x86_64-apple-darwin-0.3.5": "483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c", + "x86_64-pc-windows-msvc-0.3.5": "339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95", + "x86_64-unknown-linux-gnu-0.3.5": "a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db", + "x86_64-unknown-linux-musl-0.3.5": "f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84", + "undefined-0.3.4": "89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d", + "aarch64-apple-darwin-0.3.4": "d00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086", + "aarch64-unknown-linux-gnu-0.3.4": "f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f", + "aarch64-unknown-linux-musl-0.3.4": "743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346", + "arm-unknown-linux-musleabihf-0.3.4": "8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16", + "armv7-unknown-linux-gnueabihf-0.3.4": "2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c", + "armv7-unknown-linux-musleabihf-0.3.4": "9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd", + "i686-pc-windows-msvc-0.3.4": "9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf", + "i686-unknown-linux-gnu-0.3.4": "4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3", + "i686-unknown-linux-musl-0.3.4": "1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd", + "powerpc64-unknown-linux-gnu-0.3.4": "63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158", + "powerpc64le-unknown-linux-gnu-0.3.4": "513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232", + "powerpc64le-unknown-linux-musl-0.3.4": "a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5", + "s390x-unknown-linux-gnu-0.3.4": "4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9", + "x86_64-apple-darwin-0.3.4": "70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23", + "x86_64-pc-windows-msvc-0.3.4": "32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d", + "x86_64-unknown-linux-gnu-0.3.4": "d0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe", + "x86_64-unknown-linux-musl-0.3.4": "c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747", + "undefined-0.3.3": "40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e", + "aarch64-apple-darwin-0.3.3": "a8e6593f5f787823de4c0509af030b0327b536903044c77c9e61941e0032def7", + "aarch64-unknown-linux-gnu-0.3.3": "a0815f3950be714b4d32efacecf32cb33b2857f837fe9cda56b717d69a33851b", + "aarch64-unknown-linux-musl-0.3.3": "47f6794a78e3ae62c27bd19d347b30362f3aa7466eb1767c10bbc5ddd015208e", + "arm-unknown-linux-musleabihf-0.3.3": "90384cd65b755d3e60cbe21c2b991a1ddb03e42649d8598248b782d66fb41135", + "armv7-unknown-linux-gnueabihf-0.3.3": "bf4e8c2d1137959dc2271190e036f9046ea95e82ef3af948ec9bf6a8e4ed4c45", + "armv7-unknown-linux-musleabihf-0.3.3": "92578e0da2b2fff1002a70d217d54b3b1a37be424bbe91b03aa0ee1ec233d54f", + "i686-pc-windows-msvc-0.3.3": "7184333831c6608f395c600ac2bb98890babf38fcea48eee8a9fe5e3a8c81bcb", + "i686-unknown-linux-gnu-0.3.3": "11f0071666d5dd10255c73a80938eb573d7d080203c3f6b7f13ddbc9054cbad9", + "i686-unknown-linux-musl-0.3.3": "de74c76c0c03a2a9638276d46c2fae14d732679a011600e5d361c880124a9aef", + "powerpc64-unknown-linux-gnu-0.3.3": "6bd8a0cb576b49a25f57dc3f602f1caa1e37a60c602d0f170809af78fd66c55d", + "powerpc64le-unknown-linux-gnu-0.3.3": "d9d6db9f3ffcedfd8a29a8f18af3fb09fd639fbdb33c2cb58b2bf5e428942269", + "powerpc64le-unknown-linux-musl-0.3.3": "cd7d6199b1682d0348b3411f094e653e132a2c78ed39424ebc3278f78b51d0e1", + "s390x-unknown-linux-gnu-0.3.3": "bc941ccd12529957eff13882cc8f2f37b5a47a4ab80ea67ba5444778764efec5", + "x86_64-apple-darwin-0.3.3": "be1cdcdee3d91402d259c34b756a42beaafe7bb93567bb5d48c7fdcf799e423b", + "x86_64-pc-windows-msvc-0.3.3": "742f3c5aefd0966c38705b0439641c390aef290e8ea007496ac83fcb825203a6", + "x86_64-unknown-linux-gnu-0.3.3": "729da13410ba857c6e258753c4fabcccc39d32801fea7f5149997e9f88b27b3d", + "x86_64-unknown-linux-musl-0.3.3": "8c7a7bf83bbe25bc5e5d7d41cc5f58148a8b577a298cd91ea9173b4e612bafda", + "undefined-0.3.2": "1aadddb260b5a9f3d44f5832a834b55a6fd1573bb657d62759495dcdbe212507", + "aarch64-apple-darwin-0.3.2": "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218", + "aarch64-unknown-linux-gnu-0.3.2": "6be360abe140f6818844aa3fdf6a3d004b2337b9c240be77c348bcf1f032e877", + "aarch64-unknown-linux-musl-0.3.2": "65735e2776fae9ee3f4604f6d3c562f1f7cae203e428a6d8824a37379f469d77", + "arm-unknown-linux-musleabihf-0.3.2": "68818f6b349260ae60bae969dfa048f45e4196c74a0639c4b9c3591cc0f56dcf", + "armv7-unknown-linux-gnueabihf-0.3.2": "474b62fbbd461792e224dbc5e883a4bfe23f85aa2e3d45b6f1fda1b5be1ab0f3", + "armv7-unknown-linux-musleabihf-0.3.2": "b66b76824df42c3057a9ed440a2d1630533a8fa1fbab3c99f237cecb0cbafc47", + "i686-pc-windows-msvc-0.3.2": "26ddb27546bb7fc97758aed476938bd4469d9a6698292909b6e7820c48a3eead", + "i686-unknown-linux-gnu-0.3.2": "44b11e3cb4e0e6e51e3a78738fa17da251975434b0d538dd6219fc221b520585", + "i686-unknown-linux-musl-0.3.2": "37a8728fd5125990b4de3468a3f12b7242f336852c5c2b27fe14a81a7df6b579", + "powerpc64-unknown-linux-gnu-0.3.2": "d4f02f9781be8e0bd2dc87481b1aa045cb37f2bb83cef20272a1a506ccffc9a8", + "powerpc64le-unknown-linux-gnu-0.3.2": "6ca624ec97b6f13a65d8d0d4b854634b48e6b7b6f9dcd1433ebb584ee3164fcd", + "powerpc64le-unknown-linux-musl-0.3.2": "7a50bf8228ec8ca60dc5ca1a1aaad4ece43d2ff08e32c0178ac0c5e652126372", + "s390x-unknown-linux-gnu-0.3.2": "b0ffeeba7605cab0058713be4f23a9772f8dcc0218d760ee22635f9caf4c56de", + "x86_64-apple-darwin-0.3.2": "7b54003989387079ca27b8895a11abba7ccae60712641592c81e0edab4c668dd", + "x86_64-pc-windows-msvc-0.3.2": "ee77cedd463673505bf6c060eb8149f3d3965c46090bbf76595d2b05a95e596b", + "x86_64-unknown-linux-gnu-0.3.2": "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd", + "x86_64-unknown-linux-musl-0.3.2": "38d18a40c0bdf02f98f3ee35749c295638be37fb8699aa626ca5c87d0ad42512", + "undefined-0.3.1": "5dce72d45cbbc0b661325e5f585440b977e095b6a29601059f509065f86ff9ae", + "aarch64-apple-darwin-0.3.1": "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8", + "aarch64-unknown-linux-gnu-0.3.1": "6d57e45392f7cffe62853f1f35382e8ac9d52f1061c97ecace28dbf50243e7e1", + "aarch64-unknown-linux-musl-0.3.1": "2465eb291940c51cdf84c68d2a699d4026f7030cdaeb2a4e2801a3c4c0213f19", + "arm-unknown-linux-musleabihf-0.3.1": "dba9127924bd5e809600b1554a8b91f8abde511cbe9ddb5027a9749254c7a531", + "armv7-unknown-linux-gnueabihf-0.3.1": "e95c07dced47f3c6444c66f52378bfbcc0015281bda2ad79d308421a458b5384", + "armv7-unknown-linux-musleabihf-0.3.1": "8c58b4ce189d5e1add276eaaf3d69c77de340cbbe79fec375333de00e4e360dc", + "i686-pc-windows-msvc-0.3.1": "f5d15af65e0782f2459770afacb3ce8c5a4916566399e357c951618edbd27c9d", + "i686-unknown-linux-gnu-0.3.1": "22508ed628b2966ec0cac3264db99337059f8c1cf70c0db0ee88d7d27f3e181f", + "i686-unknown-linux-musl-0.3.1": "223b6920226ff5af37178b0511112d82af6dbcb24dd78230d972a17de6a4a0ae", + "powerpc64-unknown-linux-gnu-0.3.1": "c4eb8e06853c0e1accb6ef7976ee52ffe21631709a3ff63f4a1523ecafd7354d", + "powerpc64le-unknown-linux-gnu-0.3.1": "540aa375abc43c5fcb39e646ab7e3ebc14ebfb95264575c81b8c9c335ab4122f", + "powerpc64le-unknown-linux-musl-0.3.1": "387459fa2cdfa3f9814c8a2de2a864a0be6ce159f76e831cd249f4b659edda5a", + "s390x-unknown-linux-gnu-0.3.1": "b469bd51615edb3ec245b0aeb9338d074a8832856029b331f2a949946e921cd9", + "x86_64-apple-darwin-0.3.1": "8a4fc632bf32b49a08d1994e6a4054b535eb7f0eb85e618f30fae86375b34cab", + "x86_64-pc-windows-msvc-0.3.1": "e57ebd003eee92edfaa909fffec3214aa032590566851edc5ce55824c4aacf8a", + "x86_64-unknown-linux-gnu-0.3.1": "1ad8815d46435ab29923d84717dd0f8ee467be055cff5c4ba1d9855882a6ae19", + "x86_64-unknown-linux-musl-0.3.1": "e9f8396a2c06d6c06c36338b795e2978645c2b3b0e6915537e1860dd0cd951ab", + "undefined-0.3.0": "1f52cb03becdae308666b75ff6b193ca55267a762ecf98d99f8f4cc8cbfe5a5a", + "aarch64-apple-darwin-0.3.0": "232935b3b2c187c4f8dc8bf533875bd7163d06a6fab625a1770689b337cbfded", + "aarch64-unknown-linux-gnu-0.3.0": "27fca2b1fda6870e1e6d376276cf0e7d3ca87b7e5c3062ef1301d9e5266cfa39", + "aarch64-unknown-linux-musl-0.3.0": "55bc78ee396f3b9847d28a83edbeeb557edd78462b782459d95fa9cad86cca5e", + "arm-unknown-linux-musleabihf-0.3.0": "9305f0214f16eda22e72f4dd08c6b980243fe16a43b6efcaf11227efd1aa5d9e", + "armv7-unknown-linux-gnueabihf-0.3.0": "e949eb495b199e6c5853f6b051e3c7db84c044453e443d7b7892aef4eb08f5bd", + "armv7-unknown-linux-musleabihf-0.3.0": "c466e061a8547a669e216321738d02ca5c864eb4ab3feac53a51a681a07cb2d7", + "i686-pc-windows-msvc-0.3.0": "1dbe4b2b9829bb11cdb3ec64e916749f6224f0db0a65bbba69570a8aa1289e2c", + "i686-unknown-linux-gnu-0.3.0": "b5a7fb7e649de9fb0342fd42c3bb1c5e6dd25d96096e08af99caa276fa44dc07", + "i686-unknown-linux-musl-0.3.0": "569ed9ac409ebce382e1583c33705e159bb960e79f9fe58feb9a357676be3607", + "powerpc64-unknown-linux-gnu-0.3.0": "0e075944b22557da941677ff25fa21677cd1eaf8302782dd2c94643494f667e6", + "powerpc64le-unknown-linux-gnu-0.3.0": "6886c917446d6b954eff5c688596a4216e9418560166271eac1caa722847350c", + "powerpc64le-unknown-linux-musl-0.3.0": "560583853792f5e3e4d40594436d5f75cdbc9a4e304d6f781f601b9eeaafbfd1", + "s390x-unknown-linux-gnu-0.3.0": "72b1b81523466a0fbe388bbde0a6926ed0af4884cb46d1e46ed1c0232a076cab", + "x86_64-apple-darwin-0.3.0": "8f3abf9bc7f49ddf85b1ebb4e5a5dd2032b6e7a4492fb5fce4b70ee4a9938733", + "x86_64-pc-windows-msvc-0.3.0": "b8b693699b46d2063cf92ada07671a309f14ccb99b34f9b3f927f7fa08b24c19", + "x86_64-unknown-linux-gnu-0.3.0": "06e38986b2923882ad250ac42c9e5db3295bde33693aa9a63b8d32632daba007", + "x86_64-unknown-linux-musl-0.3.0": "194d2a550af3e334f693f6afd716d66adc90445805e72bfa8108f36714ed7431", + "undefined-0.2.37": "bad5e3e29e3a795a789dfdce52b4ae4c252f95572539b075bc938870e6e7c1df", + "aarch64-apple-darwin-0.2.37": "35786030f926e3d34d186edc0ea3989698e57755852af9ae4b39da5109abcbfa", + "aarch64-unknown-linux-gnu-0.2.37": "ac1b4688074f5a2eab1fbe331e76b5f5766e143a8eac87f64f24379168b971f9", + "aarch64-unknown-linux-musl-0.2.37": "ddec1dd3aced1a209645c0d4c8fc9bd9f3c6a4577c43a854efd6708440f34f14", + "arm-unknown-linux-musleabihf-0.2.37": "d99c5c44ae042249b50720d3979aa5b82f61838ee76474a250ced23c09475a85", + "armv7-unknown-linux-gnueabihf-0.2.37": "3fe173e1e1d2f1bf0196bf8a140f39bc4eee34d16c6f758e552bf2a40f82b579", + "armv7-unknown-linux-musleabihf-0.2.37": "dd5a3225a8f39a4621425079f867decea4638e21d65cc9fc6803f1f6d4e22f6b", + "i686-pc-windows-msvc-0.2.37": "4c024f88c23359f8c0a61a31f93197e1fcc0b6e2ed2ea17733b99494b75078c8", + "i686-unknown-linux-gnu-0.2.37": "a041764c46d872124b4ba390bf1a9263fb52fe1b17cfbd5af85a0deaf66ade1e", + "i686-unknown-linux-musl-0.2.37": "b307f7dd65a3175aee4283603c0107496de14e431614ab10060d89f4c9ceaf31", + "powerpc64-unknown-linux-gnu-0.2.37": "c4bee003a56938110c1e9d1c1843837149f20696c35d148567b1106223f06200", + "powerpc64le-unknown-linux-gnu-0.2.37": "c54213db80c976487f54e5521f73010029da1bcdd22136a52a9976deca30db9e", + "powerpc64le-unknown-linux-musl-0.2.37": "8da6a98b7bec35b6333b33872c641a52070331192da840ea5716fbd182f66e27", + "s390x-unknown-linux-gnu-0.2.37": "5603fbd953a980203c9f6adec0482165a3b8274b2202a9fe46e1ec3168d4386e", + "x86_64-apple-darwin-0.2.37": "13185dd359d6b3c3c0e170711b2939f3512741ec64c436e0bef83813e94a6691", + "x86_64-pc-windows-msvc-0.2.37": "ea51e0dfdc0c1884d116b5a12b589e65bb47d0b2d071d6da4a23f453585be144", + "x86_64-unknown-linux-gnu-0.2.37": "2aa80df3a7120a13fe8cfd0ced688a6285e58c40cfa878e6de817356914df485", + "x86_64-unknown-linux-musl-0.2.37": "a4ec0d06361c27a87111212623559da332382c2ead25c1f4c9386adee9905b62", + "undefined-0.2.36": "6e7e0950c5808eea0bda615ab5d2e9fa517434edc0c17d0766cd47606241c060", + "aarch64-apple-darwin-0.2.36": "89f0f76695ee554cdfae60245667b795ffeac7e4d52c0b7fa90bb46d4cf95d59", + "aarch64-unknown-linux-gnu-0.2.36": "8bbc36002d398b5d9febe93be913d42d2844944451189cad6ff2b844c604f499", + "aarch64-unknown-linux-musl-0.2.36": "921a5c069a74608e63e7292d606b1cf0096ffd0914f28bd825968ac66ab3a77f", + "arm-unknown-linux-musleabihf-0.2.36": "349369041c1c86c69bcbdbc3fa2bb0d03e864a95db5e50ef0c04ee67c4e0d428", + "armv7-unknown-linux-gnueabihf-0.2.36": "42d15ec25a0e04fcda9e6e7501e8cc51d17e593a8758ec76e686381336ec6302", + "armv7-unknown-linux-musleabihf-0.2.36": "eaed31f496ce42bccbe17eab69d36351c67d3832f9c7740e33c34a3edf5c5451", + "i686-pc-windows-msvc-0.2.36": "b8a3fcaf5e66ae916f31d8c1df8a7d32558eb8e852087c6038cc80fb3e04dace", + "i686-unknown-linux-gnu-0.2.36": "1f0515ebd04690b5f09b5a55531eff3595fc778d021bf6b33b5d5dbfdd76ce0a", + "i686-unknown-linux-musl-0.2.36": "07bb7a141abfe23d0fbdf30e0840865671f491228288cd851d943a984ff5982b", + "powerpc64-unknown-linux-gnu-0.2.36": "9ec964f73faa23b52e8022086fbffc8f77dbe346e5a17344967a290c10ea0143", + "powerpc64le-unknown-linux-gnu-0.2.36": "f7cf2055c9048faebd75665487d20a55812e37535c6f8393a97f715f40482433", + "powerpc64le-unknown-linux-musl-0.2.36": "03c3221271bbde6333be35e7bdf0576a73165f8f35c48e33cf09b8e14f907718", + "s390x-unknown-linux-gnu-0.2.36": "91788d177f47e3a6db63d5d619f622814b1407b673c311873b4868f223eb2ca5", + "x86_64-apple-darwin-0.2.36": "a8c08a6c978b0ef87c00012d892d936324dc9a6881efefbd028622b69c903aa5", + "x86_64-pc-windows-msvc-0.2.36": "ae6e07bd2c0843a0ffd18959a519c125bcc444d4ad1b71c00e7c3734bed0777e", + "x86_64-unknown-linux-gnu-0.2.36": "6fbea0801c1698d00b2300b220d4f72a4edeb0406877ac6d774f4ff385b6fbe2", + "x86_64-unknown-linux-musl-0.2.36": "d3543c84d8b2da5d8f08b6f2e87e792aa7626c47cb65458c7b92e68e8614d3a8", + "undefined-0.2.35": "19425afc472eb6e7ff6c4abc28ed2582af977aab1b1d7f15db34ec9579ef9095", + "aarch64-apple-darwin-0.2.35": "e07fd0ed3b5e92ce9018f8775aa76cfd891fae8cb0a1627d5a861158fdbbe32a", + "aarch64-unknown-linux-gnu-0.2.35": "41d1a15fbd346ca3b33e8c60e54bc36df11a8e8655e98e25801847c270e1b6f9", + "aarch64-unknown-linux-musl-0.2.35": "b8c920e4d335f09ab032087e0f27b4beda00248577ae708fbebf0362f7b19818", + "arm-unknown-linux-musleabihf-0.2.35": "d50f55d2cdcca7aa7542e73482106fa8413541ad17da47a2a9be612a0b53dc74", + "armv7-unknown-linux-gnueabihf-0.2.35": "322b8564e20a860d5d6e0d9de950f2f0d8204ed7b7a9605f25c0039cb01ac6a4", + "armv7-unknown-linux-musleabihf-0.2.35": "5f2a37d0414c8585770721139fcad061f123f312ca85faebc70f8836bc5b0c30", + "i686-pc-windows-msvc-0.2.35": "2bd193bb68095b21b86a1126a6fe7740a36bd76cdbb606f51b0da6f19214487a", + "i686-unknown-linux-gnu-0.2.35": "44719f49c7e7d634db35d9656f2f168fc13042ab87ee9afe8f04c864a3c341b9", + "i686-unknown-linux-musl-0.2.35": "2cb162263ee067df2a10c3f9c9959835862aebc17402b7e0decff4a0dda30b45", + "powerpc64-unknown-linux-gnu-0.2.35": "31ca8623f79926496f78d335839d13d15c66c7e164804604e8f4535be4f5be19", + "powerpc64le-unknown-linux-gnu-0.2.35": "b1d797f9a9f413f3d3f884accd47a97c84d64145407d458e4442b4d011aa39b6", + "powerpc64le-unknown-linux-musl-0.2.35": "fc7e73e1af403cb91a0b4d6bb3d133facf93d0c28c188bdb5f9294d4e1e0e657", + "s390x-unknown-linux-gnu-0.2.35": "f52ffe9ceb3817df9a999194ab32fb8f997707a44e6597dcede0df238fc14c77", + "x86_64-apple-darwin-0.2.35": "f8159e1977b00cf99e120858253ee675a66669b820e63af7f7e7e91cf6a3b9da", + "x86_64-pc-windows-msvc-0.2.35": "1bbb2a9a81f609a5f257ed066e25902bba995ca2ade3cbd4839703ffbd221071", + "x86_64-unknown-linux-gnu-0.2.35": "f1a9bcbcc3e085fb5ee6a79f5778373fe27fa192d95fc47db20c596789dd1b97", + "x86_64-unknown-linux-musl-0.2.35": "bec7f54d33aaff97098157b4893b9d4a93200c2902772cba13d60c266a54d087", + "undefined-0.2.34": "2c8167c6b14738d2d94cc864cbcc5a2f4b45d9136f8cbed348dba937a03927fc", + "aarch64-apple-darwin-0.2.34": "2eebf71aa924d8d977983394c212cb3ad99f6e241e77702822e8f407c8e231e0", + "aarch64-unknown-linux-gnu-0.2.34": "022b805b4d0360e4441fb94262e6a4cdcde9038aabe156242ba833e1ed00e0c3", + "aarch64-unknown-linux-musl-0.2.34": "227cd1dabb4ebb98e51c1b7735fa94dea96e14db7efb2d3d76b48c87a61a3d28", + "arm-unknown-linux-musleabihf-0.2.34": "b71616ec27d83325f0b1f5a801181da201c2bc0c148c20006a40e48adaf2ad6f", + "armv7-unknown-linux-gnueabihf-0.2.34": "5e3ff5bbb4159b7a2f9768caab5bcb692756509566ef52fd5eca129b2e0949b6", + "armv7-unknown-linux-musleabihf-0.2.34": "7366c01e5996b7d5251423ae37bc3646e919b39a0d9f1fbde25e3215134a006f", + "i686-pc-windows-msvc-0.2.34": "34035c24e9c6dcf1164f10fee22e12fd03b329479233986909458df3259cf22f", + "i686-unknown-linux-gnu-0.2.34": "99c3873d4bc3816c383c0e2686de1066be1ca8ff546e29e418e435296df13ae0", + "i686-unknown-linux-musl-0.2.34": "e659c3d71edba36fec7b9d742c5c4c3172a22bc409d713bb2d944a8a916d221c", + "powerpc64-unknown-linux-gnu-0.2.34": "e5b4e6c20f5f79abbc4e9eb3881ea2b1edae1ad747980d7a2e062f3be09478df", + "powerpc64le-unknown-linux-gnu-0.2.34": "125035676a19c335f6c8af34ccf69d5df144183c13649e823cc0959886a11cae", + "powerpc64le-unknown-linux-musl-0.2.34": "728c7750d408d3300437fb79b74b126e5b49382b45b45fa22d49195ebd19b2cc", + "s390x-unknown-linux-gnu-0.2.34": "0da036696c1decfa388ebaf98e779e8085fd2bb76a91128bf2445fe32c84c053", + "x86_64-apple-darwin-0.2.34": "62764007f4553f3677ef86e864097405d1b054e8a62e89f047e545816347491c", + "x86_64-pc-windows-msvc-0.2.34": "d237ebacb6f4a651fbad3af702f29b8262b825e070c87e9020d5164936459393", + "x86_64-unknown-linux-gnu-0.2.34": "cee114bb3c73a4be5066660d71eea1ac996378f567ba69fb7f29c688289245cd", + "x86_64-unknown-linux-musl-0.2.34": "d1d49d2d3e1e2e2ba547b6cad8b1ad279cdbf622fe5b3fe3b6d470d7a06e3c92", + "undefined-0.2.33": "7dbdfb20366d96745ab9e48c0d8bd0a88926f0eef4675876fd45e4ecc3942cb2", + "aarch64-apple-darwin-0.2.33": "a2602b99e71bc04d7eb11df00b87be068727bb47fc415f7fcbd24dae49c947a3", + "aarch64-unknown-linux-gnu-0.2.33": "d4d24e221c5f1c9b0f2bb39b919c933259175bb9db37845a92d31bf241f28035", + "aarch64-unknown-linux-musl-0.2.33": "9d4ba96eee49b9483fd55ab1b376ed4b9f88f0f9d155c0e48e7280d3cc388d4e", + "arm-unknown-linux-musleabihf-0.2.33": "9940e8f34a702e6944ce953208c1abac7bc9fcbe8348dd76c3b5eb62c1125126", + "armv7-unknown-linux-gnueabihf-0.2.33": "08b9a84370acc5ea1631a8fff94bf7522305612da3c24c612fc1d4fb5ecd3839", + "armv7-unknown-linux-musleabihf-0.2.33": "fa5a2cdd3714a2f4b8d6f64c86b988e6c7189d67411814a6c20905992201d16c", + "i686-pc-windows-msvc-0.2.33": "69c5d28aa75d0ce3fa5466736e2e156db48514cd7c9c44e6bc6515994944695d", + "i686-unknown-linux-gnu-0.2.33": "176caa5100e047b32e84c0c7ce1a31f74610b3f94266f5aa3f86d02417fcdfb6", + "i686-unknown-linux-musl-0.2.33": "f0d93ceced329740403cde3c0e6f44325aee40b5619c3fc855e602f1829bf731", + "powerpc64-unknown-linux-gnu-0.2.33": "7aa9bf5a765801bdfda72b491d716cf08eea7d4821c41698217732a403b7eac2", + "powerpc64le-unknown-linux-gnu-0.2.33": "329aab924d8572d6aa19e2c2e225beb5bcca8bf04e62cc023941aaa06768fd6d", + "powerpc64le-unknown-linux-musl-0.2.33": "1c99451ea9d95732e78bf3c612bce889a1815cf333406857b170986739fda597", + "s390x-unknown-linux-gnu-0.2.33": "095a4b15583e21d521e7954b5da62d5a08b69a08cdfb8847b3b5318e054c29ce", + "x86_64-apple-darwin-0.2.33": "0d4a2c20e1d0e06c83a60fac0d85bff46cd5312f146dd0f6bf35b63ae8f7a9fe", + "x86_64-pc-windows-msvc-0.2.33": "c080525062c3d803e63ef493002f234056dd6efe6d0281d86d672510702823d3", + "x86_64-unknown-linux-gnu-0.2.33": "e62a4123e6b77c9dd22f133212f7bac638077ebde73daa20fea3bef3ac51c84c", + "x86_64-unknown-linux-musl-0.2.33": "5f6842bd7a800a83c568b7a2cf18f4d9428e929e7ea91d55cc8d53e0a0c10c42", + "undefined-0.2.32": "b7694bd29041e5315cbd7194253bb865a51369e19897d7b6b303f4d6255477db", + "aarch64-apple-darwin-0.2.32": "5084b7544da648d3467440f87a3f2929ca7c593a311a3b77271b638ca7664f3c", + "aarch64-unknown-linux-gnu-0.2.32": "97879b661787586ab3a747d9a65a0c295d9ed445001b5860f9ff2923ef07d824", + "aarch64-unknown-linux-musl-0.2.32": "b3fff6bb0ae62154c5d17256b40f3d568a7bd7037e4839cb672545b16cd8622f", + "arm-unknown-linux-musleabihf-0.2.32": "9b3957aea729f36d823a59ae0dba033860f5904cb42215d55c7857d2d1fb3340", + "armv7-unknown-linux-gnueabihf-0.2.32": "c3afbf787fa9b2cc8fcfaa74cf0fc723d224d56b514b0851dc0901747b03fbc4", + "armv7-unknown-linux-musleabihf-0.2.32": "33941dd54c28c6b56f105cd198e7ca7ea480676bda71b0c5e31b55a1493c4acb", + "i686-pc-windows-msvc-0.2.32": "7a449bc0fe9326d31ad809c8cfbe19ba2b67b28c9dc631bb6f1696334442d928", + "i686-unknown-linux-gnu-0.2.32": "1c91f7ad89b5697a33906be435fe6b9fad903916096ef61f034257252a8e4c86", + "i686-unknown-linux-musl-0.2.32": "ba1b6775f17d1522a6ba69655bfe792ba0b4c9ed481edec08ee56bd74d0d5368", + "powerpc64-unknown-linux-gnu-0.2.32": "e5e0d7b9ce6db091ccd8b642d11e65205650cb9b02514fdcc9ca35b699cce0f6", + "powerpc64le-unknown-linux-gnu-0.2.32": "60534e2567ee4b84922d4b6e39000a2709bfa7f2cb162c8c0a2274f3c4ccd2d1", + "powerpc64le-unknown-linux-musl-0.2.32": "732bb92926d033e22bf65c671ecca31f5a08f15b696fa944e7f57d70a4823f1f", + "s390x-unknown-linux-gnu-0.2.32": "80420ca075a995f2171b68d6311a304da59461c39594db88d146079f2656b51e", + "x86_64-apple-darwin-0.2.32": "e86f3bd4e7c30b0e4094d1eff520d762fdfac9e55da785db23b0139b675aeda9", + "x86_64-pc-windows-msvc-0.2.32": "1725fafdcc1390574b8682805ec31ebc9287085f562dc7ac6a64b186abaf1b0d", + "x86_64-unknown-linux-gnu-0.2.32": "c676266d23c8dbe7832c44f37832c4e4ecf21781b7b0560bf27b270bedb14462", + "x86_64-unknown-linux-musl-0.2.32": "e7deca89ca4e273c57adc45cd91e83377c74916feb9ece311cc93c8a8ab2c2e5", + "undefined-0.2.31": "81dcedc57262b565ba3f9f6a20d368a2be304bbe845121f849d1c75c6d4b53c9", + "aarch64-apple-darwin-0.2.31": "34938bcc045b35a646aa768d660755e838a23ab224ea3687dc577299da227fb3", + "aarch64-unknown-linux-gnu-0.2.31": "f8d46c40c3f6ff762e5f0408a151f4e2ce97ff878625b0c9bd5ca13f14e576e8", + "aarch64-unknown-linux-musl-0.2.31": "f2bdf2132993b1dfe50ee610e9df2a56cd89f0346d9d8a5cc3275b47c4c5e7a0", + "arm-unknown-linux-musleabihf-0.2.31": "8c4628e19a571ca7480b48c6ea739efeae2abfe08e07fb8f8e7b0f49887af223", + "armv7-unknown-linux-gnueabihf-0.2.31": "8e7879750c682fbd3619ced0770a43afa902865a839cc84fe361bf5a9f55154a", + "armv7-unknown-linux-musleabihf-0.2.31": "051c6f44f5f1607ea5f11d8a73cc91064a29c7293d6d050d2d7ae34c9d1ec680", + "i686-pc-windows-msvc-0.2.31": "382c7007bdfa6f02d436b552fee33d2d2beec5335410b9fe308067c094f95742", + "i686-unknown-linux-gnu-0.2.31": "dcecee22480a73c9a31fcf76cd633ab4c4befb10180e61b1b298e78a85ea7f8a", + "i686-unknown-linux-musl-0.2.31": "990d1ac694f8d4bc31b79a0a64817d0781f0c59a42e57136cf9165dbb7aeab2f", + "powerpc64-unknown-linux-gnu-0.2.31": "3b556388d586f24e37c6e6478b97d4519a402b564b7a70f1ee5f4d86352547ee", + "powerpc64le-unknown-linux-gnu-0.2.31": "c2219e0285a14b8d1dbbcbae750ef9b66a3567e862bec3fc2f55e465941f78fe", + "powerpc64le-unknown-linux-musl-0.2.31": "1756ca439bfcc86b40ed3d987170439212c54118a5741a0af662892817e46f93", + "s390x-unknown-linux-gnu-0.2.31": "98a83bcfdeaff40772f7338538ea8a1b94ae60a94b20e552a80efd0ef4db7add", + "x86_64-apple-darwin-0.2.31": "8674abad2d95099de054c92a9310d95466932176548a57916fb5f1c5674db790", + "x86_64-pc-windows-msvc-0.2.31": "e5779b76db0ae0334221a1dc9956b97dc10969735750777717551397a2b48e31", + "x86_64-unknown-linux-gnu-0.2.31": "351278978126eb9a74c4d735d3ee2191de5cd492fcc1615cc4c1107ad3e632ff", + "x86_64-unknown-linux-musl-0.2.31": "003e8ea52e2b8383009f5d2bc78becc27f6c97bd9f6837140162cc25247a465b", + "undefined-0.2.30": "1961bf9f481364dfd34c2fa1922152d0901f230de444b168f2d7e29c5b48de5d", + "aarch64-apple-darwin-0.2.30": "387f24ebf55f304352bc5fc4638ca251112ab682291a00290de3753a1b5092f7", + "aarch64-unknown-linux-gnu-0.2.30": "3cb0b65d21961dc36044562b9ba9462320e1106bb40f55e5ec03614c83a8fe0d", + "aarch64-unknown-linux-musl-0.2.30": "4b4e5fb2ca63fee674a32ed99e1c371d4dcfe194787c3bddc7bef37b4ae3fd24", + "arm-unknown-linux-musleabihf-0.2.30": "aa68e7f58b1b6b31481f104893f44acdd57ab712f17429f3bb6ba03ac3fee370", + "armv7-unknown-linux-gnueabihf-0.2.30": "355672634f530981171c67c7d99bda999bfd66b4273d0d292ce3f5db25118213", + "armv7-unknown-linux-musleabihf-0.2.30": "b3fa035bb0b493ab7bb65ff4d5c6c6740a8804815acfbd50c718ec03f6876e33", + "i686-pc-windows-msvc-0.2.30": "2ce7b022fab83161cf9b26a8413702ab328c2f01a530a2739712527acd769068", + "i686-unknown-linux-gnu-0.2.30": "6777ab4ee773df50790da19586afe41507dd9b4c69db39e09154cc013e066aa5", + "i686-unknown-linux-musl-0.2.30": "2145948b75e56106618e2b7a9cea916194cca7768c7e83a3e06095e4690f214d", + "powerpc64-unknown-linux-gnu-0.2.30": "7287d8034db3f1e071ea1098f7fc0cf8fd853c7731d37f59e374e9c771d92026", + "powerpc64le-unknown-linux-gnu-0.2.30": "b7c8a829b869e11e64ca9fa1d748b5094e1841c6487f017b70117d826dfe6c46", + "powerpc64le-unknown-linux-musl-0.2.30": "cb83556e2cb6f6d7731c436dd3ad1b048d323622d6d37ecbb3e320d7dd0c6d39", + "s390x-unknown-linux-gnu-0.2.30": "c8f623ad3da4bc425185fc026b52b80a86b796955dc65ccaf67e7a4778bb05c6", + "x86_64-apple-darwin-0.2.30": "4048630dcfca6946dd8b7f2e8ff38dbc54a9e47ae50f9e04a372081c413e0b66", + "x86_64-pc-windows-msvc-0.2.30": "8cae7297892b5cd947fc8dc9ef045dc82c8a3c948413cbc68aa46285b888031c", + "x86_64-unknown-linux-gnu-0.2.30": "572a09703b40680191f4da33ffad2ae57cee93f0007f1eb25b84d241b0b418f2", + "x86_64-unknown-linux-musl-0.2.30": "430aa21ca5c6eea5731dd5f3f8c0a364160a6e2d7153dcc0b3941ecc06947000", + "undefined-0.2.29": "4cc0762718440d622e351871e568dbbd1b4325a0a362bea4158adc81bf81826b", + "aarch64-apple-darwin-0.2.29": "34e214671c640b72e7805ae4802ad774f9e7636d59361b6434f38950af0fc6c3", + "aarch64-unknown-linux-gnu-0.2.29": "ada417de9049b4e16cc4b31de1096e19835bd971569f6462d3c6d24ce75006b9", + "aarch64-unknown-linux-musl-0.2.29": "77607a17959e650fa085a28f74b120db065833957a8306ee458a06e331433a21", + "arm-unknown-linux-musleabihf-0.2.29": "fc91ac746a94ae16bfb1fbb0fff159d9df6e40b7ce67f91dc7ba7984d417912f", + "armv7-unknown-linux-gnueabihf-0.2.29": "9ddfcbac00d7594e3c99ea4a97fe3a63895266a5993ae458e70e05e6834e3247", + "armv7-unknown-linux-musleabihf-0.2.29": "62dc5eb5430aca18e02b0f8b156716bdcda15ff4a7605f4129500d6f18d157d7", + "i686-pc-windows-msvc-0.2.29": "0ff66ebe55fca07d6637b39ff9b9cf8169c726d5c3d3776e232b8cee2b04b22a", + "i686-unknown-linux-gnu-0.2.29": "719d62f7e8e48fb746454c817f8ba094958f673bcef3bfbf0a3fe21b9d9fa296", + "i686-unknown-linux-musl-0.2.29": "c204569e573555810c54cd7fdb96cac3ecc1014d69fb3017b44270413313a212", + "powerpc64-unknown-linux-gnu-0.2.29": "c4e63df2e3843c1fa9919df76d00996ec2f8d733b81f13673c7f09ddc5e8fd85", + "powerpc64le-unknown-linux-gnu-0.2.29": "b18ed91775d1a715f975c91a3b9a16f53b7c5e25ee6d9101493f1091c425edbc", + "powerpc64le-unknown-linux-musl-0.2.29": "7a35b550385b8131561de362d769da1477b3c22a9eb3c9a42f4e758971d56b01", + "s390x-unknown-linux-gnu-0.2.29": "47c3b46b281c46a1379a9ec3e11748e44c33b613582f294f3fb5794270c49d90", + "x86_64-apple-darwin-0.2.29": "8536255454ef7c9875d64baf7616cfdad6ce263270860f34b6ec38f02faffa0d", + "x86_64-pc-windows-msvc-0.2.29": "45456b9383097670a5f05ecb1288f9d6b7f7d84889ae7b6022130feaae834334", + "x86_64-unknown-linux-gnu-0.2.29": "1199ddcaba212d1909d934b7edfe24ee39f6ac60cfce1a558d74d082f9763937", + "x86_64-unknown-linux-musl-0.2.29": "a7529403581edef6e1e34d1b7c321540e526105aedaea1672cb0f37cc1b5da0c", + "undefined-0.2.28": "4d42d64676b09efb34a01c867a6fe2acf9cfe9be8d8886b08177f837bd615234", + "aarch64-apple-darwin-0.2.28": "b84fc81eecdeda15f9cedc1634685104463798903ad2241f46994bec17bdc5be", + "aarch64-unknown-linux-gnu-0.2.28": "103fa6a5e68562376351d174bedb5013dcc52b0a7a27258336b87a7186aa10be", + "aarch64-unknown-linux-musl-0.2.28": "bf23111a512596da533ad21ef94ea1758957f0f12ca9a306b298617affa4db8d", + "arm-unknown-linux-musleabihf-0.2.28": "0b0113d0326fae2e99c9ac6b8a66607f74aadae7e9868149439472fe6c3fabfc", + "armv7-unknown-linux-gnueabihf-0.2.28": "6e50f4f5690f0135b30d0f6e4cbbceec1909bdef10b1996abb42042b6b28c64b", + "armv7-unknown-linux-musleabihf-0.2.28": "ec9bcd417ccd5608d8f6f053b84497204704c6439c04e80ccc9cd4ec379a3fc3", + "i686-pc-windows-msvc-0.2.28": "75de1d50a1f5d19de6794375762ab8afefb0b0c4704d6c599e5af6cee84ad0e3", + "i686-unknown-linux-gnu-0.2.28": "b01214f008a456aef5acd9043fe13ffadd8bc7975912f288a4afc7f26ae1136f", + "i686-unknown-linux-musl-0.2.28": "ded399ffdfda93b56c78a29eb3889f7e8c0700348af73207972940e66fb45c43", + "powerpc64-unknown-linux-gnu-0.2.28": "5e1cda75b920f9478f4711a3420ddad07d2d25b5f7eae93430968a7af57568f4", + "powerpc64le-unknown-linux-gnu-0.2.28": "0b246ecc617ac22c75170bf9db20ba03fee0df46f7adf6b42a3f949f5316e380", + "powerpc64le-unknown-linux-musl-0.2.28": "8928c0ed5e2a5ca68989d823ac813592c25de7c2c2e77c999cb79f50b6c9425f", + "s390x-unknown-linux-gnu-0.2.28": "b865fec71668ab77aee6f6ffc823a3fc4f92ac04d0746755e1fb624fd3fd7f75", + "x86_64-apple-darwin-0.2.28": "52da204e0117cb65471ff2e17b449f69adb6091720e0290721aa2a9d7947f6d6", + "x86_64-pc-windows-msvc-0.2.28": "7635ff298ddfde400e00054ba31d88a139dbfec234578f10376984f3e0aa36e2", + "x86_64-unknown-linux-gnu-0.2.28": "9c6cbe9f7d7b2abcb45e028d82a5986b951af76a587c93c99922ba0e71c7f21c", + "x86_64-unknown-linux-musl-0.2.28": "ba2656952c1dd29e400a9d21a7b923b26f1cc8a4b29468e7c99fa4613034d837", + "undefined-0.2.27": "2dc0595cca3a3167832c87ddb340138fa77e682472791ff9c4bf4ddf39a7364e", + "aarch64-apple-darwin-0.2.27": "d071d3063933e2e98322619bd4318594e84b7f6ce4f6c5c13a2ef424b0704bb7", + "aarch64-unknown-linux-gnu-0.2.27": "c390e4791f3bcb44041d326f6a7aabb2498a610d2b1d28964c3fa8de97fa7dc3", + "aarch64-unknown-linux-musl-0.2.27": "f7ad07f32e01dfdbd6b217c7f6acd7822eb6600d9992d204b93bfa0749bc6b29", + "arm-unknown-linux-musleabihf-0.2.27": "41df51f4a9de2258973c6f0b80d6122475f18909d3905135d9b0defcb0222737", + "armv7-unknown-linux-gnueabihf-0.2.27": "0316c82068bd34faee8a26bff0b85c25951a10fc54bc2ec5bfae64dc00e4a58d", + "armv7-unknown-linux-musleabihf-0.2.27": "8553382a71fbd84e351f732ece7513e1b36a294dfb2949d956a45e389a397b6b", + "i686-pc-windows-msvc-0.2.27": "6183e4fecfe5404dc69d9cc23c248441ba25a21541c8046c8a27b09a63f224b7", + "i686-unknown-linux-gnu-0.2.27": "4def707256649e6ad40ad33c8c00464d163728a969e54baf94f9d8463b4b89d8", + "i686-unknown-linux-musl-0.2.27": "383bdad28c1a571856aee566f37f888c65fa36385d9e0fff50950dd4280d09c3", + "powerpc64-unknown-linux-gnu-0.2.27": "bc7161175d823aa92d27402e137d1753da1a37fb6d2f7fe534e829bf7f9317cf", + "powerpc64le-unknown-linux-gnu-0.2.27": "bd8eb63b1e3de60279c8daa045f3f738f4f533787302fa0199275b8624831f8f", + "powerpc64le-unknown-linux-musl-0.2.27": "9eff96f3761db33e7043cabdc38b5e49011929dc777ee44f1ea3c4747ee07dd9", + "s390x-unknown-linux-gnu-0.2.27": "4a8e46f67995c86e955416907b4b37558f9df6786851e943ae896f22fb6a3bbb", + "x86_64-apple-darwin-0.2.27": "56be1ded925e7c1852f8853f7637942786ae379c0ecdbc88cf101f17f8413129", + "x86_64-pc-windows-msvc-0.2.27": "1ea0b0623c362c47c6d00801e09ddf948cc27cc18200e5390469e279dfb85d29", + "x86_64-unknown-linux-gnu-0.2.27": "224cdff5d82ff7053d1a9bf61e5ae89961d536eb2da8a4a13b93a49a0ab434bf", + "x86_64-unknown-linux-musl-0.2.27": "2fa8e18d3804863c1355ef8b0688530c1a57b1981be69476641a8dc87c812d60", + "undefined-0.2.26": "1ff81cb3c0618cfcde78b67ac1b1267a09ebef69826e20599aa92ed6e57b6321", + "aarch64-apple-darwin-0.2.26": "e99954e3853a367497f66ed5ec1460cbe0c527e5664732eb2407ffc375cb3207", + "aarch64-unknown-linux-gnu-0.2.26": "93595aa21aecddfafb3573db9b83761a33d12f9c20ce38bd0840262fdbcd94f8", + "aarch64-unknown-linux-musl-0.2.26": "824c3a1e4eba63370232998dfb34964afcebd00fc79b4c7b4e9a1c5d749cf08f", + "arm-unknown-linux-musleabihf-0.2.26": "100c1bbb2b5f09b7c2ca0e9ce9b0c36e8870a2f8c536b24a8098b4bb5375edb7", + "armv7-unknown-linux-gnueabihf-0.2.26": "d42cd9db133bb16faa844f46baba52184a3cba5ad6f428bdfb0f3a5d85d01951", + "armv7-unknown-linux-musleabihf-0.2.26": "370e1a42247359f275dd2e68b6e7279b1718f7ce8148492a291c7851effd7291", + "i686-pc-windows-msvc-0.2.26": "ce1118475dfd9636c873b5d135f2f238f522f069955653805def0196ba2c227d", + "i686-unknown-linux-gnu-0.2.26": "81408c83605c95ad7f5431100293970c040a2f78651f8de6269784999c283932", + "i686-unknown-linux-musl-0.2.26": "c6b6dabebbf86c533f75150f67be276d0a934c13db1922597cacc086cd64e6c2", + "powerpc64-unknown-linux-gnu-0.2.26": "7c094b2a084288d586bad962330648c19c02faf421590c1542c4c961db5b28f6", + "powerpc64le-unknown-linux-gnu-0.2.26": "ee28b5db562c13f9262799cd407373734ef4aac229f4436cf4478117ab70d2dc", + "powerpc64le-unknown-linux-musl-0.2.26": "577babbcfaf8ca472286b492164ac49e0209a18a014b93b340be73c563bbb915", + "s390x-unknown-linux-gnu-0.2.26": "f08d8559b2f73c3b112edd8414bcba3a94d0a1bc986099a2d24e4a24ba68ceee", + "x86_64-apple-darwin-0.2.26": "f7dfea29cd87f8e8ad893fc50fbdd06270de392c79fa42f6e9ef8ebb61ce6c5d", + "x86_64-pc-windows-msvc-0.2.26": "7bd19cc12f927dcd29e61ea1ad428d4c7315a01561d05ce32d6f9c09ee5ce972", + "x86_64-unknown-linux-gnu-0.2.26": "f70997db1acf979b626e23236c289bfbf418e17ffd18a7956d8cf44e6f3f5522", + "x86_64-unknown-linux-musl-0.2.26": "aa61951a7101f9de68265425a64ea2320d2ac1857001293274a338becef63180", + "undefined-0.2.25": "71916afae3d93c2147a08324c8455cb4d49a168ceec5123fea7bc4fac5977703", + "aarch64-apple-darwin-0.2.25": "79887e314f1614352852b45aad55bb533b45add7ba239faa50cc0122665a941d", + "aarch64-unknown-linux-gnu-0.2.25": "2d45144527eb5aaa1e073f1046d510b8854f24553bbbf883d0971ac10721a1ce", + "aarch64-unknown-linux-musl-0.2.25": "34fe01cb0ed953aab2584231875b7f112d306955a92d674edcae4632c475bd2f", + "arm-unknown-linux-musleabihf-0.2.25": "368bd210f1ac181879d8394480672243e10710d41fbaaff46d5195a5f13f7ed4", + "armv7-unknown-linux-gnueabihf-0.2.25": "a107c831168cd40131be62193cc9ee8516868542e14d08c649d7767bf74077f8", + "armv7-unknown-linux-musleabihf-0.2.25": "b3e910c7c857dee9436ecce2a5c706a5f70c8e443e10c007a994741d5f0ead54", + "i686-pc-windows-msvc-0.2.25": "4d787b0549b4ded295ada22a5fb6764588bedbcd83e73a1185292c756922dfe8", + "i686-unknown-linux-gnu-0.2.25": "8f16d242447721557bdd8b5a4eb97c06d031e02f5f3acaa6c3a0dbc210fd0bb6", + "i686-unknown-linux-musl-0.2.25": "9c0ab30932a97e8ed1b64a6ddcff313b32eba2a51a46b5aff595df1af5b6b91c", + "powerpc64-unknown-linux-gnu-0.2.25": "f36f267441929b6dc21459a8244b70477877e03ad0a72e5cadce4518f81c141e", + "powerpc64le-unknown-linux-gnu-0.2.25": "2ad2221281afd1f68e8746a0ca630cf2b31d03d017b6bb1dd624975b35a1f70c", + "powerpc64le-unknown-linux-musl-0.2.25": "57ed0874e885ed1318f10d65971ee6fa91365cb958a5f5f0005975e4754782f5", + "s390x-unknown-linux-gnu-0.2.25": "39d33889705863efcbfc08ef840ce7e6b0a823dc9bd5b80f5001f732c0f1d83c", + "x86_64-apple-darwin-0.2.25": "ed21c9ee096bb7306eaf3ff39307461452ace0221a132d45f6919ddd5972949d", + "x86_64-pc-windows-msvc-0.2.25": "7e55a0ae316797723acc2974a658a5aaf0b94ec9ecc90cf62b94da64da223a8f", + "x86_64-unknown-linux-gnu-0.2.25": "7f3396784a504ffb3d2190312b4a7c5330f08906ef22bcf544fe20ecde30081c", + "x86_64-unknown-linux-musl-0.2.25": "c92951cc355ba7de4897d538e8d420c7b32f810945dcd664f55d50a936331629", + "undefined-0.2.24": "5d5a694112d8463c0003cbb295cd29697500c4a0a60920466b0a5c50e43bba2d", + "aarch64-apple-darwin-0.2.24": "49d55dd8a8f2adfb83d1feaee5bf40c20169b411e3809e3455ff0d96bae4f388", + "aarch64-unknown-linux-gnu-0.2.24": "0232b3d2ad506df099ec488b48a7801e7a51118bd6b5c48b081d5d172ee63ea9", + "aarch64-unknown-linux-musl-0.2.24": "56bd0db80905d0f5eeba51aa33872727aa40e3dda65c86a584c095ac05609509", + "arm-unknown-linux-musleabihf-0.2.24": "63d0a438b8ae0e080a5321b668d72a0b40ed9e9f09240592020dc55a39edf762", + "armv7-unknown-linux-gnueabihf-0.2.24": "c2650b42b0211cca495cbb8ccadd200256876cd02f70ce5ccb03e4eb6782c16d", + "armv7-unknown-linux-musleabihf-0.2.24": "51ad3c67b2730040858d59e71b4d3cb8f32e7ef6e1c2b03023cc8518c92c1794", + "i686-pc-windows-msvc-0.2.24": "3995fbf5a09bcdfc54824ccd0969a975844d586a5fe5dc689f0b8d36eec6e5e6", + "i686-unknown-linux-gnu-0.2.24": "dfb662a3dbb7bd1d5da4dbb20805484d8ba7e9d8cc1f6884e737ffdb3106cba2", + "i686-unknown-linux-musl-0.2.24": "ebb6d14796fb172b03f2ed561d68c6a0f7468173dd9c2f34823dc868bed6ee90", + "powerpc64-unknown-linux-gnu-0.2.24": "3d7abf03072c74c6d841979d444add3d44eea3ef2955ea5bf2968549c9ad8b2d", + "powerpc64le-unknown-linux-gnu-0.2.24": "40e3fa0cdb1da02314c998ba0dde02cbc0ef60dfc75eddbe7a51e5bf83e0db28", + "powerpc64le-unknown-linux-musl-0.2.24": "c89746e4807e8a960f681faefc9fcbbc9cf6c261153791f893f90b3ce8b2dc39", + "s390x-unknown-linux-gnu-0.2.24": "ae088d02d3435bf7e7dd15f72ea8b92888a92762cc7d6830a1a8c9f9cb8c1635", + "x86_64-apple-darwin-0.2.24": "dbb918c9d55b99cfe1c995cc330b6b1dac29379e320c35a84e7bc6bc0e0a55f4", + "x86_64-pc-windows-msvc-0.2.24": "a044e2cbdfaaea36d15a7c8091d12e2ae81784329116fdf967a573b792fc1fd5", + "x86_64-unknown-linux-gnu-0.2.24": "24a0c6758a4f533c37193592fd0a9a37a61fb583a4b6abd0bb81b83127d86336", + "x86_64-unknown-linux-musl-0.2.24": "cb91cb5111e9eb4f1be7c4b8e467380e65b41c5f19ad956f613b290deaa838c9", + "undefined-0.2.23": "d5fe4b3aa545d6bc43cb5fb2a27d3f24f53762472d345b06d0d03a2e27614f86", + "aarch64-apple-darwin-0.2.23": "1d41beb151ace9621a0e729d661cfb04d6375bffdaaf0e366d1653576ce3a687", + "aarch64-unknown-linux-gnu-0.2.23": "c35042255239b75d29b9fd4b0845894b91284ed3ff90c2595d0518b4c8902329", + "aarch64-unknown-linux-musl-0.2.23": "60a122ac03b4187ddf716995f5f87838ff0edf9bfac372202c5c05269a32537d", + "arm-unknown-linux-musleabihf-0.2.23": "643666522fb27c45b8cbb12533b57519ede6c1c1a61c1597e9c632888080d55c", + "armv7-unknown-linux-gnueabihf-0.2.23": "2e284e7718176306b0d042a65143ff5b2c6453f33cadc1ebb19aedbb4f70ec95", + "armv7-unknown-linux-musleabihf-0.2.23": "27408e6dcdca9437d7813f7122ef08b2de4e21c90c0c1784c32998dcb9f5ed7c", + "i686-pc-windows-msvc-0.2.23": "8f7e83f5c09320d1ed32dee5773c4c122797c194ce27922cb03889c54d927eac", + "i686-unknown-linux-gnu-0.2.23": "1cbd6066b8e39445f36cc621b982a053a917708bd5f13d1624484677449bd854", + "i686-unknown-linux-musl-0.2.23": "a3e68f5c51efdbc63edfda7f3f830d381964458d46a42b993f8847d4369e0818", + "powerpc64-unknown-linux-gnu-0.2.23": "2644acd3c6fb902b14325a2a60b324bec6617ce90ff73fe4df15d2ca26ca5572", + "powerpc64le-unknown-linux-gnu-0.2.23": "ca16c9456d297e623164e3089d76259c6d70ac40c037dd2068accc3bb1b09d5e", + "powerpc64le-unknown-linux-musl-0.2.23": "ee6596b3241df3884ce77780833051ce4a3700a83e82e1704cb60981db8f8801", + "s390x-unknown-linux-gnu-0.2.23": "55f8c2aa089f382645fce9eed3ee002f2cd48de4696568e7fd63105a02da568c", + "x86_64-apple-darwin-0.2.23": "960d2ae6ec31bcf5da3f66083dedc527712115b97ee43eae903d74a43874fa72", + "x86_64-pc-windows-msvc-0.2.23": "66f80537301c686a801b91468a43dbeb0881bd6d51857078c24f29e5dca8ecf1", + "x86_64-unknown-linux-gnu-0.2.23": "4384db514959beb4de1dcdf7f1f2d5faf664f7180820b0e7a521ef2147e33d1d", + "x86_64-unknown-linux-musl-0.2.23": "c7b80246dad84eadf288c26128f6504fa27529f21091ccf7d5f9450fbc229dd4", + "undefined-0.2.22": "d390a2990caffab099f129a10b0393dab81a7043dbd93d514e05034368e052d5", + "aarch64-apple-darwin-0.2.22": "ed44fcb929f8cef958ed9e6de350d542f7392a43331d3605c4fcbf418e204c5c", + "aarch64-unknown-linux-gnu-0.2.22": "2fa9b4647ac17dcc050abb8ed1547b8c87e3d914bde3e045b51ddc16946a4e57", + "aarch64-unknown-linux-musl-0.2.22": "1855c439577523fd2a3e1afb19712fd80eb59d63c92fa29d24afb7f68c8ba88c", + "arm-unknown-linux-musleabihf-0.2.22": "bba9175deeb797714c629543276a98fb834c58d85d8edce47d28c90e2e600e07", + "armv7-unknown-linux-gnueabihf-0.2.22": "dcb1fcea336bf36bc5880c2ea29e1f32b10296f3b14ff6f3f2ffd8667a2146f7", + "armv7-unknown-linux-musleabihf-0.2.22": "de1a29702d5fc14be20b21e0ba7b513d84f4debe8c5ff49a66ae333060fdd767", + "i686-pc-windows-msvc-0.2.22": "aa5b36bdc88a16c92d5ca93c4a9325bb82eb875507d363ec28cb6e5ee694e8ed", + "i686-unknown-linux-gnu-0.2.22": "00002ada635ce3f17a97a4eca7361eb6ac065db342540dc31e743920a723b92f", + "i686-unknown-linux-musl-0.2.22": "c98fd1af293fb19bdeac03320f83ff328b4575478ca30845f7172e9491c5bb05", + "powerpc64-unknown-linux-gnu-0.2.22": "98dc7f3d818368190389aa008b5873df84a470c40c94f5f339655c50af0cdb89", + "powerpc64le-unknown-linux-gnu-0.2.22": "cb9096be1041b49b09b3f407059bab3a4b68219fc407f05dd441c58b40299c0a", + "powerpc64le-unknown-linux-musl-0.2.22": "4c0d300931775be6069dd5fa095077a639e780b5c890885035df9fb3f4dcbbd7", + "s390x-unknown-linux-gnu-0.2.22": "acdc4f3e01327209883e0578a077a69e46be0a0ce95f53c742d64ac753f93610", + "x86_64-apple-darwin-0.2.22": "cb03b461250b688e39b19feaa0853d842e5d4193e262c9d4db2d15faafc54dcc", + "x86_64-pc-windows-msvc-0.2.22": "6ab3ed27e38e3a2c4a3a4880b87b8d607fa14589860aebbb1a34064d792d54ad", + "x86_64-unknown-linux-gnu-0.2.22": "65cd2e2c3660779f8a1fb02eac488b540d1ae30f3a80a381f8a7859d0b76bf06", + "x86_64-unknown-linux-musl-0.2.22": "8e165482df8590a620bea0411023c4c345f14301b733a9b6f6ca93e730947aba", + "undefined-0.2.21": "29a224acdb53a5478e12260672547e3d84a14c972c64f3e154553ccd813f8400", + "aarch64-apple-darwin-0.2.21": "5b3925fc797bc5e168b5883a5ba2ff6c5751a1c900748c132f01d1ee5c87d24e", + "aarch64-unknown-linux-gnu-0.2.21": "77ff74dcda1e08d757632eee8c6aa3928d1e52dddb460056a0c7224c888d2956", + "aarch64-unknown-linux-musl-0.2.21": "3ae6f0de1698b257052d5b1a05809a0f17db64fb6b1e80ffc64b659840105002", + "arm-unknown-linux-musleabihf-0.2.21": "af4467849e6815b89067b9133dead64d0c912b9d2645a80b0dad575c01ff4912", + "armv7-unknown-linux-gnueabihf-0.2.21": "ec15bee0208d23966a5ae6f2dfd07e38ca8656960a5caf26970d3a91f055e34b", + "armv7-unknown-linux-musleabihf-0.2.21": "5671278eb619ee82615ab8e7be2251763d57d5b210d317d92c40d6bff0c6c418", + "i686-pc-windows-msvc-0.2.21": "7740b290f6efdfc73d24977e4dc86be144865ca92ec106cb8e0b206f7b77b80f", + "i686-unknown-linux-gnu-0.2.21": "ec323eb0b67103da905e24de5c6ee4036da22068c439f098b93d4c206e6764b8", + "i686-unknown-linux-musl-0.2.21": "118a1a3c0484a392ccf9388cd296bdbaa1e8b5479772efd69056ac99119c0aa5", + "powerpc64-unknown-linux-gnu-0.2.21": "0fbf9a1b148b86511a0c167f3dc7e5fd228c784af0d3fe8d8c99e024ed2fa1d5", + "powerpc64le-unknown-linux-gnu-0.2.21": "ff49e7dbd25e98932b5207100916c1d6a6c624a620d37aabbc307bc97be53674", + "powerpc64le-unknown-linux-musl-0.2.21": "29e32e5b7bb5facb8eddec8e9146f3b20074fa73dfd3555c985b79c10d3c55fd", + "s390x-unknown-linux-gnu-0.2.21": "897414d24d13a202a6f9a437408da64cb26e10bbbb5820571e0de2b4d540fa99", + "x86_64-apple-darwin-0.2.21": "92eec02ae5ff8ef4b4070cf6ef787a2ee3bfc6ca910b61669a8615e2149d6595", + "x86_64-pc-windows-msvc-0.2.21": "bf4946c5a8751cc63def72aaa53a9a0c1ca015876b9ec144cc389ef4901dbc4a", + "x86_64-unknown-linux-gnu-0.2.21": "bb6ff8fa0ac1d86a32b1ef615ec52acb5c8230f803146ad4ceeaba8aaa26a787", + "x86_64-unknown-linux-musl-0.2.21": "90b0903364aa45e588ac2b269d70e871180f81df0f7c603d6b17742fccc660b3", + "undefined-0.2.20": "f248835e7b801bfd0dd9e70716257604fa6760cdf92573ae6419dd35ce7a9058", + "aarch64-apple-darwin-0.2.20": "519bd42c022a41187984234a040c3f00a3eb4bcb189f101c0fa48fe70b953357", + "aarch64-unknown-linux-gnu-0.2.20": "b97b67c7f65025729da8194f8b0e21ffbd91a1210fbbc89279dc46d5342a3e4d", + "aarch64-unknown-linux-musl-0.2.20": "bef8bdd253acc9a82269e5574ab4843b0d70a1935235805bb470eae3ceaa2fee", + "arm-unknown-linux-musleabihf-0.2.20": "2caeadb57638fae11cab25094975201d3f8573fe6f752e628b89d61447f7abe4", + "armv7-unknown-linux-gnueabihf-0.2.20": "faa32b09015770fa5a72557a04236a7be61f06bbef77a6707c658be791adf039", + "armv7-unknown-linux-musleabihf-0.2.20": "ba1be06d8aec4b5247b5d09032f37fd4aa8f54acd07b05db18351d61a93e0cf5", + "i686-pc-windows-msvc-0.2.20": "c4430939e934ca8ba2b079138728a22600d32572fe315ac1811f8a40b062534d", + "i686-unknown-linux-gnu-0.2.20": "6c8c4e58391c508eed5f8506257d421f3fe13464fc8672b5995bf6243d46fad5", + "i686-unknown-linux-musl-0.2.20": "4a4f8a73f29362e40e9de94749f988e691665102ca2bd6501f39248735c40647", + "powerpc64-unknown-linux-gnu-0.2.20": "aa557c951623d746ea30b4ae107fc37ce7328196929d5cf38beecf2c1c60555b", + "powerpc64le-unknown-linux-gnu-0.2.20": "1ef60183bf6de0c1da96fa027a8b3847da289222aa4bd5ac81255aa614e36fc7", + "powerpc64le-unknown-linux-musl-0.2.20": "56c880df3b97d2a1c0ac6812ba174d4b7e1362fd256ce8b29f029adabfdaf28c", + "s390x-unknown-linux-gnu-0.2.20": "455863a0850d211aad8c94b61778b2c30cc7d5639ae0d5607549f1d56372f706", + "x86_64-apple-darwin-0.2.20": "41018b406133a2ee5e51d8f35c990999c2bb96ce457864ac9883a0f9dcb49c58", + "x86_64-pc-windows-msvc-0.2.20": "74d2f2c945da68a2aa8f0f277229f3b172c7aec1072cd990d866c25ecbe21410", + "x86_64-unknown-linux-gnu-0.2.20": "bafad50e1b8b8b89083df115cdbad6e991747fd6ecb52ca407d6b5533ddb150f", + "x86_64-unknown-linux-musl-0.2.20": "1c27fd144912433d7f12b58b00eebb80a7ad9a1864b22b1ba41b07b5998a743b", + "undefined-0.2.19": "9186f4961698b35b1812eef5dcd6973accb3eaa980a571c964f6f91ca71da5ff", + "aarch64-apple-darwin-0.2.19": "539f2cb812f0596b3f56d41a92662f6e102094587ff07f0793bd015d21cda54b", + "aarch64-unknown-linux-gnu-0.2.19": "7ba7454ceca1b789e74637b5cc8d1353d6a87ae3985dedd16869c036e3b4d02e", + "aarch64-unknown-linux-musl-0.2.19": "a9932edc68680dc388bf13cb21132f4d0aa13bf9c31c1c1f4febf1415ad51923", + "arm-unknown-linux-musleabihf-0.2.19": "71dedaf8f40e3939b8ad493093584d03046c607cb7e7c155de7eb0c8e0da2830", + "armv7-unknown-linux-gnueabihf-0.2.19": "17b44738383b1a5fe7ad592be61c543048022c09c649759c589a74a00fa3afb5", + "armv7-unknown-linux-musleabihf-0.2.19": "6c287d699c95cffbb30520d27d7b80ce1971b336bd387f72391340acac434c86", + "i686-pc-windows-msvc-0.2.19": "68977cc3fde46c61a80ea451651f3b6789ee2a8cb67a4e5fbfc7db93022d9e1a", + "i686-unknown-linux-gnu-0.2.19": "5ed1da9e25968be4581ff301a9034e8e82f2206686f504734015c348b94333eb", + "i686-unknown-linux-musl-0.2.19": "236c3fde87ee06c2b49372e184f2fca84f82ea3daa36e85ac884f7459b18ebf7", + "powerpc64-unknown-linux-gnu-0.2.19": "9ecdf74c9846c271e78e300f1db8cf3762ace6d9ba1f2e9d6e695cc64fb2e746", + "powerpc64le-unknown-linux-gnu-0.2.19": "fc8bedb7f7b35905fd5e1180466593e2ad35788994f7d61c6605ff985bb61aff", + "powerpc64le-unknown-linux-musl-0.2.19": "a5d1f2b9686ed2466e9e588d8ada686130318015693ef1a7064651347063bd05", + "s390x-unknown-linux-gnu-0.2.19": "6b68ee8a45062e9a6d3be5de5c0fddf49f8669c2b2b897432f0a55e99fed57ea", + "x86_64-apple-darwin-0.2.19": "1b8bd98a1ffb5823b499d914d8fc430b6bb96b3f97bedf06b67c60f084e366ca", + "x86_64-pc-windows-msvc-0.2.19": "b704c9c6e5e18e1c822e44f118902468df76245eca8831c5f8d4dd1223c0fbda", + "x86_64-unknown-linux-gnu-0.2.19": "71132ec5c59ec865d73877f2f7f4ff75cd2f56a93d967c1a91ef797bdc87ff93", + "x86_64-unknown-linux-musl-0.2.19": "6e8a64434d3baf03fd64f58016a9a37b08a8561db6979b807de8feb55d94502d", + "undefined-0.2.18": "5919f79b42997129e5a456bb5910086d0043dda20e505d12f7f57f0a2669ae74", + "aarch64-apple-darwin-0.2.18": "979ddc0aa7b068632bf4c517bbb6d97798b95c54dfeaca9ba653df91989ed958", + "aarch64-unknown-linux-gnu-0.2.18": "5cc1535801398ad74e5fc8a5cf5a619d3e806b8b7de6b973b33c02b9b2584ffe", + "aarch64-unknown-linux-musl-0.2.18": "473ae75c6e9ed1f63f0c0c556ac6ca4718457903c3652adf07c8d46655133e31", + "arm-unknown-linux-musleabihf-0.2.18": "7fb75cfe47c50f9306eea91f1d713a0f76dacefc92b6a35271b7af90e024bac5", + "armv7-unknown-linux-gnueabihf-0.2.18": "c0ff7d440ccd43666d813da4dce5e90a1c6b90e3dfc951ed868a38c488ebff07", + "armv7-unknown-linux-musleabihf-0.2.18": "1c99194b715b74f0bbab9ba2f350bcbdc4e101f056d81ce35f62736b951b212f", + "i686-pc-windows-msvc-0.2.18": "554b9b65eee4f30b70ff2d3b1c2cee07600eef176c235d8639aacdca799610c4", + "i686-unknown-linux-gnu-0.2.18": "efd8fbe10f88622479611cac0ad18d7e5614a9335d655e64be8e30db6ea749cc", + "i686-unknown-linux-musl-0.2.18": "9d991b27482edc0891c8aa2750e95aa4f8007f3af9746d90f0176462a2cb3a09", + "powerpc64-unknown-linux-gnu-0.2.18": "0dde2eea6496139c10bad1e7e1d49d210bc47f294dde158db65f78eabcc363a1", + "powerpc64le-unknown-linux-gnu-0.2.18": "4515b5741a0cd2596526f4504429bbd8e6122c384ffd9211023771aa042c6815", + "powerpc64le-unknown-linux-musl-0.2.18": "48ce3450450a0314a6b7996f53145e273c3a2013c1771b56449c275d9260575b", + "s390x-unknown-linux-gnu-0.2.18": "4c3826eabcb81aeb187a3de95fa3e3f3c784fb71539be05ea56a963b3d97fe4d", + "x86_64-apple-darwin-0.2.18": "140158512a43d8266fbbc550dad7ed3f27953d5bb5bc7a3e91e94ed3c1c1773e", + "x86_64-pc-windows-msvc-0.2.18": "16dff877e19f61d094af35878a00b592302a1794c1c27afb1b194106931e9e59", + "x86_64-unknown-linux-gnu-0.2.18": "e5a0bde1e0fe57a7ea1d26bdb582c636ba742c3db8a10d0a965536da7004abd7", + "x86_64-unknown-linux-musl-0.2.18": "4472cd12522d96566be88545f1520dc5099f12f47df297f54f9239fc1af0ed87", + "undefined-0.2.17": "6bfe8c67c849a87271a47d6c54672b860a1b37fba5bdb2928f6b912719edac55", + "aarch64-apple-darwin-0.2.17": "7dc5fe97867ac3bbcbeabf32fb76b3caaf12141b5e20926ed81353f9a2ff7dcb", + "aarch64-unknown-linux-gnu-0.2.17": "5037a966a2422f40c63d36982d46f10362383c128ce1707a56b4339b44a50c94", + "aarch64-unknown-linux-musl-0.2.17": "910edd0a8db6ff39baaad0f7f77b2ce74e0111b6b83a4439e2e02d5b82404e1d", + "arm-unknown-linux-musleabihf-0.2.17": "6e72744e9cadf1649397acceb006f27c9cdce3dcc2876fb73a887d8914166791", + "armv7-unknown-linux-gnueabihf-0.2.17": "a5f18a5f739402e9c2a6b5a4dafe0ead37125bedc7c03a74a9a92e4682a0f49c", + "armv7-unknown-linux-musleabihf-0.2.17": "fcf11ba75a1d21c49d53474c51b612de1627fbb97c23bd7752d64d178740014e", + "i686-pc-windows-msvc-0.2.17": "ed5dc4a4341e7af3d92ef0649df6152b555b16e09c072c43f7f39b9d5bdce784", + "i686-unknown-linux-gnu-0.2.17": "d1d478429fdaeadd56ce280bd43460275bd131cd44f9878987d9d7a5caa4f398", + "i686-unknown-linux-musl-0.2.17": "8fcafe168ae2eb4de6891c0d0d5c0c598af87b552d99d2c4d15deca824236cd2", + "powerpc64-unknown-linux-gnu-0.2.17": "b2601121c8df47bdb430da2bf85848b7e38ff5df1150d8ea980d8ab7b4f5551e", + "powerpc64le-unknown-linux-gnu-0.2.17": "1f94aeda1cf36d401073ae21d9dc4acafed761d41074795f622ffa1fbd4a3677", + "powerpc64le-unknown-linux-musl-0.2.17": "a3599741a236d088cb418f446e491b661c042ebd9f23e15f6cadcfe2833a6609", + "s390x-unknown-linux-gnu-0.2.17": "4dccbee34457c45f4fb9df5760094d402db7642a3a5665ccbc271293dc19b746", + "x86_64-apple-darwin-0.2.17": "78137a1b9d6fd1f8f5f0d4208829dd5f89b6505c314192c0fa2a35d6faff5e91", + "x86_64-pc-windows-msvc-0.2.17": "e77465f8a964cf0cbd932af506df6ca42ce288e6db4df312c53f27b05c7c09e5", + "x86_64-unknown-linux-gnu-0.2.17": "d49537780cd9cd5621bbc34e6864356487155cd4a7540035e1b0acb0d1017def", + "x86_64-unknown-linux-musl-0.2.17": "20184a870ba25416b61d46c387853afd27d9a8df3f0598ee6878a315db5c7302", + "undefined-0.2.16": "f215cd4c173a71cfc2427b5cb3c42e321ade41350051a1ca7a9c898ed502ff2c", + "aarch64-apple-darwin-0.2.16": "9a19728c43c35a2d5f97f2bf85b0dc7b508e1931738f0d95e2354f0f745196e1", + "aarch64-unknown-linux-gnu-0.2.16": "f50584835c2099d5dcfff4fe4292719871ea40661d6fb124f732c81b131ac2cf", + "aarch64-unknown-linux-musl-0.2.16": "47af1d071daf655fea352a440f533f3ad7dfbdfc2314160ac14b31815d959c37", + "arm-unknown-linux-musleabihf-0.2.16": "5ab0424e8c18776c809f0c1e7f6e925f7e478c36b2260b24f2694d1293e5f8c2", + "armv7-unknown-linux-gnueabihf-0.2.16": "9d4a66d55c273ae5f265ee979899faa6636823b1dbaf4079085e108adfcb916c", + "armv7-unknown-linux-musleabihf-0.2.16": "384ffae2d98a0f2211d1353eb66031710e452838349fdad115503b26a3dc01d1", + "i686-pc-windows-msvc-0.2.16": "8b140cb56029585fb95685410f17eb866a4d6dae9d63de4fba14268e17730951", + "i686-unknown-linux-gnu-0.2.16": "902439f172d22dde421681d54994fcc9bc66ac412baf1dab978fc061342bc4e3", + "i686-unknown-linux-musl-0.2.16": "1e02d7e7e06dd44c1cd077bd645427af7f04901e685ba3fbcc2691d024906470", + "powerpc64-unknown-linux-gnu-0.2.16": "68209030923b2276df8dbcec9ae3a0efd9f7166419018e7d282dcbbc5043e97d", + "powerpc64le-unknown-linux-gnu-0.2.16": "9c0ef3b12fc81337612841f3d0588d60e5cd6f40ff533c546218c5f8f3b30935", + "powerpc64le-unknown-linux-musl-0.2.16": "d41c74bda5a383cd71667ad7d38a7a5af667a82fd83df997ebd0547a5050a5ee", + "s390x-unknown-linux-gnu-0.2.16": "ca828149fa733859b4837b3aae69e253cd336d690ab6af6fca8726f5498d21f6", + "x86_64-apple-darwin-0.2.16": "1457a592a56326ac67ca12db89f8cc175634d36bd17a2efa7b605a9f81edcb31", + "x86_64-pc-windows-msvc-0.2.16": "0eceb9b4c9ec8049ac15455ee79100bdd2e9db2153977da7d9788ba792e1eaeb", + "x86_64-unknown-linux-gnu-0.2.16": "0a6cebd98cda27fe3f49853a686ca050fbfef2da7871f6cf4065c5e9a7b2233d", + "x86_64-unknown-linux-musl-0.2.16": "e4efe763ad24e32b658e33b38cde271694f2fff7c2eb07cca5a267d600c1f718", + "undefined-0.2.15": "902d06ac01ebd1ac7fcda81f514b04c6d79a1bafd70305b18e9b1d387cfc7025", + "aarch64-apple-darwin-0.2.15": "7342fba0eeb0ea204eb4ec6311378e76d43bd237ad0576872aca3345914b024d", + "aarch64-unknown-linux-gnu-0.2.15": "939998c380bb95b4fbc15bc00c43c1b1fc1fc30d02638aeca6113f02a99c608f", + "aarch64-unknown-linux-musl-0.2.15": "3f5c7c25e4099854330b3a21bb9670d3cdcf3ec3c0eb9f8bee7e42c5098cc5a1", + "arm-unknown-linux-musleabihf-0.2.15": "2b53a33e0f46f2c37f949d12d420f666e93f8286ed371a1bc5b1406899ab5ff3", + "armv7-unknown-linux-gnueabihf-0.2.15": "1f8712bd2b6c11533d4defea1f2e7e3972b9db887ef26a4c33f452a8492891ea", + "armv7-unknown-linux-musleabihf-0.2.15": "0bb582c399933b7affce3c9f5992a6aa7f7bf596fbd43e08623a08dff564fbc3", + "i686-pc-windows-msvc-0.2.15": "339014778ebae1bfaf327217c137997ef272047626c857bd3fe84286af61a7a0", + "i686-unknown-linux-gnu-0.2.15": "8c5e80b94a84ab14b91de827858c076b0501a85de40c7ba917070a929e914a18", + "i686-unknown-linux-musl-0.2.15": "148fb4554317f84cb27e563707cff8acd35a5b3f668f27a45005e076833cd4ce", + "powerpc64-unknown-linux-gnu-0.2.15": "c533ec6526e7c338c79c38181c94b88b5d80c5a1ec8d7182a0aac3b6448caa46", + "powerpc64le-unknown-linux-gnu-0.2.15": "681b607989c135d17215a3442fb0e6b11d5c5ea90973eacc6f3aaf2f7b1520d7", + "powerpc64le-unknown-linux-musl-0.2.15": "a39e8898c033b86e3432e177d9d6ee7da5f9ffcd1624b894bce92d6fdd58bf56", + "s390x-unknown-linux-gnu-0.2.15": "2fe5fe764afdb8e4f6f752f17400013af4c0ed60fbc91eabfe5b05483f30fb82", + "x86_64-apple-darwin-0.2.15": "dd7ff73cbab1c65b3f2d110bf025d0c74ca2aee3001e38e808d7b1816f49a6cd", + "x86_64-pc-windows-msvc-0.2.15": "c1ffecd50d417b3de667da0fee07b577abeffd5f9d6762501818252b3aa6c7a8", + "x86_64-unknown-linux-gnu-0.2.15": "f9c06177f2153336c3a96f9ab54d881126447cde1cb5d00ed771223427692e9c", + "x86_64-unknown-linux-musl-0.2.15": "3151e375fdb6c73765a8cae5048790c52366cae4593e89365549587f24406837", + "undefined-0.2.14": "528d2dc187720d6338c5dc84809f64633cd969262c5a0f6a2bc0bddffa1ff8c0", + "aarch64-apple-darwin-0.2.14": "0a78382f3e93514d51257243313a420646a2316da47bc4bc194bb66ed2e50ee5", + "aarch64-unknown-linux-gnu-0.2.14": "5461797a801f3752cab99b63b206dcf54de037283d93f03adba736179f099d31", + "aarch64-unknown-linux-musl-0.2.14": "3b315856284f2d4c2a6e3b19fd6c5eae87334c37f1a7dfdaad3f696b976dae72", + "arm-unknown-linux-musleabihf-0.2.14": "40b481cb4ad70be8afe62fdb62c6b4f4f90a6a3cc6061950f58e4d92b13e58b9", + "armv7-unknown-linux-gnueabihf-0.2.14": "bf7ceff49dd3ceb384316c6bd85b037a9b5c830074166f57d6ad6fc8b42fbb75", + "armv7-unknown-linux-musleabihf-0.2.14": "3e246f87058d03d0879c0a2dc287aa352785fa8a37e166b6c322b7ad1e79fe49", + "i686-pc-windows-msvc-0.2.14": "97d1cd6da0bbdfcda220167c0309b50ff294304d273d59a5b30076e31a8b9deb", + "i686-unknown-linux-gnu-0.2.14": "7f41c2d76af64bb5fa790516a43d86dda8c03b1ba5b57f1b2db9cea7eb836a53", + "i686-unknown-linux-musl-0.2.14": "28d924aaf00228b35d0219a4e0b87846bcc515c6575f3712733cdf614716e9ae", + "powerpc64-unknown-linux-gnu-0.2.14": "d20a64a746d24e49fc85d46064538fb2c84778131340abe345192c1d62c29357", + "powerpc64le-unknown-linux-gnu-0.2.14": "1bc57215f96f156d784761c616de0a1c7d90aecf145c5f7e401add537db17106", + "powerpc64le-unknown-linux-musl-0.2.14": "2fbb0995b0a34d3cc2a97e3a5c4aa0e8b6b3b52d432a082f566112eaae1c490c", + "s390x-unknown-linux-gnu-0.2.14": "8b025f335dc7066dae5646114b7fa0e9026a12a05b8909acccaf9c6348298d7b", + "x86_64-apple-darwin-0.2.14": "402525d3a113fbdcc687ca408d42cb104ce18e8e030dc05b83381ca4f9ea76ec", + "x86_64-pc-windows-msvc-0.2.14": "a4c00d69418061c1566e758e85f3f6fc1532908453d03cd9f9aeba03d0bf640b", + "x86_64-unknown-linux-gnu-0.2.14": "79b2582675bd93c7d632e71a667478a3b1eed101669944e64c848f7240ab4725", + "x86_64-unknown-linux-musl-0.2.14": "c0f760078a326b6f861d0eb4e9a04bccd0bdeed6cf72f284efa698e54ba83c77", + "undefined-0.2.13": "9ae345ea16f8c61997d8434153a20a1e95ba11fc46013ac951c70d3fcb77c8ec", + "aarch64-apple-darwin-0.2.13": "f588388d2b13f77e4526e619f618a306b6b026a96975fbfb2c6dd1ded134cb72", + "aarch64-unknown-linux-gnu-0.2.13": "f342442088a56a8a5e4af6781501870bed1b388b37ac2e9deb250cd1d0dc1845", + "aarch64-unknown-linux-musl-0.2.13": "56151690ccd6a12205478212dd16013d1969e3ef808a66f99809da850a49ed29", + "arm-unknown-linux-musleabihf-0.2.13": "ef70483125e00033ed6bd5f9b0c4cfd377db54897284cd7d1d25e2ca6224312a", + "armv7-unknown-linux-gnueabihf-0.2.13": "20f96f8a6b2dee8a6013bc12b243b718027e5a34c9fceb4baef7e85e530f9da8", + "armv7-unknown-linux-musleabihf-0.2.13": "59b50354236a4a3919ecf9619bb5791936724351e6d1f96a18969d0e5df2dc51", + "i686-pc-windows-msvc-0.2.13": "644e97188d6f4d96e0b149992958c20cce928ad0f4ab4800e0fed70ae16198ef", + "i686-unknown-linux-gnu-0.2.13": "aa94cec4368c615297aa4d81ab81c9034b4a40d66c75854002f0e26857e659a5", + "i686-unknown-linux-musl-0.2.13": "152cabfaf4c433d6904c5f68c2771b0c5ad207e356ef96867680faeb9bba0c8d", + "powerpc64-unknown-linux-gnu-0.2.13": "7f6bcf0354c87993bdcb76ca0ce3b6211703d19f08bef2cd3306b75cda6ff8ad", + "powerpc64le-unknown-linux-gnu-0.2.13": "0f38a41264be0ef325f8d438f34ea95c002736b3c092e3276518a2253c4ff923", + "powerpc64le-unknown-linux-musl-0.2.13": "081e0c31a971c3755108a6c70c90fb68a2b0829f995665aa5df1002eaa4945ec", + "s390x-unknown-linux-gnu-0.2.13": "dc843c32e51ee3fb46381699bffbc4b6040c51083a1dc7d6c597582b84956aa7", + "x86_64-apple-darwin-0.2.13": "6262eba42ebb9035a574b74c5ea253a41353fb4b6b264600e3b05b1a7f4cabc0", + "x86_64-pc-windows-msvc-0.2.13": "898ce45b3767ea97429426a7bd0ec54d070eb9e29ff2b072bdcf288bf6ddc9a1", + "x86_64-unknown-linux-gnu-0.2.13": "3f96048fa1b82eca14d45bbcc86714cd0dee19a73ef9311da6707faa308ec25f", + "x86_64-unknown-linux-musl-0.2.13": "2121a2184aaa0e4c7ef599358dc2bfd20e5a07a1373c302b6fedf79f2ba0778d", + "undefined-0.2.12": "322c672b515d240ae4a588dbf18086f0b5cdbc288335668c32cb6554cb3551bb", + "aarch64-apple-darwin-0.2.12": "cd9ca2c17a32f08dc03a6430fb99c16cb2eec1350a4857292df6a600d71a1467", + "aarch64-unknown-linux-gnu-0.2.12": "8e57c9baf43f80a4b0eca7d5fd0de9152b99ec22809ecfd8350ab4317ae1d629", + "aarch64-unknown-linux-musl-0.2.12": "74981df43332e9ca6abd2855d73e0d1f5565d3f724c60f4a67bf0c09d84902a9", + "arm-unknown-linux-musleabihf-0.2.12": "50c8f8178978679455da0b14e5b03039001c39270d8fd1e51dde9addd45f3cb6", + "armv7-unknown-linux-gnueabihf-0.2.12": "cdcda5bef68ecb96c593a1389349b19d6a52a2c235308e6aaade522f67def730", + "armv7-unknown-linux-musleabihf-0.2.12": "b1c55e5e3b1cd5310318572d5243d7ba725c413e0a20d6a77987ea00dcfafbe4", + "i686-pc-windows-msvc-0.2.12": "4bd4c4fbe449799d0ffd179b6432712c4843d1b802ea79b582989d3cd9eda6e8", + "i686-unknown-linux-gnu-0.2.12": "301351fa77cf03bb0584c45deb36f0049223f404250ba31d69ebdf689ffae9cb", + "i686-unknown-linux-musl-0.2.12": "379de8132478143542aeac0a4b4310eb2ed172927561ec9cdf11cda2ccd87a2b", + "powerpc64-unknown-linux-gnu-0.2.12": "9dd50c32d2c3a41a43e5f08fb34cdf829bba0d2222abffcd20429f2dd19cc6a4", + "powerpc64le-unknown-linux-gnu-0.2.12": "53b30539dcb80d074e8d33eae582745a155ff0c3291d816c0596332a980e6389", + "powerpc64le-unknown-linux-musl-0.2.12": "9d9af6a119f15cec26e90e18dbdbf004a8ddfe9078e1877bb43a7ba87172150b", + "s390x-unknown-linux-gnu-0.2.12": "df8a4b496f5307a27c4a8b90e356d4b508b3aab24ddfc5904f7ec53bc3bc5cb8", + "x86_64-apple-darwin-0.2.12": "71f6c77cf22b8cdd04aa561fe4bd1da8720351359a7c04740bce6a68fdf582a4", + "x86_64-pc-windows-msvc-0.2.12": "5a1b374ac29e1b65ca581573f175ec3c8071cd09eb73f127d9081d37a0ac21cc", + "x86_64-unknown-linux-gnu-0.2.12": "7a0c67d32844afadd2d964d9d6ecb769a56e122e1423efce53e7554a33fb5c6f", + "x86_64-unknown-linux-musl-0.2.12": "a617fdeb285e0dbb13a0f37f802b80be1fe5272a44f752d62d1425ea56428170", + "undefined-0.2.11": "75555dfd78bfd30f0b32e7515413319920bd1fcc88c4130c4fe02516dbd2bc58", + "aarch64-apple-darwin-0.2.11": "abcc9dd4234623defca3ee8c1b36d2b3662d5fd12c90727e1111b8e1592fb9ba", + "aarch64-unknown-linux-gnu-0.2.11": "ccdf23e44d3479ffe61bb68b61af5a014bcb76397f19b2a85587f55a6cc7a98e", + "aarch64-unknown-linux-musl-0.2.11": "f4f5b8f496d655206a4bfd28c54192a225da1274d04fa3ff6ff74df1e756c400", + "arm-unknown-linux-musleabihf-0.2.11": "2579a68e7e434f0c47d3af460bf6c0570759761dcf1fa834f2df87abcfa0ee18", + "armv7-unknown-linux-gnueabihf-0.2.11": "f76c811a073bd0feea69555270fd0437e7b4c085d604a3949d2dd98b418b1597", + "armv7-unknown-linux-musleabihf-0.2.11": "45463088ca59aadb7cd0343f98e1892198799e24b19873c8885433d72673c6c3", + "i686-pc-windows-msvc-0.2.11": "fb7e8b6647fca55e627a2df40c811e2d1af8a5f9bd802122b5b93edcbb605aaf", + "i686-unknown-linux-gnu-0.2.11": "13e7682d48e802c16e41ca97c0b137eed9302caff943464f9ef43dc1de2dc8e8", + "i686-unknown-linux-musl-0.2.11": "64f849ed7de03cd4ae08759224a3065677a4164f42318c8e6c883f28c443e698", + "powerpc64-unknown-linux-gnu-0.2.11": "5cf33f99dc3318989c8e14697677ee5bb9029c38c60b44c69e9f58d8e8cd8417", + "powerpc64le-unknown-linux-gnu-0.2.11": "70a3c979624bc22307708d84ef9dda1739672606804b68badd6a01b88ec5d4e9", + "powerpc64le-unknown-linux-musl-0.2.11": "a3ec1fdfbe0551d9ddd522eec0040a13eabeb8081d8114a8bbe3ea6b1efc5df5", + "s390x-unknown-linux-gnu-0.2.11": "57ac8fcb1880cda4551bad47065e434ed020b6b2a401fb655861813bec1de223", + "x86_64-apple-darwin-0.2.11": "b0c3cf377363bb0bc0917bcf8efa08590e3ec86a3713debb51b0a5efe7a48e9a", + "x86_64-pc-windows-msvc-0.2.11": "07ee4e64fe871de647f0580348f317475906162398604b96bd5c52d99fd2778a", + "x86_64-unknown-linux-gnu-0.2.11": "4a6188b172cb8d43e59c91dad8cdc4418ed0b395b09e4198ba4661cbcdbb40eb", + "x86_64-unknown-linux-musl-0.2.11": "063afd8753870e147cf5d7c6273748d585f758d43d8df4bc04121667b7d5a6fe", + "undefined-0.2.10": "faf7b657b53a31d8d47cca58b33379d14f4701165a1867e61039a961274a45ff", + "aarch64-apple-darwin-0.2.10": "a099cd4dc28f879e023ce221697e07a2089b12dc42099dd240a2e64d5cf428be", + "aarch64-unknown-linux-musl-0.2.10": "fffdf595dd2a231b372b685a2e25589bd8d537fea252b28678565f01e5b8bddc", + "arm-unknown-linux-musleabihf-0.2.10": "c1ccd50c4f3a18dcdd46d44d285313a84a9a2b36e8a676e4935e339362794489", + "armv7-unknown-linux-gnueabihf-0.2.10": "38c30fa3c5e3c97db50396609619c17741c860c36e13ee210e387c94c59ce1ff", + "armv7-unknown-linux-musleabihf-0.2.10": "36b38e5124202686aa79ee7d872419746aa3675e34fa7782be489fe310cd4440", + "i686-pc-windows-msvc-0.2.10": "e4130ec5fd7af4d52ecf39144a15ff7926e7994a14a1c2e75f66d8c352f74bda", + "i686-unknown-linux-gnu-0.2.10": "0ceaf9b11a1173497e96c5f74b2d13a8cecd9d794eb4096b8eb21537aefc0a6f", + "i686-unknown-linux-musl-0.2.10": "078a21bfdd32363b989e28903d37d9a3114e5ec76683339abedaaebe2b78e57c", + "powerpc64-unknown-linux-gnu-0.2.10": "5ea1aa731bfafe544b754daf06b987d50a569944ffebb856512bf016ae747b68", + "powerpc64le-unknown-linux-gnu-0.2.10": "d9122acabde5b4bca92fecb83abdb4eb9e2310b8985ea0c02028d6605dcb7d9f", + "powerpc64le-unknown-linux-musl-0.2.10": "cba75fdad8751c443db162af15a0ba730ceda6f0a32d58d0f794be906e518a69", + "s390x-unknown-linux-gnu-0.2.10": "eac781c177f900b3175e24b38da8d20d2a985e7e1b7cb8a2506a663ba930ae94", + "x86_64-apple-darwin-0.2.10": "d81a89883ea4ed47a115f4b4947cfe20db26b91d28a08287554eb594efc20cab", + "x86_64-pc-windows-msvc-0.2.10": "f1df811e31940bb50c7f07a1e94eea0b7e3344f0e5ebed9e57a61f7c7857deef", + "x86_64-unknown-linux-gnu-0.2.10": "99b25a80e170fde54b299c05f4c071c7130ed85db45fe8e7663cef44f09aac5f", + "x86_64-unknown-linux-musl-0.2.10": "5ab4daa64daad2fc53624c1e88dca7166424526713e6fcbe8e34e80f23ee612d", + "undefined-0.2.9": "d1c2b96c86aa8f928d8f49c3addcbab35bc6c1a6609ae7ed64bfccc3135ec448", + "aarch64-apple-darwin-0.2.9": "ebcbfb397dc045356e1b758176b83fe192bf6cede3ac307e30e6934c54ef45a5", + "aarch64-unknown-linux-musl-0.2.9": "b8d055a0279c52021238a92e41bd6076813fac3ae77f4a3235b8aa4e2d398c0a", + "arm-unknown-linux-musleabihf-0.2.9": "f21a687de862282ed42f8f515a9221ef2d4b4e831a634c83837eba5ade3bed35", + "armv7-unknown-linux-gnueabihf-0.2.9": "9c43a432b9e02b126e2a1e42262b8ecc7d5715e9183c0fdccfdb6a98911067ae", + "armv7-unknown-linux-musleabihf-0.2.9": "fa57fc9740b58b7db4cecbbb3e93a92f73dd30267965097504736ea6982e67b0", + "i686-pc-windows-msvc-0.2.9": "c68cbadfe1242f8f47469481773b9b7ec09b0b1bfa99cd545a170a3c4a3d294a", + "i686-unknown-linux-gnu-0.2.9": "530a4070e2fe5733a0f1ea262033e83638f283fd80fccf81c0e445a68bf47f60", + "i686-unknown-linux-musl-0.2.9": "68410fd939715734af7d0d7f2a770cb786996604af688f260db94e17f2aeb8e9", + "powerpc64-unknown-linux-gnu-0.2.9": "04c59c34f3895e9484f40c05fe6fdd2bb1e17a919d4b9cdfd99633a2f52d2ef6", + "powerpc64le-unknown-linux-gnu-0.2.9": "15a1902193c2654031fd7fafc416f434c36524d86a827e085b35580f83ced93a", + "powerpc64le-unknown-linux-musl-0.2.9": "9c1ae1bbb60b334d3249e4fbfb6ee2c3b52854764a3e4f6e6a612c4b96542826", + "s390x-unknown-linux-gnu-0.2.9": "444f7bc74488219e6157136638696fdf6bad37f3090e324e6e843318ff09abb6", + "x86_64-apple-darwin-0.2.9": "30f22cbe600b657cf6e987a05740194c2f1822f394b1c60e15621989b28b6591", + "x86_64-pc-windows-msvc-0.2.9": "32057b35feb2dbdb8de32bda75c8621a00f2aa619cfcc6d4cb5506b3b6ba6d63", + "x86_64-unknown-linux-gnu-0.2.9": "83438964a0be35ddded2099ea64599706e7c7a7de575429ce4df78e20d57774d", + "x86_64-unknown-linux-musl-0.2.9": "28e583284cdbbd5e3796c4db2c94997f805b5c632d73dcd9a25ddb3dfa9453b7", + "undefined-0.2.8": "dad41d5189d272b0cca9a87b3bb16c7a74241b9051ebf2b6fd5e94a0659a35fb", + "aarch64-apple-darwin-0.2.8": "ce64cb16c5e0dd567ba926926a67c569d9138c5162685ed5a40639b2c9163275", + "aarch64-unknown-linux-musl-0.2.8": "8f4bc88fbb7c498224122047f3f559b93e145753032d59782037ccf2969360b0", + "arm-unknown-linux-musleabihf-0.2.8": "095db570c8c5d0b8033d605984d2a0513585232b6c44f0255365c1bc016a12c6", + "armv7-unknown-linux-gnueabihf-0.2.8": "c88b3f63ea7b3727500545edf0a6c1581a34ab5328fa2503e7c40911dce9e26d", + "armv7-unknown-linux-musleabihf-0.2.8": "0063e160561a5928d73a8d89714aff77c51adbb62f4f1f4f0f438d7d3a03b4ec", + "i686-pc-windows-msvc-0.2.8": "dd3bcf604e2538625affbcda1e4e61ef1b27aa4515081ac13afaba92ed7ded02", + "i686-unknown-linux-gnu-0.2.8": "7643a101a02befca1cc3a5c830fc51a157f54bee2afc1eb098686972a9079810", + "i686-unknown-linux-musl-0.2.8": "71a792c953f782efb1648170abef72ce4ac0ca4dafa101719d87798dca5e7833", + "powerpc64-unknown-linux-gnu-0.2.8": "fa4afad36eb706bebea001d335aeab753b164ac6870267a6f6dc1f7dd70c03db", + "powerpc64le-unknown-linux-gnu-0.2.8": "43bf0cd00751c0332c9016c7b30dd2a6c753f0922dc5a1ccaba45e8b6afa4621", + "powerpc64le-unknown-linux-musl-0.2.8": "a0f15bd3e80e8b97affda7d24e2143c7dd99fcb7c8c8e948bad849d4a3658e52", + "s390x-unknown-linux-gnu-0.2.8": "106264c325eeeb17e7d8ec5f1b30a31129d4ebe2c97f54dc88fde16be7177a11", + "x86_64-apple-darwin-0.2.8": "8eafabb094127b35d472e8219047d4596652a9a645189f829f6bdb1b4786f282", + "x86_64-pc-windows-msvc-0.2.8": "1ee50b71511cf7007b07843562fc2467dee81cb8baf488e8cc0ea0b58ee12ebc", + "x86_64-unknown-linux-gnu-0.2.8": "ce9f8fca5faef55af4fb83343143bb403ecef518f9118e97a37ccfbf1ccadfc3", + "x86_64-unknown-linux-musl-0.2.8": "6f155b9b9d2b1baba811bd0c1aba0306a39ac547dd6eeb3906f692d3cec86984", + "undefined-0.2.7": "dafefc3926d85052bd3dc07e28ebd8ecde0ae575bbf80b5c5bab80fdc3a3ba84", + "aarch64-apple-darwin-0.2.7": "b9a0e6c501afbc4b47f07a199927d0783857013736c1c8c2d173201175139e45", + "aarch64-unknown-linux-musl-0.2.7": "40e4fba3abcc76d5f69dc420cbc457ccc7bd7003a07e6caa0a2a8a803b339e31", + "arm-unknown-linux-musleabihf-0.2.7": "5ec601accbc0b3a3cae4c8223dae977c4233313a246888ee5bf2adf381e07910", + "armv7-unknown-linux-gnueabihf-0.2.7": "a960192da71ba05438d1ab3632ee5a22c8b02dea087f9c054c224803870c9571", + "armv7-unknown-linux-musleabihf-0.2.7": "62bd71eb14a9e6149e7277a7cc3f5ab61e291a861d2cb252544353972183427e", + "i686-pc-windows-msvc-0.2.7": "51144d9d46629f0c260988ff486fe1720ad049fce7cbea201fa861752172d26f", + "i686-unknown-linux-gnu-0.2.7": "f35314685a233ee0b769cbac99d552f2feb21dcdf5f24bbf069b34dc5a26edf0", + "i686-unknown-linux-musl-0.2.7": "41afe171469eb811b50fbc6f45c97db842019f3c8707fbf992335eecd78125d6", + "powerpc64-unknown-linux-gnu-0.2.7": "d84c24bc570589cbf61b35bff7b3b2b7a56fdcd5ba64f53602a0ab8009e07bd7", + "powerpc64le-unknown-linux-gnu-0.2.7": "f9ed8c319e5dc5920f5cc4455e088ac7768a858bed95eecec330f1e99e47d903", + "powerpc64le-unknown-linux-musl-0.2.7": "8fbc6d52c63680cc6857b55cf8f025740a807a58c59ccadba87300f7103e0551", + "s390x-unknown-linux-gnu-0.2.7": "e1d74dce851c3ef82e347221b36247f649d12e5bdfba5c91b211caee7de004b9", + "x86_64-apple-darwin-0.2.7": "fa3f52a05222d4cefba742e2db029f85c41b7e539c1f748b2583be42b806de91", + "x86_64-pc-windows-msvc-0.2.7": "5a9b7053ae9d25cd28abdd8fb10a8c5353dc0212594013216da5905eb7515360", + "x86_64-unknown-linux-gnu-0.2.7": "080bedb35224afca73cb424629e3512b529398f96353c4cdf59fe6cdceac5034", + "x86_64-unknown-linux-musl-0.2.7": "ebc3de0f88e8cdc211fa914124f201b91037c0ba5f30f2614e630295a147c833", + "undefined-0.2.6": "c822fc118367829825775874c19d14bb9415804a2c5efa6dfbb302b1fb18ae0e", + "aarch64-apple-darwin-0.2.6": "f985057f3ef9a101ca4d485337f8b5800d894277f4dbbda50dfef5e0e1d352e4", + "aarch64-unknown-linux-musl-0.2.6": "41606b5c24e40ae2bcf71d9f8fc28b1f3e1399950ee324aa9925621d5bf1bc0e", + "arm-unknown-linux-musleabihf-0.2.6": "854f619dfcc52b26e89189b8c8fce3a5041bdd1408cd867d87c9e4751caff6de", + "armv7-unknown-linux-gnueabihf-0.2.6": "f1194ec0b18cda58537698c5b417f9464d8258334d69049fc32c40c3b8dd173c", + "armv7-unknown-linux-musleabihf-0.2.6": "5ec8d44a6ef6c732a91463a2c4f6817a71efa0838db6924e2bc889a48118f493", + "i686-pc-windows-msvc-0.2.6": "abff721157dcf759582735e4c9b366cbde1487d6d8a7d1fb50e1a20fd37d6b4e", + "i686-unknown-linux-gnu-0.2.6": "e1868d5f0e345d454a8895b09d2e62dd1886bdf01cbeb6d494be9e24a2717b1f", + "i686-unknown-linux-musl-0.2.6": "abd36ef7319182876fa2bde268f378cf3351036158c6ca9e45996b58f4e54ef6", + "powerpc64-unknown-linux-gnu-0.2.6": "55b6480dcea50327c20b835fe81a30d685224c5022cabadf364b59a258967e8b", + "powerpc64le-unknown-linux-gnu-0.2.6": "e8de807c6b42e602b8aa05885627225a33b65d4155c514b58b7bc853d02b792e", + "powerpc64le-unknown-linux-musl-0.2.6": "6ddc687f19bbb1f9279cf36d3ac05d8ccb7bde1c7b19f1787cd5ac427943fd17", + "s390x-unknown-linux-gnu-0.2.6": "f596c5420cfc7eb608cc7c560d57047985ff1882d2e95c681e42ce85213adb3e", + "x86_64-apple-darwin-0.2.6": "8e3a83165f751174041fbe0063cc063f4206270c0a187b55941f52e8a9f132cb", + "x86_64-pc-windows-msvc-0.2.6": "b359026e348df4e3cc12fc8411992ade3fc5bb5debe334669515383681088a18", + "x86_64-unknown-linux-gnu-0.2.6": "02c7803b6209a80cdc8a4867a02ca6cb6a622f0d83f5276770a8d5636a89a396", + "x86_64-unknown-linux-musl-0.2.6": "5efba2047b1e72dbecd64e707d0063f6dc49c22f8ba467480e665534c5f6a17d", + "undefined-0.2.5": "798f49225017610715474781467463a0dc48be1708973b0001e547c98c7c5f58", + "aarch64-apple-darwin-0.2.5": "a827cb84658d321de0a029b7207b99fa6e20b99f0c1ab8d24484497b3b87c0e2", + "aarch64-unknown-linux-musl-0.2.5": "f465b75f0129bfb1e47902a14731460aec5cc71d9586a19ad19a644fd2fa7a5e", + "arm-unknown-linux-musleabihf-0.2.5": "d630b4b3716d4c4da9118d2d5c083e2fe6b7c769dcae39d4c8546ee3709aa0bb", + "armv7-unknown-linux-gnueabihf-0.2.5": "3341aa26179eb68f6b6c7bcdf44a0c3f5dbea3f43905920f4c018410fb3d46eb", + "armv7-unknown-linux-musleabihf-0.2.5": "8be8dacd13b0ea18720b818e536bd80d83ac30eba4d37e8913aeaecf9e2feeb7", + "i686-pc-windows-msvc-0.2.5": "13cb20dcf23792bc7ad8d73c2e4f003702606f6e9821c1ac8eaf089f6e98f57f", + "i686-unknown-linux-gnu-0.2.5": "8432f9d68840fe56a21a8542681045447dcab18b75f43a073bc28c4d5c1b8157", + "i686-unknown-linux-musl-0.2.5": "52540ed8ddf78ec80db95cf54618e6e4fd4cdceab860cbea9a8fafa957c98983", + "powerpc64-unknown-linux-gnu-0.2.5": "0a4891a6e8fe2ccd4c17196fad8215fe6611d74a89a7b2569d3fca3546103300", + "powerpc64le-unknown-linux-gnu-0.2.5": "8717ac07d0684b618f112bfb9a7926490511cecebeed8f125b25f4969dba663b", + "powerpc64le-unknown-linux-musl-0.2.5": "c9811d9a90b3babf6c384d0a10d38f38e5109b604dcc68564f2c1216a3afb21f", + "s390x-unknown-linux-gnu-0.2.5": "70bbb790f817b1e0d930bea18bfa688d8177362aee8a49b83f1fe88d9123f86d", + "x86_64-apple-darwin-0.2.5": "8e5808450482b5533c6b33096952b0cfca0a7020d7524c0132616926a9f58878", + "x86_64-pc-windows-msvc-0.2.5": "bd6c8e30fad5bb2207c2f7248c375034a9becc3ce905bd94322f9d70e9cc6b20", + "x86_64-unknown-linux-gnu-0.2.5": "5eb13622b4450b3756f2395c261315562c48f405208cd1a160fe47e43fc85da1", + "x86_64-unknown-linux-musl-0.2.5": "dc591b1322d0ad2d3561c6d18657c5c5c34ff9addaa588645a062cd60d14f0dd", + "undefined-0.2.4": "073532db6eaf44da32d9a9536f6c48f1c8d450340969234a1b6ac322811758d4", + "aarch64-apple-darwin-0.2.4": "2edcd05f37e6f1c44aba1388086768dbc53777473c354feef3033fcb5cc3434a", + "aarch64-unknown-linux-musl-0.2.4": "8bec0692741573c6f150321cdb9be14b1dd22f91fbdb1a87c9b94a184a6ef753", + "arm-unknown-linux-musleabihf-0.2.4": "c86f3a90d91fbe659708928493a69e35b1a79b2b4bf47d5941a5230ed9412462", + "armv7-unknown-linux-gnueabihf-0.2.4": "59e781c25a16e667b57f76b8b99bfc31b85ca94811ddd95c549045928f80c3cb", + "armv7-unknown-linux-musleabihf-0.2.4": "5a89f32071ace6e5d0501fdf7fe787f2739f89df862dfe1d1d48eaef09abc0ae", + "i686-pc-windows-msvc-0.2.4": "4e6255288f9041070bb0736b4626ddbe9b8933ff5e067224584c9ca14867902f", + "i686-unknown-linux-gnu-0.2.4": "7f78cc0b7f0316500539f8c9e4f4077c2a94d015673c1aa6ac9402dc8f35ebd4", + "i686-unknown-linux-musl-0.2.4": "97df66100411c14f30639b8cb97b42365422f462e0a5d1acc0770f1d468cf258", + "powerpc64-unknown-linux-gnu-0.2.4": "52b2c0dde7367c0424363092f276dc07d4fafa7a5696fc34849975717c53b5f0", + "powerpc64le-unknown-linux-gnu-0.2.4": "14c765959084196deba0e4f858fec071b03fd70ec9176e7414e7cee88d6d8e0d", + "powerpc64le-unknown-linux-musl-0.2.4": "118d70b310f2a4029bf15146d5e574c8b987144b13e235b76bb909654bbf8881", + "s390x-unknown-linux-gnu-0.2.4": "175c5c05689bb332f74927c4001d1a72866bcf8f5b7fd4f2ac766eb30119882b", + "x86_64-apple-darwin-0.2.4": "a5bd83234920728797fc523e2aa3605c45c7c3ca760e611c4071943cf109e58d", + "x86_64-pc-windows-msvc-0.2.4": "60599a616c7ea04b2c6a4baac30de0b70e3d934795b672eef73298fdf187656a", + "x86_64-unknown-linux-gnu-0.2.4": "2c470b016f749063080fefc5dd19176bd25b9761033df9df7b5ab914eba1a8e5", + "x86_64-unknown-linux-musl-0.2.4": "d795a27ccc2a47e8939b02296780c58377342ca35b51a518e36fa6b62291eabc", + "undefined-0.2.3": "aa6349670507cf6ce80d832d488391b82b48a9f4511c868886758349d62664de", + "aarch64-apple-darwin-0.2.3": "20e466f87ebeda26da0fff5306ad998375fe1e27d2514e4b4f5711f9fad6bcee", + "aarch64-unknown-linux-musl-0.2.3": "8574f4d4c56b87eb0e9041f984d8e79d98c53d2183533c2196f8a6dd16944929", + "arm-unknown-linux-musleabihf-0.2.3": "092dd369d4336989dffc7114006c069c851a0a09b463e0522e06704fe002d149", + "armv7-unknown-linux-gnueabihf-0.2.3": "cf2925523919708024d7a99a24318faa252a5fd1264e19aad936295ba65ab97e", + "armv7-unknown-linux-musleabihf-0.2.3": "04512d5e3d68a6b4f8bcaa8e94d0e196ca0f525a387c45272d3efbcf87ad846e", + "i686-pc-windows-msvc-0.2.3": "4f9c95a4f10ca3a35ef3d7c84b02ee473826ca3089c0e701c84efaf9bc5dd1dc", + "i686-unknown-linux-gnu-0.2.3": "1e9a60953f4c7910bc2a28e1b131cad975c4e0b8e4c1616a2c494160badfd330", + "i686-unknown-linux-musl-0.2.3": "fc5e7a35c7b229eb8be9c38901ffd29ecdbc7bcf4a54cca21c477f8d10f8cdb0", + "powerpc64-unknown-linux-gnu-0.2.3": "079dd937d5c71ae1ec72ed47a3d78afbe73a1281094f4fb49884758752d28f06", + "powerpc64le-unknown-linux-gnu-0.2.3": "a6ceeeae7a98c410b97d72a26a6ce5d53115c4883672008a5c614fdf3519e18e", + "powerpc64le-unknown-linux-musl-0.2.3": "c093aad7e88ce3edd7a971b6921e3365c017cebdda704366249db13b143d8cb0", + "s390x-unknown-linux-gnu-0.2.3": "0f817aac0d53f0d362b23399d49c5c113c9cd1a7c60cc0d1677dd4306d3c2858", + "x86_64-apple-darwin-0.2.3": "79c28e2121d4299a2190ab0c8f149d676a6d623a4396c86cda947a9280f494a8", + "x86_64-pc-windows-msvc-0.2.3": "c02509cee8e75ac1e17ea0101c4e0d624a8e4e033eb74d3fd50d7f06d30ff949", + "x86_64-unknown-linux-gnu-0.2.3": "d94b9f679b3718ed0f62eee1126f02f1552301b7dc473a7dc3727f20b889e057", + "x86_64-unknown-linux-musl-0.2.3": "872113d59455f86700d23b4589bd2767491fb7ee4e21c0a62a9f2555c631045b", + "undefined-0.2.2": "e7ca19e90cc640ac96756b52cdae640d03e427fbce92643a00883cc530487ffd", + "aarch64-apple-darwin-0.2.2": "4533c5a3f81f64dbcf9fd154cfa5e1cf904e4d9698eca63ec6a209f554a0beb9", + "aarch64-unknown-linux-gnu-0.2.2": "fa01c8584e6dbea991e9f14e50ad33e51c1a321cabedae738075fe58ee5a3ab7", + "aarch64-unknown-linux-musl-0.2.2": "2f004af91dc4e5e18074724e3f6ddf074026e264a2ecd27fad067d152e739893", + "arm-unknown-linux-musleabihf-0.2.2": "3d6038f9d043209c9b135743e766ea11ddd26d25721a21b2494d72233f470090", + "armv7-unknown-linux-gnueabihf-0.2.2": "2e680d9b99deae3939da2d5bab5997e12713a2991a326a412c117c3471d41d32", + "armv7-unknown-linux-musleabihf-0.2.2": "9363ea6707d8451b78980cc2a4baef357d9f86ed2e1bc877f68140c5ec47aa3f", + "i686-pc-windows-msvc-0.2.2": "e3c321c02572db320f1f6555da93fa0a2550cee84be49df8890f45dba49cc31c", + "i686-unknown-linux-gnu-0.2.2": "e81b97d0dc2756b7ca632d1344d9dcdf0dd3d127f1c4b134c338a05b28454e8a", + "i686-unknown-linux-musl-0.2.2": "54d79ac9d9f04637176f1eca20917c27993f1cc5040e9f73d2672ba5f414d044", + "powerpc64-unknown-linux-gnu-0.2.2": "9811a9021a302229a487bb717f643d96c2746691773c552f0c43294b0935a78b", + "powerpc64le-unknown-linux-gnu-0.2.2": "386bb032c291e0f2c24fa6866588e632eeb999ebac6ab20ce7aaee97f046ba4b", + "powerpc64le-unknown-linux-musl-0.2.2": "28540d8ca31c5d7568bfb361d7a28a0b5f20ef9f08086d5cc70fda07ad9fb250", + "s390x-unknown-linux-gnu-0.2.2": "237b3a93ac0d9ccf7d841f89ee0e7b122ae21a0e637ff8149e1faf7a4f55550a", + "x86_64-apple-darwin-0.2.2": "4c0acbde53ce0fec440379c112bcc6beafd924dbbd6717d97e92245473d1e51a", + "x86_64-pc-windows-msvc-0.2.2": "fdfede202032b74e3a3e94034c26e23607b4a4326625953f48eae74c1f7d4d0b", + "x86_64-unknown-linux-gnu-0.2.2": "d19904a4eb2dca1b654639e82fc0327957c73427e504492005645f62d2205a3b", + "x86_64-unknown-linux-musl-0.2.2": "82c4759fd56e932fd94642172ebea98cb55f4fbaafc4d00038ce425b08a5547f", + "undefined-0.2.1": "2b7e04835f90d280458fbc473a2d4f47cf960d97769764deb059d0e85a978c45", + "aarch64-apple-darwin-0.2.1": "bb50bd8c7844ecc366c6dd99205d8cadefaae3a8bc10ea03d51e3e3634426b45", + "aarch64-unknown-linux-gnu-0.2.1": "e26270d4d3a2f0273ed40e1a237e085500f4db85255ed7d17ebaaa48123a0122", + "aarch64-unknown-linux-musl-0.2.1": "6ab4c698ee4d2efc2ad9db2d832d47b77feaa4944e8ac90bedb78eae76c0ad76", + "arm-unknown-linux-musleabihf-0.2.1": "0f58165c9947ea4a2178076fcf31f28186185f73537ff7e77aadcc04225cca0d", + "armv7-unknown-linux-gnueabihf-0.2.1": "8d36878c23be2c560bb2a14d9fb8e4d418dc14593bd2d7b4ad93aef82eed6d6a", + "armv7-unknown-linux-musleabihf-0.2.1": "f714dc140fd40d149659ced54ac2d5e9532957afc4d66c3071131b648e417f3e", + "i686-pc-windows-msvc-0.2.1": "65e6f8c12bd9feb46b0d415d2af9fb4bf018756c1158931a1e8adaa075ad41cb", + "i686-unknown-linux-gnu-0.2.1": "ce3973a4f332ef0ff996e1dcd7cfcbbcde977a5eb5febe118c4bd1387da66ee2", + "i686-unknown-linux-musl-0.2.1": "de3a0be9533980e74f1f6d834960cb3cda326a9aa33f86de18238ec9eca148c9", + "powerpc64-unknown-linux-gnu-0.2.1": "f60a5e600c56cac45289d738264ba99c27c1e345c7e75f41a01d65a3f78d4098", + "powerpc64le-unknown-linux-gnu-0.2.1": "b49dd3b2e9691daaa9793f1fced2b32edf0998ef55c630b5dcf18670005bdb73", + "powerpc64le-unknown-linux-musl-0.2.1": "068a869b16d7a1310d895c6bca1b6a6dd6c6b6b5d2c7998433d10b59aee0ff11", + "s390x-unknown-linux-gnu-0.2.1": "0d79f0c4ad50f6c397889723c22db136d7f819c21576d0a40fb8b762d136b80e", + "x86_64-apple-darwin-0.2.1": "438b30b81e86b95118ceeee0f8e2a2e018dccb22a5ef83985728610715336d62", + "x86_64-pc-windows-msvc-0.2.1": "959a818ecf5869d69a4689c3984c5c87c915d898d8327ced120806e0b2f0f699", + "x86_64-unknown-linux-gnu-0.2.1": "623069deb38e4f2d47054388fdf1e4f9a676853fa42080d3b9bf52cd812c75b5", + "x86_64-unknown-linux-musl-0.2.1": "d8af260263364fed8f2d4ba7c1c404bbf30f587cbc2a97807b6f8d5a1feb4cab", + "undefined-0.2.0": "352d767c63e4b8ad10d30f705b62121291c2492e1df3eab26ef6dc94948fe090", + "aarch64-apple-darwin-0.2.0": "fc2c917a8c2b1567b1d035f4a8122750f900cd813409f9d80bbd287e2597dfae", + "aarch64-unknown-linux-musl-0.2.0": "3504273e59259c6307446a2c7c1f49f194e8c7d8b79474cdfac97696a655fc34", + "arm-unknown-linux-musleabihf-0.2.0": "b4664ef3e726bd5569912e4ebab338263b5da150985513fcace4481b8422a09f", + "armv7-unknown-linux-gnueabihf-0.2.0": "202f293aee0e156611898ef95313be812f9de6273412a27a530370763c5a5daf", + "armv7-unknown-linux-musleabihf-0.2.0": "afa807e1ce8fdaed8fcb372a0ca46cacd39572d1e87613d4df583936bd8bbfdb", + "i686-pc-windows-msvc-0.2.0": "d65d94ade914f7507dc93122561e47996c5e0861bdcccdabe794bcd5c9185f82", + "i686-unknown-linux-gnu-0.2.0": "ac307c2cc67d81c3e22b0cb9af0e808551df4c1b50d1f92ee41bf6f07523ab3e", + "i686-unknown-linux-musl-0.2.0": "f81963f737b1398d4c3c5ee0d370e7c4706936949e82ae42b52e54fbcc1840fd", + "powerpc64-unknown-linux-gnu-0.2.0": "5bfcd8a0061edde591868437fe061728c4ae0fcedbe5a2671628eeda35b444ba", + "powerpc64le-unknown-linux-gnu-0.2.0": "d1338054af7e09ea91016fb0e3656646774e0223859498d814c7495b8a008c94", + "powerpc64le-unknown-linux-musl-0.2.0": "90fce3a907c1124391408bb5f71a795264a226c8fe31b58ae1808fbe802de043", + "s390x-unknown-linux-gnu-0.2.0": "e9554cd1d54f00675f768a47b7d68cf541214256d4db9b7d2c60ddab3e85bcd5", + "x86_64-apple-darwin-0.2.0": "5ac4c95dee24980ced348a86cfe4e114cfcef442ca3cc11046cf8b6edc65f58b", + "x86_64-pc-windows-msvc-0.2.0": "d716371c39d9075f664f9c30697fe0987fcad79a3d403f79b87f30e1022656e7", + "x86_64-unknown-linux-gnu-0.2.0": "a14c9317e2c000475851100c83c20ae725e998511b1ff890006d70532567a822", + "x86_64-unknown-linux-musl-0.2.0": "44a6168281d2fe1226f4af6c94b068006dc458a7b98ff4d4dac1991e161eb678", + "undefined-0.1.45": "79fee4ffca82be961a2cf79b024506a672a4e5ea1f924c1174ce3a2e5bfee54f", + "aarch64-apple-darwin-0.1.45": "4990c1ca07e87ea215085c798294205057efd7ed97d7d5f4c76e840fc366753c", + "aarch64-unknown-linux-gnu-0.1.45": "71ff02cac3e257e12d35fe9bbd6dc096858ec23e218b069b5ec6e5157db39e1b", + "aarch64-unknown-linux-musl-0.1.45": "7ca9c40f40b1b9f9673f78475a08e45b5c367bf3d73052896ee57a5f434872a6", + "arm-unknown-linux-musleabihf-0.1.45": "64526323d11e496ff7012821424be3bb102ca2b74bf47392fbdac4991674a650", + "armv7-unknown-linux-gnueabihf-0.1.45": "c26b07ccb7e35595addc328bfcb99356343b12d59c4d3f9676aebd7aec24163d", + "armv7-unknown-linux-musleabihf-0.1.45": "dd2fa3ecfaf7a73e86fcb7f3945873b242a3f863742530afc98921cc0daf30b1", + "i686-pc-windows-msvc-0.1.45": "b010c1ddf3c0de9ec25068e1f7026b369df453b78c6619634da9cdd14aa9d810", + "i686-unknown-linux-gnu-0.1.45": "2f14d4d41617b0358aadbf1bc8d77db60ca27200a8bdf66b8fd87fe66a18575a", + "i686-unknown-linux-musl-0.1.45": "bca68fe4228aebd2f5f9572a6cc70fe4a1d0c146a2d64135f264e4ae355bc3d4", + "powerpc64-unknown-linux-gnu-0.1.45": "f62159477309071a00fef10f0f0305e527bb6ffa1dac99650de365ba4ad6a2bd", + "powerpc64le-unknown-linux-gnu-0.1.45": "b67882e3778107610793c64048d07ad0d8e9ac627ef215f43ea45cbe074e25fd", + "powerpc64le-unknown-linux-musl-0.1.45": "1c19bf1fad5e032c812fb084826ce5630081a2863a4aa529f1689e091f340499", + "s390x-unknown-linux-gnu-0.1.45": "85f6ee976f34bca558da5117613a16dde793e3b05395463cff0f3d3547ca309e", + "x86_64-apple-darwin-0.1.45": "b820364764eb628a89e11b25acd3fe19dfce436546f4f7c8dc38ede3f7d939df", + "x86_64-pc-windows-msvc-0.1.45": "3de68132a6316e346f2ae3847dcedaa13ee89a8672b91544bc7d31f49362f20e", + "x86_64-unknown-linux-gnu-0.1.45": "11341c386088233e197707a30fd9b13233deb222fd366cd39f9daf8e5924c7db", + "x86_64-unknown-linux-musl-0.1.45": "ceac15973402e27c6c9b1077e35249437b2cbc26f60fc90be31114c47631884b", + "undefined-0.1.44": "295c120a2b63297d929ee9592c9b1993435a0c6907436d14f8bb93cff5ac4800", + "aarch64-apple-darwin-0.1.44": "154d45db602d5c4f8dbffb0e038fee581f161963f5562568be565625ac7bc753", + "aarch64-unknown-linux-gnu-0.1.44": "afb7039f033546d55730dae38a106dd56b358117a565a42bf3ebda9c48db53c6", + "aarch64-unknown-linux-musl-0.1.44": "3a461fb08697104ac5ff9749a6b370af87b95ad83008978ceffa7d0564fdc8c7", + "arm-unknown-linux-musleabihf-0.1.44": "db0371a9995d3d6c9ec9a7528ca535d0a5def1177127032360b374817030a71d", + "armv7-unknown-linux-gnueabihf-0.1.44": "a89e4114aa9855c9070e74c06f663213da614dc145ad21c0ec1aa5f0fa294c30", + "armv7-unknown-linux-musleabihf-0.1.44": "eeff1ff78345df0e86dc8f3144ea7af47d50ce9400f0d73798964a399167b250", + "i686-pc-windows-msvc-0.1.44": "c0f74ab851a704b8dfe6afd6bc7fad9d23947561d6c2da1a6cd5274a762c6c4f", + "i686-unknown-linux-gnu-0.1.44": "6e68901f49540494274fbccb83feda57bef7ef137443228669c790f5f1a14fc9", + "i686-unknown-linux-musl-0.1.44": "592020dd3bbe026d657341b0a7b28daaa57a68626585491a70863ae9f63a4769", + "powerpc64-unknown-linux-gnu-0.1.44": "1af1b7839ff2a5cfebc7997fc579cc61a34c8ac4c838edfc07cae7318f1c3ed9", + "powerpc64le-unknown-linux-gnu-0.1.44": "cdd52a058a4243f9e3c5a4c2ba8edacb969df09623344e45a7adfe5e61e83cfc", + "s390x-unknown-linux-gnu-0.1.44": "3022aa438b64de7e75c8adea6b1e9650874f63d6e317e4c294d24e41e53d1621", + "x86_64-apple-darwin-0.1.44": "0c2deb646f49ad7dbf8db9a9a7fa839b76654569d97b1ccd9d18bea89a34b3e0", + "x86_64-pc-windows-msvc-0.1.44": "f876f8c0867707db2d653973caf9ea306d65503ec772d0df9c02b6d0973fc7df", + "x86_64-unknown-linux-gnu-0.1.44": "68e8fda65c987cc104bdf7ae1eb332477733d44a27823032826f9370928568b2", + "x86_64-unknown-linux-musl-0.1.44": "1df53dac9e3a81df6fbbef36e23cd932b1cf0fad9016d943fef63d2ca284bd02", + "undefined-0.1.43": "0d57d370baf24dcb00ce59f6ab0d3dc2ceee41bd2c870a73fa517d3747d34a4b", + "aarch64-apple-darwin-0.1.43": "e52c5f38cbcbd238fc40382252e2d40df3df1bbcc1302da86c19324285e9d27c", + "aarch64-unknown-linux-gnu-0.1.43": "9dd96e89be41fa12b1101ac921265538871d99947ca3b31c87713f3edc6140ea", + "aarch64-unknown-linux-musl-0.1.43": "f0667c6d7e412ad40e5bbe5964e7448afefaa07d1d9c1a820090f3d555f9184d", + "arm-unknown-linux-musleabihf-0.1.43": "940a297a5ee1833239632c28c5570e661ff7281607e6c6da003167b70ac28d27", + "armv7-unknown-linux-gnueabihf-0.1.43": "1adc03865b683480c454994fd6a679607de2843e96a94d470c1e89abced8105a", + "armv7-unknown-linux-musleabihf-0.1.43": "84010f6b5010caba4186c7824004000687d326f91a9570e176a23ec627d5a83d", + "i686-pc-windows-msvc-0.1.43": "5e1896d8d83a58c8b02c328c1bcd852515ff760253622b9508228a062120f9c7", + "i686-unknown-linux-gnu-0.1.43": "ce026f056c1d4cbab5bfef762d1d08f8833191d595151550419d45e4b3a5303f", + "i686-unknown-linux-musl-0.1.43": "da54678dc50154ed8254308cf6f0c51c6e3fd34cf1f74f418dbdade980705fea", + "powerpc64-unknown-linux-gnu-0.1.43": "2bc10fa243971de5c7aa2ca1d993b431dbd191ffc0858071c4418f08983f642d", + "powerpc64le-unknown-linux-gnu-0.1.43": "b624d9c4ebe991f52452b038848e3d23eba9aaa790ff1727520d21f9efa876a8", + "s390x-unknown-linux-gnu-0.1.43": "d3f707cf4547669431eeb557b097682265c1534e8745a029ad48fd9eacc1c11e", + "x86_64-apple-darwin-0.1.43": "cf86ff709df440f3bf745af81217484d49fb9d5d6d896f3a9e1b9fd7956cc643", + "x86_64-pc-windows-msvc-0.1.43": "5765acc5bd938e3dd9e47b2807e9552129de466f31cb835b3c0da3029c46def7", + "x86_64-unknown-linux-gnu-0.1.43": "62217d8a269cd8901e84e3e197133cdb719a1fa37cd6f4afb07fab001163d247", + "x86_64-unknown-linux-musl-0.1.43": "c27d81bd87b60ca7bd0119316f0026b231c0418638255400b54e1094140367b0", + "undefined-0.1.42": "70ad9addeb1259afe4077ed6266c1d9359929cc5fe0311463e52275600814564", + "aarch64-apple-darwin-0.1.42": "d49e7dea59668962765b8aa2f3a4512b03c166042e380e7a6fec971146ce11e4", + "aarch64-unknown-linux-gnu-0.1.42": "d4f1192eb260fb67a7b2f69313474c5a08bb3feb777b6ce6e9a74b3c12d22374", + "aarch64-unknown-linux-musl-0.1.42": "3836a7a5147f6e8826ccfe7b0a081b16b26922ef8359c26b5d678fb50c36ad21", + "arm-unknown-linux-musleabihf-0.1.42": "354f1d937911f9683dc5f249a4bdd09c637f34b078cd7a2ab0df1133126066b7", + "armv7-unknown-linux-gnueabihf-0.1.42": "7ef29721204772ab0584acf4d98a43f7a7c54a3beae090b4c443128336492bcd", + "armv7-unknown-linux-musleabihf-0.1.42": "bada2af1a5cd37573ad88271e8ad6cdd8e038aa88335d667180d91cee4728445", + "i686-pc-windows-msvc-0.1.42": "7c31034d3869d0b38c64c3b5c066676e0f0e03b1598bc51d931d958bce4ef214", + "i686-unknown-linux-gnu-0.1.42": "cd7395cb8bf4380f895d88912d872470eae7656e549fec1c2fcf404ab84018d1", + "i686-unknown-linux-musl-0.1.42": "0eacdfc8d3fe450fa8203797ce1cacc9a6b43e9e4bcabf2901ddd5804b1f84cb", + "powerpc64-unknown-linux-gnu-0.1.42": "e7b900e759cc429baea47c6f200bf70517207388392c268bdf3dcea98727d271", + "powerpc64le-unknown-linux-gnu-0.1.42": "03da000f9ca22693e45b729d90eac800014d5dcefec22b74553ea6bebc0b3790", + "s390x-unknown-linux-gnu-0.1.42": "c9d6d0ead67084fde129e1672d14b56507cd4bc6bb96aef6b0ba6ed0ce085da4", + "x86_64-apple-darwin-0.1.42": "b510fb1ba6b039acac0e1b4278ef0b8e935feea4dc8006c68e3ac4cf793a0876", + "x86_64-pc-windows-msvc-0.1.42": "57d82e1b0507aa7b4f2259e411dde942876888265aff04ae1eaa3575ab53fced", + "x86_64-unknown-linux-gnu-0.1.42": "cf3ca3ffbd1971ccef9b4d6cf703c8cf1730b824888bf63a7f1ede13943ddf7d", + "x86_64-unknown-linux-musl-0.1.42": "ba96ab47ec0366abc78f8f91613d9fed314da8ff414262535a7dc605caea5a9c", + "undefined-0.1.41": "8aff538cd8cb640bb12b669a6e4a09f5c077c4d39d22be1245bb93965b5a249b", + "aarch64-apple-darwin-0.1.41": "c493ac2c5170d656499b7aa4a06d0c20d1c42b8b3b006b72661c747626cb7133", + "aarch64-unknown-linux-gnu-0.1.41": "84c7427e700888ed4fd8ccd368c69cf28212eac4a81ead1ce376631e51127a1f", + "aarch64-unknown-linux-musl-0.1.41": "a334362acc469af8928df113e881638e23582d0b86eef133a58c047e904a3974", + "arm-unknown-linux-musleabihf-0.1.41": "8348e5cf28b04ca15e8f2d04a38ffd43daccfa3b1dd82cefafcdca8b692fcf9a", + "armv7-unknown-linux-gnueabihf-0.1.41": "e0e5b30a899924516c574d9159fadcce008f5f11a5dccbdf95eaa35c24b28c67", + "armv7-unknown-linux-musleabihf-0.1.41": "b4ea7eee3c6b2ed72d0f0602304f64d405ed4dc600c8879309c9876818c5e5ce", + "i686-pc-windows-msvc-0.1.41": "d090a0e918b889e963f681322a3f0901d2dae78be15afc2907ded13a8534c815", + "i686-unknown-linux-gnu-0.1.41": "21b6ad517cf12b5ff2eb030b0dd523ca49e16d9d99136328f1e8197ec50d981c", + "i686-unknown-linux-musl-0.1.41": "40ed1d7ee942d25458e9d59a27a261cbaaa3433a966aadc141e48deeaa58b243", + "powerpc64-unknown-linux-gnu-0.1.41": "799f5a7e1ad802a8e5a7dcf3f340bbaf3ea74cc330cd0294cd9787064cd271a0", + "powerpc64le-unknown-linux-gnu-0.1.41": "1d80e8205503dab569b7d5d4f833a32b7163bd7770917321185e078e84f64298", + "s390x-unknown-linux-gnu-0.1.41": "d8ee3120408bff3313832d623debb8d2dea79ce05427daf534ee5f54e9360d81", + "x86_64-apple-darwin-0.1.41": "af544d0fb0d902b5e4ad1ce574b9bcd1ced6718ede9f7a2c2c163c531b10c602", + "x86_64-pc-windows-msvc-0.1.41": "0d9567b67a6cc6404c4163f8b661561502440eb68698ad7be1197276717f8d75", + "x86_64-unknown-linux-gnu-0.1.41": "8d4782acbea2c04f34d90df25c8a7cce62e3673949d3be4a2baaf610385d5db4", + "x86_64-unknown-linux-musl-0.1.41": "9b0058e9fc92c96e3530ec4e1a998e435214cb3905e7284e09cf7c68f1c33c01", + "undefined-0.1.40": "c842a83107554c3a90451e7e6d935aa9d3d066bc25e1cba5c66b80c10754384f", + "aarch64-apple-darwin-0.1.40": "28e92ed4534fa5085050fe51db0a641c319377e6498e5ee98d892ae91139f603", + "aarch64-unknown-linux-gnu-0.1.40": "452cd7ec339345d4067f27b6db672f02db942bb525c80c510bc3bdd7596d74b3", + "aarch64-unknown-linux-musl-0.1.40": "b2fcf9819a5fb53aa98a0fc19ecee6bcd862969886de9d63fffe9b3270d284d6", + "arm-unknown-linux-musleabihf-0.1.40": "cbeada3fbd6c380aa5524e8e963558da11a214d9c416da64428d92af555567f6", + "armv7-unknown-linux-gnueabihf-0.1.40": "7ae8180326f005e12dfc8be04c2f88c54efba020d5bdfe49608e1b3407956e55", + "armv7-unknown-linux-musleabihf-0.1.40": "0c1aa0c94457412d466798e565aefbd11e9de4e1b2d4dc9ac0ae45c91d01857f", + "i686-pc-windows-msvc-0.1.40": "c985f0339bc7375fab00b4a06d1e215017516188040202dae9d6147196a4bd60", + "i686-unknown-linux-gnu-0.1.40": "e1e5c191d4b5634be80a7f4e79484d58190848253a43c678b8c9a8811483fe93", + "i686-unknown-linux-musl-0.1.40": "2b6cc95ea515a50d8da69536eb68478009ec7ae0fc94a13f584be11eedc4a4f9", + "powerpc64-unknown-linux-gnu-0.1.40": "e7d56ee62672e809ddcc7f90b863d5f1a0d314fb613647abc830526b0161b975", + "powerpc64le-unknown-linux-gnu-0.1.40": "8c5217c8b58824f1939748818fbd0eb57d35196b361c1dad774bbb2ff0b38869", + "s390x-unknown-linux-gnu-0.1.40": "60689531d1a4308396dfacc16a466749730fdcc9c5fced509172349a2f5d9b58", + "x86_64-apple-darwin-0.1.40": "9b29374bc79dc4cca9b6e82e420867a06806651f814081987927fec5bc3ea85a", + "x86_64-pc-windows-msvc-0.1.40": "bf3845b59aaf6bb383c6caf89eae949a18106387be154fb5b2ae9a4e4ed646a4", + "x86_64-unknown-linux-gnu-0.1.40": "d9175308fcd2bd4b953b05cee66a022380ba493c01b2d35884684719d599299c", + "x86_64-unknown-linux-musl-0.1.40": "7a5a1173ba3319f176167bd32544ad5d8edf0f38c753820b5627b036c74aabad", + "undefined-0.1.39": "56e3247a49c76a42c7f686292d8f706110a308c45153913b165657f8db8bcbf7", + "aarch64-apple-darwin-0.1.39": "35e320cfa41c8902d66e2c491b5b2d2414e1c6443177c660736de657c66fb2c2", + "aarch64-unknown-linux-gnu-0.1.39": "62b24363f21c07e02f62cf8e298ee6ec30e844006f3a52ac55c02903c755586d", + "aarch64-unknown-linux-musl-0.1.39": "1a77b4cd4bf6ab52efc780fb252097184c23f81233a8f508e49939eb2e6e690b", + "arm-unknown-linux-musleabihf-0.1.39": "c8f628862e665199b82826db24db3007c16c361c8d0f31d8dfbd4be2d7aefdfb", + "armv7-unknown-linux-gnueabihf-0.1.39": "63342dac1cac572f8f12b179d91fcb0527f115f6a7ef17ba7aa24b699854cf39", + "armv7-unknown-linux-musleabihf-0.1.39": "a9013c428f1505e21e56715e6c91a4e45367b7eb341a14a51663e61305cf7162", + "i686-pc-windows-msvc-0.1.39": "53e4c2ae32318699a5f6c4c7f19f1dd114b39b15e63704be902ff894b428dfed", + "i686-unknown-linux-gnu-0.1.39": "f0280538ed9bc68283606e4db031f9cc4c4c8404dc5719e9d1f03f705762966c", + "i686-unknown-linux-musl-0.1.39": "baa9ef041ed3834d7e5869b10945bb804449e23ea0ffbe91a9475bc4c4e83fe2", + "powerpc64-unknown-linux-gnu-0.1.39": "5d0312a1ee77d652115a21021f47e374886e84e8d986f3a1bcaa7e5851cd2767", + "powerpc64le-unknown-linux-gnu-0.1.39": "07b1856e71c35f93ef5359c54f63d819841762316bf4d7c2774e178412d9090c", + "s390x-unknown-linux-gnu-0.1.39": "773725ad1e02d6f4c90494fad5309a7cb4ce03b2e377fad336fecd895bc42dd2", + "x86_64-apple-darwin-0.1.39": "cf5393f17de6961c7140d68f80e09c1f43ef47f8fac923ccd41896cce698f296", + "x86_64-pc-windows-msvc-0.1.39": "a44eb417b0c1e1c7cffd7349b8019d684f6200d0b5cfaef7dc322e8312bb254c", + "x86_64-unknown-linux-gnu-0.1.39": "e748caea4ddafd3aebba771f4e8f51fe5aa517b71151a648269b3be982a349a1", + "x86_64-unknown-linux-musl-0.1.39": "dc57b6f64ae82fe604390e05cf66092fe598ae0fd0fdea9d568f6c4874fb3fe2", + "undefined-0.1.38": "1fde633a2c16b51e43f346681471b3daf26e2b918a6d13de170eada19945774a", + "aarch64-apple-darwin-0.1.38": "9ed4dee0e0f3da47fc85264fed79ea118f66043481ad71182c21e838f4f207dc", + "aarch64-unknown-linux-gnu-0.1.38": "8d5afd982060a11748a46b4ca8ef9a2aec52ea4736419dc7c0dc53ad98843454", + "aarch64-unknown-linux-musl-0.1.38": "b15f7f84f0975825f6f0e2f10ec0ad49ad3bb48d6b7bd89f058e578a939cf383", + "arm-unknown-linux-musleabihf-0.1.38": "df7fd36d0de1d751f091c431d955b9d0a5cdcc74f446bdd65b91aad97cd016d2", + "armv7-unknown-linux-gnueabihf-0.1.38": "e0a55e1dde1d1421a10d4706a8e79f37039fd57026f02e629e93b6feea504cfe", + "armv7-unknown-linux-musleabihf-0.1.38": "b1371b764e2840e5a4ef3567a36626b4aaac2ede2165d42e5ac19683ae4beaf1", + "i686-pc-windows-msvc-0.1.38": "4acad6296bb67eb9900fefd0ccca8af7d770f485f40c0545120e7b452ef7a0dc", + "i686-unknown-linux-gnu-0.1.38": "c7065c75b52ba3b9eabb69378e01a1a5d4ca0f80545dcb8a027080fdfcb112a3", + "i686-unknown-linux-musl-0.1.38": "b65b24356366655aa112c18205d3214fd5fd3eca80888392f7b1e25d215f70e5", + "powerpc64-unknown-linux-gnu-0.1.38": "2eaad33bb7d742498aec2dc6ff52ebc82103347db74ccdf202e0dbe2047815a9", + "powerpc64le-unknown-linux-gnu-0.1.38": "a1110c55b4383fb0dc967ae0ee3950499915d34d69d10c08c39d66340f28651a", + "s390x-unknown-linux-gnu-0.1.38": "537202439156061acea27ef3be90c524368ceffa642f43333dbce223c35be866", + "x86_64-apple-darwin-0.1.38": "f35f8e07f66109867f10bce591188e5a54a822344517bf5150fcd28c616b744e", + "x86_64-pc-windows-msvc-0.1.38": "decfffd2e6e707b7b51b0981a51d6d277e8c15aa904be3c820dbd46b35a35a95", + "x86_64-unknown-linux-gnu-0.1.38": "9b19bf6067ebb2e200211a300f0721e35144424f8f0f703dfc50c0bc745f69df", + "x86_64-unknown-linux-musl-0.1.38": "29635ef915c1bb4048720e6b5e19f424a5a5f3934adef5a0e036295256c098df", + "undefined-0.1.37": "158c7d7a9bfe2dc8430eeaa1e985a883d241745fba1acfb75e8d2242169983bf", + "aarch64-apple-darwin-0.1.37": "1a160798d79a626a06e16634d77315e9dbe363ab6bfdaef424f7b5bffd30cab7", + "aarch64-unknown-linux-gnu-0.1.37": "d59ed726780815d48f95bf4f7a2d9c41aaa05fc746d5a8af49ae11d7e1f3f34b", + "aarch64-unknown-linux-musl-0.1.37": "d86cc49c68c9efd1116fe164f4be14d096d20f846ea50fb02148cb44ed3d920f", + "arm-unknown-linux-musleabihf-0.1.37": "2ad8488bbc2f519bcd2a4435aea33ba79c0dc71fd61f90d898964a02068b8aab", + "armv7-unknown-linux-gnueabihf-0.1.37": "86441af7ba294abf25ffd60a452955db4e8610490bdaf8c054976bb31d96baa3", + "armv7-unknown-linux-musleabihf-0.1.37": "7b813fdcadffd54e629dc65541edf2d90d043083e32def8332bf87ce2443f583", + "i686-pc-windows-msvc-0.1.37": "e676cacfd871e33e7c4972ae241ed6362e20159261f9da8545a3816e436b59b0", + "i686-unknown-linux-gnu-0.1.37": "bf4c37a3aa6ee61a409c89261593909756dbbd86b0819d5003dc3ac83aa081e1", + "i686-unknown-linux-musl-0.1.37": "ecf205ac1196602877ad24d1c5fef5c8688d66262d358fe818155190ff0ad8a0", + "powerpc64-unknown-linux-gnu-0.1.37": "4a0cc47732dada5ee1e1392fe6ddf6e2947a6bcb0b61e83936eaf1ebd363b5e7", + "powerpc64le-unknown-linux-gnu-0.1.37": "70764f4145e931dfbc195b4f6c2ac592a776b34402480de8dc6145cf2196b7e2", + "s390x-unknown-linux-gnu-0.1.37": "222b3567a5ce77b4ee0b8732cd18a34a88e31e0c5230c652609da922b83d7d36", + "x86_64-apple-darwin-0.1.37": "61502d8054f12aafd56ff193abca0606f688fb7d84cea40e94ff3de5a0cc950f", + "x86_64-pc-windows-msvc-0.1.37": "6bc00aec8b4731a7883b88d27450c959055a24a1f5858777313addbe850a7cad", + "x86_64-unknown-linux-gnu-0.1.37": "33cb815958a3e84b929dc06d42bf5170a5a5eb60b413f2243b4e62e75edc3e49", + "x86_64-unknown-linux-musl-0.1.37": "2c591eaa0be3711dce1ad6d07a7564c8738b5c16b009c84037727f94c073a962", + "undefined-0.1.36": "1d7cf52af7406ddabc4feb66dee5c4573f7b22a5ff73fd8a5b47dec7897c8e7e", + "aarch64-apple-darwin-0.1.36": "d37641e38512b7e55b9eda7f8a6cb831375b5f1e86f0f326dfe0e6a8602ca7b6", + "aarch64-unknown-linux-gnu-0.1.36": "c64b7d23c3e27346a5b31a95fc16663407bc72aee0b17eb0aa9d069e312e606e", + "aarch64-unknown-linux-musl-0.1.36": "89740c2cb16bb57dfb125764fb889f86b225cba0b8691b2bbf30baf96d2348c9", + "arm-unknown-linux-musleabihf-0.1.36": "a802fd2c6ccd2ca8dcfe85fd2c5fb58689c5c082e6ce8e3aa1b1436031c70879", + "armv7-unknown-linux-gnueabihf-0.1.36": "07b8fcdcde9f43c94ab4d5296c1e8c86f41589f4d8d15f124311bd3c1f019777", + "armv7-unknown-linux-musleabihf-0.1.36": "78026455886e3c264eb952c92d2795d19cffddf529651a2d8f20cadac4ad31f8", + "i686-pc-windows-msvc-0.1.36": "e945b6a176ee08d7440703eb4a975a8b7d383b8e9b480f724dc5d614a90a080a", + "i686-unknown-linux-gnu-0.1.36": "b1ef60a4b5b153a3c11e9177e2d72f334e1c7d9311bea75d42faa8ac8c9d4e42", + "i686-unknown-linux-musl-0.1.36": "7fbc9f02618d22f54644c29c65cf6d5ff3cd813f1fcc26cdeaf3ae393057f604", + "powerpc64-unknown-linux-gnu-0.1.36": "678a5fba4ec6b6d52d6de833a447b288869df501ba33399ddb437977bac14efc", + "powerpc64le-unknown-linux-gnu-0.1.36": "873a0531ba05ff56ee452365e4ef9c40acd4c4e6225c250e6a6c4c65d728ef70", + "s390x-unknown-linux-gnu-0.1.36": "14b4956ea11f85a43031509c6d01e8bb941d946f974d405f3cf5dc65500f47fe", + "x86_64-apple-darwin-0.1.36": "30e3e1156c38e335b969d999b83d9e9f6fa5d497c80e5cdf1c43339cdbbd02bd", + "x86_64-pc-windows-msvc-0.1.36": "fd43e117e08414970f84cddc6300c5fbd5096be8f9c981d5b3464c28720ddcfb", + "x86_64-unknown-linux-gnu-0.1.36": "7108a5709273156a176394d6da4b64f63b3c658e350657978eb1ba4c9e287e02", + "x86_64-unknown-linux-musl-0.1.36": "3c95bc263adcab13ae5c7e9a0c97e9de5037f8926294cf22902d04eb99f951ef", + "undefined-0.1.35": "033df44758caf9a2d81675419c9ba3bfd9a15255e670078b236b373a6ca8cef9", + "aarch64-apple-darwin-0.1.35": "d5c0740e4a64c5d79150f1e819d903ec6281906bfce433bfe599312de7994435", + "aarch64-unknown-linux-gnu-0.1.35": "70721a0535ab34354b2fab1461c6ccfc5949943ad34bfec179f4558aa331635c", + "aarch64-unknown-linux-musl-0.1.35": "59e4100cdad71bcbf4618516ba860b1829c3b2f255bee00794b5ae1823cd1388", + "arm-unknown-linux-musleabihf-0.1.35": "4832abf5ab1c3d238e35a1634c6cb62148f5fb722e48d498c1cb10876efaecb5", + "armv7-unknown-linux-gnueabihf-0.1.35": "ebdda308333bf6ee351f0f225d7076697c316e6f671a23caa8922f876ba2627c", + "armv7-unknown-linux-musleabihf-0.1.35": "6ea7e2e6953bf3afcc973fea7aaf12ada410407432d86e7665ccd641c503d739", + "i686-pc-windows-msvc-0.1.35": "af6066ee9197a675a6138a118d3125890468ea036c81d3d3327329830ad3d587", + "i686-unknown-linux-gnu-0.1.35": "9ad7c1b2a4555b37e54f3e999482d0301e8d030ce3e99627b0fcb1435e853203", + "i686-unknown-linux-musl-0.1.35": "41be10fbc59cbd7a059f0fbd33440c7b034086d36395546856f2076cb562b4c4", + "powerpc64-unknown-linux-gnu-0.1.35": "df17a85fb14b5e295bf45a2e371ca0f78463ac66b5fa6d1c1f51f22f3eed592c", + "powerpc64le-unknown-linux-gnu-0.1.35": "d6300efc3079c3d7fbc861a1907c76c9e9f79bb0b3b6effd39bfeefb38bc9bc3", + "s390x-unknown-linux-gnu-0.1.35": "6fcece3d517c4a47e4dd40ef8cf40c18bafa88c22f7846abe80f10ae494260a9", + "x86_64-apple-darwin-0.1.35": "9de159d413f235d791377ecc7266b6c1b076c8a638772f04e6dc05fca32b6b4a", + "x86_64-pc-windows-msvc-0.1.35": "543ed32847307ef50b5d21c1f9f4968e1e8c97e75a5899f80de5a6c26cd61888", + "x86_64-unknown-linux-gnu-0.1.35": "ae2081221ea244e4998b89c408421e9922499fecf371c7310cfa0e951bff2a9e", + "x86_64-unknown-linux-musl-0.1.35": "9abd44dfd8958e251a3b29a1eb95f152fef94f38fcef8bf534b86fd94ef89e35", + "undefined-0.1.34": "ff93be812726a344252374ba1751b0089237439077a30c9214fb9a44bc32582b", + "aarch64-apple-darwin-0.1.34": "40233daeac0eca7ea233b79a8f312fb9d85913fc74547031c81f2ec7c3f3aae0", + "aarch64-unknown-linux-gnu-0.1.34": "e4fac2f30a2c8e1773b08d4f50994c484a8166f64fc2cf0ed19ccac62f5d01a9", + "aarch64-unknown-linux-musl-0.1.34": "e13bc0a5fa7aebdb83627cccb95d50d202d6c1d08ec3bc8ff035abc6c5438edf", + "arm-unknown-linux-musleabihf-0.1.34": "ad0fb8ab07cf301192a829684c8f3b0fc3d024d7e75297c2ed4dddd8d249fc89", + "armv7-unknown-linux-gnueabihf-0.1.34": "48b5588ad3ff90944a13c24744a14964b68a99fac7694d9a79f4cf38aa38b386", + "armv7-unknown-linux-musleabihf-0.1.34": "7591b8ee28f1c79b9fa35a32a3f3af32012a221f01851a9747e2686dffe735d6", + "i686-pc-windows-msvc-0.1.34": "1dd6e548b6f3f661152fed143257184439b819334d7f1124aab015a4919dd4e6", + "i686-unknown-linux-gnu-0.1.34": "e5b8ac197e33d4884cdeaedf48a90bda44dabff330c194ca55ceff769dd8dcb9", + "i686-unknown-linux-musl-0.1.34": "2d43d99471b8dc32f6776559769d9dca1c9b587445f9be12ae751d7c58947f06", + "powerpc64-unknown-linux-gnu-0.1.34": "a6774692b35f66f871c537e0133d4e1ea629862c73dccd6221307a609f7b4cf8", + "powerpc64le-unknown-linux-gnu-0.1.34": "8ac52b6ad77eb013fa289b42f465b9ab8ba5f861cd76c828c69aca6121682cd8", + "s390x-unknown-linux-gnu-0.1.34": "2d394cf56c1f81b434e45aa0df61b48241675a5b5c97b91b6d511827aa0f2ea4", + "x86_64-apple-darwin-0.1.34": "2f6933cf0e10e99cb3575deebcad5cc143961a3da167c4b21eff4d600ef872ec", + "x86_64-pc-windows-msvc-0.1.34": "98c824618c808cf4ae1af16c5341086f0038e0dc1ae7e0a805c872d6fcc033b7", + "x86_64-unknown-linux-gnu-0.1.34": "1d3b075c89e5763ddbd19efdaf03d6ad96a753db889a28f5127227c40bb9f0bc", + "x86_64-unknown-linux-musl-0.1.34": "bd162c354d0406c5ce91c0b16d130a62edbac6528ecd90a7f5b3f2d315f12df3", + "undefined-0.1.33": "54a67168f4c5cdf44f4197e948cf4ecb65e71001f49584d79eab82358bbda813", + "aarch64-apple-darwin-0.1.33": "6e6af126bfc34a9d0e02641bd99fda1201a81356455ee4f196b760b3d995cb7a", + "aarch64-unknown-linux-gnu-0.1.33": "12f04ed3437f06ce6fc0384958e4dbb74c441bd9b46d5f83b8342c6c9247da97", + "aarch64-unknown-linux-musl-0.1.33": "580542f3997a10191091cbc1f142e1526afb9e98aa6ba0a709245cfde2d99d99", + "arm-unknown-linux-musleabihf-0.1.33": "febb8276163a99d18fadb04f9dbe298e613b1716c5721a3e2433c2da0fd9b69e", + "armv7-unknown-linux-gnueabihf-0.1.33": "0302de0a1f48ae05a3a0f7d7924f8845012628fbc55da590037d433bc5977e8f", + "armv7-unknown-linux-musleabihf-0.1.33": "db82699a990ab3f37709dd0108a336d1cf3e9d3d0f5cd906795eb1a1d0758714", + "i686-pc-windows-msvc-0.1.33": "753a1ef176fc87846a48eafdda3b0b5e0a3e0e70a746f6868e6c8c097c6322c3", + "i686-unknown-linux-gnu-0.1.33": "7b55900bfb6423541fdb129ca34396efb614ebfcb8e40027d7861907278f9258", + "i686-unknown-linux-musl-0.1.33": "302f5755e99fe449664135069e60be7bfbd931d09e22f6447fc0f64c82a464bd", + "powerpc64-unknown-linux-gnu-0.1.33": "8b007854d21401c41cf2084e21664981aaaa7cbfa5df71365858d12470323823", + "powerpc64le-unknown-linux-gnu-0.1.33": "02ed93b767b1d4a2d69c61932366104bd016417980cf71c1f898fcd93ec74232", + "s390x-unknown-linux-gnu-0.1.33": "4341f067c105607d971dca3d9c79cac59b3e8cf4f8f61a50fe87b6236d97cc44", + "x86_64-apple-darwin-0.1.33": "3e32e8242b32c1231a45888134b5615f45bfd938fc865d82f270a9ca76ab1a90", + "x86_64-pc-windows-msvc-0.1.33": "b5adf2b7abdd72ab763a1a65624bdbde178797387c461a6e12803157dbf62fee", + "x86_64-unknown-linux-gnu-0.1.33": "c582cf587db50ae4dd50360c5bc5dffce110c7e457f1dc1955fc6ad447bdfcce", + "x86_64-unknown-linux-musl-0.1.33": "6a9877d92235c225ba82d18a6960489a8463716ce1f858f793b971f4aa2f7abb", + "undefined-0.1.32": "c0fad19c5c03cfbf104ccb8e21c510aa556f5d296ad83a5faa737b4dc763a932", + "aarch64-apple-darwin-0.1.32": "2f33ca87c17c27d6c2e7ac45b26e19de1a07fcd5e9312670a7bbb90634278414", + "aarch64-unknown-linux-gnu-0.1.32": "ffd433c6508a165f29688694b436289214c5f4569ee62e4b8b00a95dcd661cee", + "aarch64-unknown-linux-musl-0.1.32": "5b19aeef841ad88313afa80dd56198af6a33c3be2f890936e88e5ee197b914f9", + "arm-unknown-linux-musleabihf-0.1.32": "ee9a2df7647689dac93f7e98f0f71ea04977b9cbf899a56b061aca594542a8c0", + "armv7-unknown-linux-gnueabihf-0.1.32": "ec316ac2dc8d5b8ba81e3f19f4550bbdefa5c36ef2a8a7bc90afcc82f37e3f96", + "armv7-unknown-linux-musleabihf-0.1.32": "43c0dce83f4450ee6442ad768071f834e0d4dadedf333e3d6ff9d2e9b23f0487", + "i686-pc-windows-msvc-0.1.32": "df848217d4ef5f7a0d55572ac307bccd0052d97c5be21437ec717bb9e461d85e", + "i686-unknown-linux-gnu-0.1.32": "93c79fa1bfc8d558176cdb5a457c106e3327a5a00c01127d099310fcf312c8d7", + "i686-unknown-linux-musl-0.1.32": "c6804b16c453d08acfb0a62a9e537d526447df06bf6eba2e70b407dd620ccecc", + "powerpc64-unknown-linux-gnu-0.1.32": "2b69efb247e543134ac2a5cc662b90f73ed1a2f23eb0a09475db16a82ba7bfa7", + "powerpc64le-unknown-linux-gnu-0.1.32": "a421a69614e9600df89761193f947f8a1411636dd676a7eaef2f8a38e30d6a51", + "s390x-unknown-linux-gnu-0.1.32": "4a6e350dfe0b13b56a0877ec033f97c6e24283dd99c9664c755a9ff79a97fd06", + "x86_64-apple-darwin-0.1.32": "d3450c42b890767f2bad09e496f35f392e0d52f502a0d12b207371852b013a44", + "x86_64-pc-windows-msvc-0.1.32": "4df4192f5c7824bdfaecd4d3d8fb6310ced6e0980592d5d44b7afed88ef89ff0", + "x86_64-unknown-linux-gnu-0.1.32": "281204339346c00f395332cec43de65bcdd3675a7dbe17b5d8d1292d7854679a", + "x86_64-unknown-linux-musl-0.1.32": "a9dc63f9f48a1964340488e4d139d64b59fc14b06733a165af06d1857980dc97", + "undefined-0.1.31": "b5b97391649fb35d588a7f741339e8862b731d2d31448462758428cbd8c51536", + "aarch64-apple-darwin-0.1.31": "b00f0d2fbeb2806790b18294c0bf82ae8e69043a7da29d456b369202b261aef1", + "aarch64-unknown-linux-gnu-0.1.31": "9de4de11f1297a96aa731cf2f8ed7bc2e85405692dd3216d50685062b877ec75", + "aarch64-unknown-linux-musl-0.1.31": "fc4127da459a7f7264662faca4c697c71ac5c5a13dc92354520453e1f62426fd", + "arm-unknown-linux-musleabihf-0.1.31": "b2781e289f12f47e7f6af9e908c404e9fb47c74935f3c5d71f6bd34e68c2f88d", + "armv7-unknown-linux-gnueabihf-0.1.31": "3ef451b3f6dd065a17b3f25d945e3ff0084e2d29c2487ba2cac01f55caa19368", + "armv7-unknown-linux-musleabihf-0.1.31": "ed6888e8c090593857b9112af8cdf918053e09cf26cb960af73c66f2fe708e1c", + "i686-pc-windows-msvc-0.1.31": "84b3a4480643c722d7b5a53b219d9e4546b428b9acd5bf003584e3d458b61a4a", + "i686-unknown-linux-gnu-0.1.31": "01e6a76d251f692fa18630b99b0dc941b11ac9d08cd01622272892f6a75708a6", + "i686-unknown-linux-musl-0.1.31": "8e3a1312a7d54dc05e661c2af91164b27ec6ba992d37af7c32611c83d970b00e", + "powerpc64-unknown-linux-gnu-0.1.31": "74ec1054cde973ee495dddc95026f12fa7cf584c1b67b728cdcad118d6524b33", + "powerpc64le-unknown-linux-gnu-0.1.31": "cdb328074d4f795fee91fbe7e6930149f8b7b5a7921d96e5d7c00b574a4583bf", + "s390x-unknown-linux-gnu-0.1.31": "90fc1a8614195626642470d4e31b52fd3ac27d5d12df4fe81e008568822c5017", + "x86_64-apple-darwin-0.1.31": "c10ba963e651ab09a5b1cbb8ac1d0ee74c8f7dca99eab7d41cb9a35b5b7c06b7", + "x86_64-pc-windows-msvc-0.1.31": "980833bbbbcffb3cf0e2abaf8963cdccfcb4cd378ed980a4168be124efda5c0a", + "x86_64-unknown-linux-gnu-0.1.31": "f5b4508eb49d8d65fdc712267d18312f4e3d67f168a8d9b4bb24a28bafdaa831", + "x86_64-unknown-linux-musl-0.1.31": "02ba313bd081d2a99137f123e30692c991d0c6d9e190bdf403fe5b1a53c2bc2e", + "undefined-0.1.30": "72c816316dc84a6daceadfb856b70f046db7d1a473a16a8bdea5041c786c1693", + "aarch64-apple-darwin-0.1.30": "2efee289f003bf2033a44396886836dbff9d4e76ad2e0ef6d81d7a39a1068c49", + "aarch64-unknown-linux-gnu-0.1.30": "169e02774fed015ee7e780b614548f2c0aa9041a6cfb99b7f57cd9bfdebcb367", + "aarch64-unknown-linux-musl-0.1.30": "35883d461fa233b076a9643e4ca5b0f61ddf0dfc46d545156793beec673acac6", + "arm-unknown-linux-musleabihf-0.1.30": "673f9a4297e555507cc3e0228693b94d0e2f689022cd04076c49df2b0e84b6ea", + "armv7-unknown-linux-gnueabihf-0.1.30": "79475a7560e463c484acee1f0da822c32316bc08086445717b5cbb813821593e", + "armv7-unknown-linux-musleabihf-0.1.30": "168ddee00a64eef97a709084ebafb822bf47ac1fc4962cf44d60a64fb5b8d4c5", + "i686-pc-windows-msvc-0.1.30": "9c057e5bb6e86da7477fddea1f942cc605c7b780071875fb9b4c3b1931083199", + "i686-unknown-linux-gnu-0.1.30": "2e3e0925aead2a8e6e2a5dbaa36ac8c292758398d412eab6b01c0651d956df1d", + "i686-unknown-linux-musl-0.1.30": "6df4acabcc41139433f24d37e4acceeb576826f651b815f3f363afe467e5c5ae", + "powerpc64-unknown-linux-gnu-0.1.30": "57b9885562cc038d0e784c5875e9e03c7dd13f0b6b3f5fceffb573891ed1b68f", + "powerpc64le-unknown-linux-gnu-0.1.30": "02f5f9e086980b4429d51c8e73ee5098f69f00edd0684465cc15ee7e2d5eeac0", + "s390x-unknown-linux-gnu-0.1.30": "e16fdb1ca6941eafdc4ff992ce8e7905c493da3a64000dd7bd362bfc75766627", + "x86_64-apple-darwin-0.1.30": "a99071ba49044263a24be61aa8341bed035d15f3f1023e3e29eb4522d978a485", + "x86_64-pc-windows-msvc-0.1.30": "0f8a4b6d093a91b638ac1c9683ed484c491e19911249ce64c26cd31501a90206", + "x86_64-unknown-linux-gnu-0.1.30": "bf102d20cf00bd2c001610570b6cd1409b63db3f5cef6b55e386d64f3d4724a5", + "x86_64-unknown-linux-musl-0.1.30": "ff073ae9fce030fab64d1b93fc7a4688a0495eecac7316d55e4dc08a9283a326", + "undefined-0.1.29": "dad20061d2e13b281925c26f6e1f0872852d095774b241ca8d963a13da4f4249", + "aarch64-apple-darwin-0.1.29": "a5f4cf59f873ea6ffb8d1c11468936f508e444dba0c8278b8f550e811bcfe77f", + "aarch64-unknown-linux-gnu-0.1.29": "f4227d02eecfe3f2a7cfb42b25630dd5a4e5f5144231b84b5acdf6be0158a468", + "aarch64-unknown-linux-musl-0.1.29": "22bf69e1cef9958774751b2770278a0aebaf132c51c04cc6800f0884a18273c3", + "arm-unknown-linux-musleabihf-0.1.29": "54b34a71c3d3f011f9920caf0b8a9081a62ec16c77e0c69e947c888782f5f6e6", + "armv7-unknown-linux-gnueabihf-0.1.29": "86c73423657e91cc4e5e1d541f6a061678bb098bb23b74fc44d79524523031af", + "armv7-unknown-linux-musleabihf-0.1.29": "76108491438a15f9acae142afdec5ca0ea31437ea909240a2534bd7aa45ac96e", + "i686-pc-windows-msvc-0.1.29": "3dac7e8f710f723accadaf876b7034cd1108509e95fb1ad7fff3a8bf579bda3e", + "i686-unknown-linux-gnu-0.1.29": "e117aa0b4b1f588699a4259d4e7485938b6aa00d2ab21093ab0047304450fdf1", + "i686-unknown-linux-musl-0.1.29": "690682d5103b907e43c9704fdd26e5f09ad68894b8135db823b391adef654a91", + "powerpc64-unknown-linux-gnu-0.1.29": "27aa0b5c7e2278ad74afb27f1f2843ccd6bc0c1c8674e6a10e0bcec73e660012", + "powerpc64le-unknown-linux-gnu-0.1.29": "90cf042117be9de01e9e2348a7200954fc25c6989b41b4d5e995b8f42dfa5fcc", + "s390x-unknown-linux-gnu-0.1.29": "4242e2cf825ca433947d44d985eecb11460638f1a8427cc9fe6fa6b70de86c6f", + "x86_64-apple-darwin-0.1.29": "cb51b2f22f06e99f79ee85f3d353a93a9c25ad674f150490e391166a97fa6db8", + "x86_64-pc-windows-msvc-0.1.29": "7926be66598e6c0f2b07c6db72a1d9c61f7b1cce72663266dcdcbf4055e1c9a3", + "x86_64-unknown-linux-gnu-0.1.29": "59e9df30439a01e6852da3f62615d6e6fb8fd79029ee86c7ffdd3fc06c76a84e", + "x86_64-unknown-linux-musl-0.1.29": "72b43a0e804d033d4064b57acfbd95671abfb0d2c0ddf11bfaf779efdad03e94", + "undefined-0.1.28": "d6d23768a49cc7ba3a67cded5e826370c6f9e7f5ce6aa69743c5a5deb2f7e08e", + "aarch64-apple-darwin-0.1.28": "3892e0a04ced4e8a1c900a7577a0c0805f362c5cbe13abc9c822215cb8f2317c", + "aarch64-unknown-linux-gnu-0.1.28": "6615631b7f8eab6841de405f1978114bba290540fc8b581d4581133dd43d3635", + "aarch64-unknown-linux-musl-0.1.28": "e6b3421876506904f6aee949303403f5065b00a3be3b799fc921c88e9652bacf", + "arm-unknown-linux-musleabihf-0.1.28": "23ae513903449d357a452553b9f4f59d7b852507615ddc79136a3c1cec48e5d0", + "armv7-unknown-linux-gnueabihf-0.1.28": "e6595be0cc281eda4833ea6d398d030a0f8a4f23634004b83a6c0e52805cce78", + "armv7-unknown-linux-musleabihf-0.1.28": "f24ddffcb5270cb297a5ecdc6a4c59f8be74e47772ddefa26ab2f36339be53bd", + "i686-pc-windows-msvc-0.1.28": "1eddf62f14320c1049294d2aa3ddefc10f8d309a64735e9b06b1a02e587bc134", + "i686-unknown-linux-gnu-0.1.28": "6f5627bce734f3a4d3fecb20a047346158d166970e38600eb4c2e4381a3749d6", + "i686-unknown-linux-musl-0.1.28": "411d3c65c0fe26abc5d6fdc81b3fa5b8a9baf4b431897a52c840779ff1483cd4", + "powerpc64-unknown-linux-gnu-0.1.28": "39cbd9850e5f40eee31d72403321e00faea9179406d6a670db79b3698eaadf8f", + "powerpc64le-unknown-linux-gnu-0.1.28": "5a32ff73dbbb335a4b30326ff40b731ce91118d8c792967e274bf43c8811ddc9", + "s390x-unknown-linux-gnu-0.1.28": "09b41889c9a2c6735f8e8106c31570840ada321c7e574c4e9180ef8e4670f6bc", + "x86_64-apple-darwin-0.1.28": "a126c460b6cb471c5a9df400773a1e918fdb481db13ce56d072feb5487cb13e8", + "x86_64-pc-windows-msvc-0.1.28": "5ef7961cf2f35e6df6029c7c83ca3fd08042c9c8b2c692cdeccb19c2a19eb7a6", + "x86_64-unknown-linux-gnu-0.1.28": "8047abff126ceb1a0e6c3e4f7a6420568e3421b485533f22f30767302ebae235", + "x86_64-unknown-linux-musl-0.1.28": "2c50282284cf8fdbfa605f6c7c7f2c407be858cc1d36c545571d302da24480c8", + "undefined-0.1.27": "ca9be4a2ba3ed1bbe4f91530fd65f44e704f968f12c80728d755712f7e5c9d18", + "aarch64-apple-darwin-0.1.27": "c805ff702e7b5557277154e5d97b0456c811475a704590de8f4e14679efd276b", + "aarch64-unknown-linux-gnu-0.1.27": "ab1eb8b6e1f7ff05083a03811e33dac1324b20d109747be2aa8f8503800a949b", + "aarch64-unknown-linux-musl-0.1.27": "7c07173dede199d35061e53827901808dd3cee423ff983e16cc6f5af3343b145", + "arm-unknown-linux-musleabihf-0.1.27": "ee63d702ddba49e41ecb4073c1ccb75199d61f805b749b9c240c7ae706e641b6", + "armv7-unknown-linux-gnueabihf-0.1.27": "8a0d62408d061c240fd2db5a50424eae1b37868dbfef9693d8aac2604755a327", + "armv7-unknown-linux-musleabihf-0.1.27": "3082a815c196f75d80b7104268d6d0c7eb188445fbf5a556d744fd07c371ff94", + "i686-pc-windows-msvc-0.1.27": "159ae0ab972533827a8a1374145506dc7c761e41f932318b90c5f704d04b6579", + "i686-unknown-linux-gnu-0.1.27": "1e44735218fec4f95abe3b113c1f7001255a8867166bb007b051f2c930fe0ed3", + "i686-unknown-linux-musl-0.1.27": "7cc8aab8f6893736847a39075986ed35acc30f75c943202381e287dc3d5a78da", + "powerpc64-unknown-linux-gnu-0.1.27": "e12e774e4caee36410362bce92ce57f08d438a29178152bc03d097809941b733", + "powerpc64le-unknown-linux-gnu-0.1.27": "721b6e0dafdd8465d19a22104fc500eb81e9dee1792faba032eec0cea2a9fbca", + "s390x-unknown-linux-gnu-0.1.27": "4e0697704f335912178816063cec97a5d43da5723e029559ffa245ed6fb73b27", + "x86_64-apple-darwin-0.1.27": "d2382aa0fa9e42be04bb04132b94765d3f69aeac79c9d4ad3b6066269d0195be", + "x86_64-pc-windows-msvc-0.1.27": "7e045d7976419e954d8e527f42c27b1726a81ef835747b2b1e4440eb05312b06", + "x86_64-unknown-linux-gnu-0.1.27": "ffdea092d716bcce4483b29b52c8a14645f4c12c5aa4c012249963d333a0ca7a", + "x86_64-unknown-linux-musl-0.1.27": "573115039c44ab9c83990bfe9cffdec0ed3d2ee03ad81bb4c391b5e95dbea50b", + "undefined-0.1.26": "b1187944b39dc0426397b1554fb5c6a862fffdcf4ae46254835b6b286e42b4ab", + "aarch64-apple-darwin-0.1.26": "37e5e9359c6eb943d31ff0082b0ec5327c93b572a2eafedc8266963181dbb1d0", + "aarch64-unknown-linux-gnu-0.1.26": "17ebc81973124e4c1c0958ce0eeabb541553d74bccad5a055ab2d33dddd4051b", + "aarch64-unknown-linux-musl-0.1.26": "9bcedf6847f85a687806a63af1c78d81ad86136074519a2de41120cea1d59ba1", + "arm-unknown-linux-musleabihf-0.1.26": "b4c4f3acbb11a61074b17c2c3cc18dba861da23cc2f2f512104d4c2710261111", + "armv7-unknown-linux-gnueabihf-0.1.26": "7c310d13ba517a5cb1e7210b2969a224490d099d2da0012b02613f8448aa7428", + "armv7-unknown-linux-musleabihf-0.1.26": "1c5900b15c11483d6cc1ecf6aa5c49f5807c2280c8a0333bcd7e47db75635ce0", + "i686-pc-windows-msvc-0.1.26": "45ad6ac84cf7d4a4195fa96011fb902c7c05221cb65dcb0b84aeeb0194125c76", + "i686-unknown-linux-gnu-0.1.26": "5f30097ff062c718c40178b904cd654f1259f7ee012db7c102d31af650047602", + "i686-unknown-linux-musl-0.1.26": "0beb787beb1b8491248977a6407231462b27e47a7678027b3a540bf5f08076b9", + "powerpc64-unknown-linux-gnu-0.1.26": "576afce4b7a8b8f51b7ac4adb7c93525f6fdf6527e0bbd7a2f0329f3cfb73f89", + "powerpc64le-unknown-linux-gnu-0.1.26": "98654b9dbf6696391d7362fcf8bb7604afef8e999ffcb645694350e77eb064d8", + "s390x-unknown-linux-gnu-0.1.26": "7ff5028b7939b346ec195443df9f18155501a1829800d70d9b0face999a4db09", + "x86_64-apple-darwin-0.1.26": "431a180adf346d96b39f3477a4f26b53741819e0fe411c276c2aa07b90b0a4f5", + "x86_64-pc-windows-msvc-0.1.26": "874ce589229f3423cd2824dbc4fc1af7c933d0dde544d5883fd68012aaa44f7d", + "x86_64-unknown-linux-gnu-0.1.26": "27e4edfa8f12986430c2f6265653b7fca3dec9cd8709692b7fb353c5c0f4db82", + "x86_64-unknown-linux-musl-0.1.26": "39738b23bcedb73e51f2010aac87e759d6b31463af40fba27b5e72cfdb42dd95", + "undefined-0.1.25": "a5f31208af15c9a4c739abdb04a8daaf4a791c905ec8b95ef4402e7af8d3ccf9", + "aarch64-apple-darwin-0.1.25": "4971997b9e3abe7fcb6635676db8f3e1d94c4e1939a21024639e6ed08129e512", + "aarch64-unknown-linux-gnu-0.1.25": "5ab29171ee0b08f2eb3c53416857c4e4737b23fc43ca1e5ec6647e8cd15f94f6", + "aarch64-unknown-linux-musl-0.1.25": "00b8aa7808e99bb6e8ae07a125f171a4235e3e3f50eb4ac5754bb065ee89df3c", + "arm-unknown-linux-musleabihf-0.1.25": "24ff2311900171455e909e369e071b419dba3554fa45c01c61e14731f81c936c", + "armv7-unknown-linux-gnueabihf-0.1.25": "adf4f27836d7dd8e5fbe243eeb15088a47d0aff30e4ed8f0dee5e098e790efd4", + "armv7-unknown-linux-musleabihf-0.1.25": "b4c36a4eec6fb6f03ef3f7df1b19384d8b0132563e28f67422c557c66a0975f7", + "i686-pc-windows-msvc-0.1.25": "d647fc906d07c080743b0b0b5eec4e8b40258016b79cff042c47e0ef84464d60", + "i686-unknown-linux-gnu-0.1.25": "73376185add2a603281bd8d01cca84b9a432228e81d8ab3d801a7493a82d991d", + "i686-unknown-linux-musl-0.1.25": "ddf82492c02474371c5cae6bc1dabd6f78c307264a8b494300d9eeda443921c0", + "powerpc64-unknown-linux-gnu-0.1.25": "730ffc370137f938e3dcfd4a3e93ee3824f159aef94d9e992a4791f485501a86", + "powerpc64le-unknown-linux-gnu-0.1.25": "e8a57fcf40cb53dce733fb9d04f0e0284861992a33b92dec057147ef93bbe857", + "s390x-unknown-linux-gnu-0.1.25": "a8045c20f903ec32fbbecf63555379b36b7ce1f4b678912c251a501fc2690603", + "x86_64-apple-darwin-0.1.25": "658de1759adad8218253f142959fba74b1857a3b77fe5e9c75497bea6ab61277", + "x86_64-pc-windows-msvc-0.1.25": "101807a6fa761be68d02849c648007dbc2575c86014dc5b1cc6e3273a1e51440", + "x86_64-unknown-linux-gnu-0.1.25": "8bcac2c9d93cf39d248e5284a2dce442a239f69923f999bf87ed39ec010e204a", + "x86_64-unknown-linux-musl-0.1.25": "d42a18274d064eeb5bc9a14f48b175c7b5d814effd12cd5a32e8c37c1846cda0", + "undefined-0.1.24": "9a9d91d1a5dcfecf5029931530d417fc3febf4c469d7d7b9567845c4210bb59b", + "aarch64-apple-darwin-0.1.24": "e87bdea0fdd29327cc94f4be23e75e1894692423f714ef9afd544c3cef53ebea", + "aarch64-unknown-linux-gnu-0.1.24": "1799b9fdca185a7efb3abdccdee1a6923c233642d2e84413e1e25bfbdf375db0", + "aarch64-unknown-linux-musl-0.1.24": "c22b8089a79ca82897e5eeca2cd8a9122ef1423c9b73bf1a12e46895beb01106", + "arm-unknown-linux-musleabihf-0.1.24": "c90fd4f848f5e87de6117c4f2d1ffe32e5b6347c6ba848427f6557451f117e86", + "armv7-unknown-linux-gnueabihf-0.1.24": "5b729378de4018d9d722bd3daf60c8e0168ebcfbe6ca2a2eb12fb409c8b0979e", + "armv7-unknown-linux-musleabihf-0.1.24": "8b3184c5339ac0a1221b1c2b43a1a788bcfa483cf99741257be3e54913aaadfe", + "i686-pc-windows-msvc-0.1.24": "5fd539c4a8b4838e7ccbdc83270e654cf9dc695f6f70063646f7857c05d558fa", + "i686-unknown-linux-gnu-0.1.24": "cb8fb04212fab42a5c0886f79d75d578d500676aadfe4549a47b3a880072efb4", + "i686-unknown-linux-musl-0.1.24": "26c5e68560ee87a017f7ff304da8e38a5b81c8eb6c7c4e866167c14fbdba6421", + "powerpc64-unknown-linux-gnu-0.1.24": "dc8af9b4d77af8a2f7969ea717f855733bd33179aa134cfafa8cf53399cbfe58", + "powerpc64le-unknown-linux-gnu-0.1.24": "216cd6ddbad3d6249e516562df59d786cb98640cfa6e19a62043b86192afa97a", + "s390x-unknown-linux-gnu-0.1.24": "45d2fc92dbbcceb2c64176f5d795bb8259cb3f84b5e5f3b2f3d3809ff4e22531", + "x86_64-apple-darwin-0.1.24": "f2cf50777bf50f004271be23d74b29fcefe80b98f0c5c3026c003df33cb3467d", + "x86_64-pc-windows-msvc-0.1.24": "c2ac19c64314f45349c1db423b2b246800d9080f023c231a875de1e084e226eb", + "x86_64-unknown-linux-gnu-0.1.24": "128c23c81dd74f9fa8fe18844b649c0060322ac13e0e1b3a9ceba259b0c10dc6", + "x86_64-unknown-linux-musl-0.1.24": "8d2eb876a50c8bfd187fbf166dbadd2790ff41cd351a2e9667e43c97567bfdb0", + "undefined-0.1.23": "5024e379b0f8cdd32a3682dda3bfe228e03876fadc51105af164b7d5f20590c9", + "aarch64-apple-darwin-0.1.23": "5851419401ceaae8f902cf9f439409e7216abdad4f708fbaedd3d229041aff7c", + "aarch64-unknown-linux-gnu-0.1.23": "fd322ad0454ad76ba642fecda02d4e2c12971c6c82affdb36f604b1fc9f3481a", + "aarch64-unknown-linux-musl-0.1.23": "08bd62cafb09d2aea69baf144eb3d4417c9ec2119f02a69103322def653c6ad6", + "arm-unknown-linux-musleabihf-0.1.23": "0215ea54d551052e90fe6062e574f6fc3888e57a07b5fd790d48750cae037033", + "armv7-unknown-linux-gnueabihf-0.1.23": "fdb7687c0c3a0cd06c1364379f98641fc58481f05edc32f59dc679abbcab79bc", + "armv7-unknown-linux-musleabihf-0.1.23": "17972bc9dc7d0d987dd9cb05f7be72dfa8f86c1835b9ccd483e762da20e0dc88", + "i686-pc-windows-msvc-0.1.23": "8a03b0c564c9b7a82e7811b913b6db0502a05a59baffbc7a5453259f5527dd32", + "i686-unknown-linux-gnu-0.1.23": "4c65c0772e1f6dbf99923c0564314638df36476c43f2cb394092c72cc79e6c65", + "i686-unknown-linux-musl-0.1.23": "690afb97130c2d916ddb083c2c853765f6cdb477f28c3cc9e197a2ceae2622d2", + "powerpc64-unknown-linux-gnu-0.1.23": "0a4bb782d4792b0f1f77249f08841ad82a33f9d46d9bc3f76b330bdcf6cf4726", + "powerpc64le-unknown-linux-gnu-0.1.23": "bb5cc89be676f9c4e76fa2fc99fbcb9cb9d243f4f27050c115e84ef0824735ff", + "s390x-unknown-linux-gnu-0.1.23": "0e0f8d08ba4378184819bc02b11e52ceea1bb7aadcf5f70c7c4c01b598c9fd3f", + "x86_64-apple-darwin-0.1.23": "172e1499a0a02770e7b2544921745596d5c3e7b650043460eda0758249342051", + "x86_64-pc-windows-msvc-0.1.23": "ad1e99dffc902a3d58589e74180ed4399e59c144bef80cae2027414188f66892", + "x86_64-unknown-linux-gnu-0.1.23": "81909f58ec476a40998e5ff2b81f8704195140305c8dea58aa041ec1a8e5aa06", + "x86_64-unknown-linux-musl-0.1.23": "7748461ee4d8922b93843e1850e4dd2defbb1c0b3db8b3c062977637a9d6ffdf", + "undefined-0.1.22": "20856f7aec12b8c576a8de8a3528de3cdb35789cc3609be580133b59942256c3", + "aarch64-apple-darwin-0.1.22": "4768499576438c1d7c741b5dc907a5778fd7f52c88555c1eda7288c7c501a0bb", + "aarch64-unknown-linux-gnu-0.1.22": "bec340cdf59d2451bb22189289e1cfc799c40073a3b40eea62c1efb69c4f13fd", + "aarch64-unknown-linux-musl-0.1.22": "f8e56575b94adfd190807e248eedac0d4ea5298881e67c00c90f9f7b1940393b", + "arm-unknown-linux-musleabihf-0.1.22": "e212ab59866890a08f6df8f744e64091609aecbc09eaaa407e70298f0c9fccee", + "armv7-unknown-linux-gnueabihf-0.1.22": "631d1f8908570a4d0a158de5502f6822ecd80b090f1d71a4642432c988f03097", + "armv7-unknown-linux-musleabihf-0.1.22": "bc10728ced9bbd5e95b7b55e87e7bdd5c3ed5784ce15350edc99638e9a4220f4", + "i686-pc-windows-msvc-0.1.22": "e2620f54e81e89071c9bec1bb3ee2c20856a47290b940965a1c2a8f172a44e69", + "i686-unknown-linux-gnu-0.1.22": "869b6b8587f5fde32dade9ecc1eabbf0a2c41395d0d5936ad7e0ac3d5d3539db", + "i686-unknown-linux-musl-0.1.22": "7453ffa73990121103a0cec73ba1cfdb16141276c13925a6e043dd70f35381c1", + "powerpc64-unknown-linux-gnu-0.1.22": "859f3bef8acadaa80c653748dfcb71bae18cc00024c4b74b28a6a3a9b8e058d1", + "powerpc64le-unknown-linux-gnu-0.1.22": "d39570a41d46206ef04eb2e258e6d005db9cfb797f44cc810001341eb5d46076", + "s390x-unknown-linux-gnu-0.1.22": "46a306e508b48b3ba404ea10cf13ec18a44caa8851d1ef8e7cad90ac0d665d03", + "x86_64-apple-darwin-0.1.22": "a46107c1844b21b96b6ed4c222925bcd8b1429ad24d56a3cf41ecb9732554a5a", + "x86_64-pc-windows-msvc-0.1.22": "7c597a925a893d6e326d3dbb2971883728968ef815168048896ede472563bc35", + "x86_64-unknown-linux-gnu-0.1.22": "9c17b11bd3991ae98b5333378127aba0ba51888b6969427259b51fbda6bbf955", + "x86_64-unknown-linux-musl-0.1.22": "6f80cd8ad79c119ed6882bc9c5b8f860f7e554f87b97830a4ebf1e5b746d5e70", + "undefined-0.1.21": "eae4d4641e57ef2eec75d9f76653b8a3a0dc0b91b3dcc8fbbb2ce4456a08fcfe", + "aarch64-apple-darwin-0.1.21": "1e7788eb132a6e8b1c81829d81cdbb8ba0b26fe098320217284d4af4332fe606", + "aarch64-unknown-linux-gnu-0.1.21": "a749bb07a4fb16dfc1942868544043483a233956a882af2944036cd081e54280", + "aarch64-unknown-linux-musl-0.1.21": "2386ec124440ae73d3a74af4f80685210b2dc7a06266546f21987db557186242", + "armv7-unknown-linux-gnueabihf-0.1.21": "0a6978192ca8a1a3c0ba9981a946a876c2ab6f06f6e223e79fe77d786b786e67", + "armv7-unknown-linux-musleabihf-0.1.21": "53ceb4be6f4f036e482c22189c3198f755055725864c38df4cb5928b0e08b0de", + "i686-pc-windows-msvc-0.1.21": "8713eda354e6dfe9b5d4802c3da111c76210dd7dc671df62fe2fbbfa50522ab8", + "i686-unknown-linux-gnu-0.1.21": "667846071d7b7dc76d2425270ef569774d18defa59c6ea335c53cca27e1cd3ed", + "i686-unknown-linux-musl-0.1.21": "531750c37b6aa1694f3e3999dedbe504dd9178196af66db8d9e9412136761143", + "powerpc64-unknown-linux-gnu-0.1.21": "62713acd9cad5cefc99637f81d995b7d61a900f5a0a15d454ca30ceebd79bae1", + "powerpc64le-unknown-linux-gnu-0.1.21": "95aad3d08499e9e369d49a02e70ec5ad3502cceedcc08d5de04c490406b1ed90", + "s390x-unknown-linux-gnu-0.1.21": "f781f57cd8976449e83f7233271021e57646eac516f81c61b284db54759545ab", + "x86_64-apple-darwin-0.1.21": "02bf25cc3f25c6a70d4c7f40a23c1122aecb0191824e9fedea4814e8295d09e6", + "x86_64-pc-windows-msvc-0.1.21": "d453b672f4db4a5fed1d7cefec2696b7c6e534f340da22f2d275b0e093c29e60", + "x86_64-unknown-linux-gnu-0.1.21": "1926f6112b03934f9e4b5caf14f15dc284e5129d1f8572ec55269afb798ed3a7", + "x86_64-unknown-linux-musl-0.1.21": "999773834330b6b20174f4486d2ddb19e51dc812291189cfb509aa1e1a3d6b6c", + "undefined-0.1.20": "e0ae591d4c14f0cb6b67ca4d64183fec0130e08a623fdaa991ef707f10908865", + "aarch64-apple-darwin-0.1.20": "7d6b1bb7e4e044a1f04a541703ea9de0df57111dab57863d82602d848556bc23", + "aarch64-unknown-linux-gnu-0.1.20": "8dc61e683cbcfda8f3584cf3c58a70fb8f574e1b882e5c94c6b6bc3c00eff44f", + "aarch64-unknown-linux-musl-0.1.20": "9a4337d01191a16cdc875ee8ee19f884e948a2b5ce8b07f8a7ec1672292cc63a", + "armv7-unknown-linux-gnueabihf-0.1.20": "aa3ec54087cf351d2016f61ef327eb85117d005b1b6e21027996b7b12e9ce08f", + "armv7-unknown-linux-musleabihf-0.1.20": "692c438a97afadf193c03ce2de4aee1dc5714ebdb3f8de6a52ed93411927eee4", + "i686-pc-windows-msvc-0.1.20": "b20110c34f308608d2061786c334e6004e2e91ec165232689fb6c2a4209889c9", + "i686-unknown-linux-gnu-0.1.20": "e1c1d3947fb72d83a6dc1498c0cebf6ec3be4c963543636ce8fe476731ced694", + "i686-unknown-linux-musl-0.1.20": "035bfabc092e230a89fcacfd7e0e77ce7e70f03c4e76307cbaa80f2036a38829", + "powerpc64-unknown-linux-gnu-0.1.20": "49ea75ecbcf149991ddb7ccb9401be88852ff0475e60d55d54bcd4abccf6181e", + "powerpc64le-unknown-linux-gnu-0.1.20": "a40ccdc8dd695e5b3d767ecec98875615e94ac8cb4c3f81f990c7a619e85fc5d", + "s390x-unknown-linux-gnu-0.1.20": "b8afa3df67516e9ed86bfd6caf889a21337e20f03f356079e85546ac1912d731", + "x86_64-apple-darwin-0.1.20": "baff815f3fe568af2440ae4da23b8a1a97c00c6c2710c980f0b0eaff22002ffd", + "x86_64-pc-windows-msvc-0.1.20": "9be323847cfab082cb2dfa75a5f42631efcd7c1ffbab96d0f36cd7afef4a0c9a", + "x86_64-unknown-linux-gnu-0.1.20": "88cc7354f27134acf45df679bd6e529191409183a936a974ead9ff2714c3e6ce", + "x86_64-unknown-linux-musl-0.1.20": "db28ca169154ce55ea7356071dbbed94fc5cc94b3564cd58bb458342788ac45e", + "undefined-0.1.19": "a0e28df167a8184016b0b8e571eed6d1aeac2cfe63b34e1a26bbb611ebe67657", + "aarch64-apple-darwin-0.1.19": "1ac97b4bedad801cd5860a83e92e092e9e04246fd7028393ba6b5c2f76fc1dff", + "aarch64-unknown-linux-gnu-0.1.19": "c9371f7189f129b01bce0a9923d6067ecd77de57860ec3071f163d7ee247fe45", + "aarch64-unknown-linux-musl-0.1.19": "aa56f9002481cc5e3994d1afd61c03b766967946ceafb95d460203369f262eec", + "armv7-unknown-linux-gnueabihf-0.1.19": "2d832319b08d16df798accec166f257afb5d308f17a93927f1f2e4b9f9b52e92", + "armv7-unknown-linux-musleabihf-0.1.19": "bd404945a5f8a46b5b88c2a0fa1f23394cb02cc22c523fb6b248e77c629e6982", + "i686-pc-windows-msvc-0.1.19": "0c22efc82e8aafd73b1183bebc36f5712df260df6b42b1b4649a16143c1a47bc", + "i686-unknown-linux-gnu-0.1.19": "fb85b8910523422ccc81822614dac97cf8f2de258b535c7d177fc5932e64a766", + "i686-unknown-linux-musl-0.1.19": "559720353183dbcb4c29ed359988159369660b80b41e6bc60b47ee48d74caeec", + "powerpc64-unknown-linux-gnu-0.1.19": "9bb39a224f870c168a1fe5568a9bb16aa358899fe2a74c8870545c058270cf87", + "powerpc64le-unknown-linux-gnu-0.1.19": "2c131f1139079ab740f8ab9b24865df3fa1d64d8a2f6608a331915e8ecf071ec", + "s390x-unknown-linux-gnu-0.1.19": "a8cd88c4a007e7bb6260f8b3a226611a3a509fc37d924af651e41ae9302a41fc", + "x86_64-apple-darwin-0.1.19": "35a276f51381ba7497a3e1d7fec3c47688f485045d65d8922d7ec30f1da489cb", + "x86_64-pc-windows-msvc-0.1.19": "41f9663eb2407ad661d0f204dcf479a93257a72be06d36e787b0dea93fcc2e0e", + "x86_64-unknown-linux-gnu-0.1.19": "ab187b253f9f7ffb0063e827cf5efbedb0482d013ac619f6b28158941ca8d5f7", + "x86_64-unknown-linux-musl-0.1.19": "10e5e7f2007f363717a69393c7c4fee3b7ca8f16d1ae7a4e2cbfa67f7bc41bc7", + "undefined-0.1.18": "87d953dc58d3936c299609b1697b6d17ca85407edc177d293c98bb9451f8e5ff", + "aarch64-apple-darwin-0.1.18": "1806f3ada6ab943d86aa45a336e690f66b160145fe85f2adb82f3fcaf4eef925", + "aarch64-unknown-linux-gnu-0.1.18": "db4eaf43f593b4b7ae8bbd0235e850aa7a18b7e8d8a20141e99866d43967f868", + "aarch64-unknown-linux-musl-0.1.18": "bd15842c9b530b544b21597cc2212e2e28b1e18b83a27d344482c9df6800c604", + "armv7-unknown-linux-gnueabihf-0.1.18": "c2971d604eea6d3869bab0d7a292d16f5c8167d48f85b22f6c16fe27e947e26f", + "armv7-unknown-linux-musleabihf-0.1.18": "4875b208471317c9a7212bb4cdab14b0b350ab35a9c21c7481ebbdf09b4983e9", + "i686-pc-windows-msvc-0.1.18": "f4e17a94f14bc775dbef4fffc59ce6290e05806e93c348d60e82adc4d9850d51", + "i686-unknown-linux-gnu-0.1.18": "6a06f1dddfe7dbfe8a09ff2c1d2971204095300edb5bd39ba3b6b289220d52b0", + "i686-unknown-linux-musl-0.1.18": "12300f65ab5d023e3708327b826de20d7a0451539379fcbf223c6125d221a159", + "powerpc64-unknown-linux-gnu-0.1.18": "fd8262bc61f6ca8f051b3f5abe0e5d5f5fb25002d0940760a949d5ed61838a97", + "powerpc64le-unknown-linux-gnu-0.1.18": "557f836ed5c52678db56a90db9b5ce91396d80ce14ac94141a10eea57c44e693", + "s390x-unknown-linux-gnu-0.1.18": "651f6a6e81939f5e9ed781111f581b71a9ccd3f9dfd269a7d72ffd860d852e58", + "x86_64-apple-darwin-0.1.18": "a54f1b97fef0d94834e77bb5c013b26be6e94ce888172c80d671453aa12e3cbd", + "x86_64-pc-windows-msvc-0.1.18": "c34cf263728d784ec98eb6bfda4adb2d7e9ab5f649af8e22a05b60253f919668", + "x86_64-unknown-linux-gnu-0.1.18": "605e49d8dc48081ef8ba32212df2f17f02e531c02de36b5caf417bd97818fc3a", + "x86_64-unknown-linux-musl-0.1.18": "ed1e5264e84246f91e1f2dbb642eff24fbce273ded3bac337930a0c6ef9ad6b3", + "undefined-0.1.17": "7ecfb6fc6c19e3c85cc2ecae0271da16b43bead58b2f0d91fd1c24d1c0f1ae0e", + "aarch64-apple-darwin-0.1.17": "8f6d1b142dfc4d2040b86a94956eb3c2f5436fd0e889e0d0d1c59dbb8fbbf9de", + "aarch64-unknown-linux-gnu-0.1.17": "f2aa28f1f9e35c67eb1f4e20d372eca5474c7421b0f1f416210f6542942c5a26", + "aarch64-unknown-linux-musl-0.1.17": "34fd79808e301a31b884fe98ef2da209883d00f6253cd75df8966744075599ca", + "armv7-unknown-linux-gnueabihf-0.1.17": "06ae3888af28eab2827e836acde849b4caa993c302a296e35b7275d16346ecba", + "armv7-unknown-linux-musleabihf-0.1.17": "95bbff6685491e1c9768bb68e35e8a9973abfa65218fc36404f0ad03ddb9dd06", + "i686-pc-windows-msvc-0.1.17": "7d90730e88affcc9ef564e75d477fa03d341d6bd0473b7ed8060bd5845a73548", + "i686-unknown-linux-gnu-0.1.17": "7cb5dc29a6bc9d46758f121007d6ed9bedd0969db30214205a298c2b70805605", + "i686-unknown-linux-musl-0.1.17": "70167e21f118995d5d64ad653eb17430bda962806b6d2df767773db6b33ba444", + "powerpc64-unknown-linux-gnu-0.1.17": "40f920c10951a89a967b7d6722c74c88038b8c978e3651d5e99b9a1145604df4", + "powerpc64le-unknown-linux-gnu-0.1.17": "e76e43e9eda10c3730e1b36856a510458a708cfab150a888c8a96ca21234de7f", + "s390x-unknown-linux-gnu-0.1.17": "de8ae6042474e876d1235a09a771a274f848db13c82229bc9d7d63d5c89f8ce6", + "x86_64-apple-darwin-0.1.17": "957fbe84e1fb1a7e8b43ed4db7bd5ef5ea3b3f996c92144d5eaf6b3e259859cd", + "x86_64-pc-windows-msvc-0.1.17": "bd7c736a62f8a102e31a425f4a614de586be30a7c5dbe782bec99c838edd8cdd", + "x86_64-unknown-linux-gnu-0.1.17": "add91a881b3de0a2defa6cf363bbbbfb5dc58e85cff52e8164052e86fee73809", + "x86_64-unknown-linux-musl-0.1.17": "d793d93fa5eac748c1ca84ae28f1ba3fbe6d0ec4093818f960e8378d3c012c3f", + "undefined-0.1.16": "8cffa14f967e4900606afb952a1f5efe92e93a550792cd7ba77784fd7a149d0f", + "aarch64-apple-darwin-0.1.16": "915b89c135b3890f086149cc50019fb6b243a26311dfe69d7f00204fb6035c87", + "aarch64-unknown-linux-gnu-0.1.16": "ca18e5b1c9d776130d67e6b7a4f22d14e6abd65c84106fb8b3b2c097bff18f90", + "aarch64-unknown-linux-musl-0.1.16": "64d8c04ce2b251e34f38f14eeca5d126a05a97bd5734ea77dab2c48a7923921f", + "armv7-unknown-linux-gnueabihf-0.1.16": "216e542e2c7a22b2325ed7b0f94c1b6491c4dd3297fb595e166f7cce2ea6a0fa", + "armv7-unknown-linux-musleabihf-0.1.16": "f886aba91e4a79f07899eb97dbde5ffcbcff93b750fff9ccd6a0361fc97c3fab", + "i686-pc-windows-msvc-0.1.16": "6dbcc9df5402155a8514b60b07b48d09cb402ee34ed07a2450298d5e75b2ce11", + "i686-unknown-linux-gnu-0.1.16": "ea109c8a25ff78e99318af5c0e8ef9348ff64af2ee718345a4a1e87d0e1e4820", + "i686-unknown-linux-musl-0.1.16": "48f35670fffab656a342201eca3b6c1c0279cab52fc11b5b42fb87df8fff5297", + "powerpc64-unknown-linux-gnu-0.1.16": "636ecb9fcf40a7e0d970ec0526cbc7803de8800d8f6945fa0005add0334c7770", + "powerpc64le-unknown-linux-gnu-0.1.16": "2b07b26602e6d39481e3db5cebe3456190d281327590ef03279357d8b05305ee", + "s390x-unknown-linux-gnu-0.1.16": "9db4724da884ff01b394c7499b0520f977d10f20f697f6bb5e9b2e01d50470e2", + "x86_64-apple-darwin-0.1.16": "daf6316c3e5e610ed99c1eb054bcf9dcc66f970b96a334f7bf6d4eb0d211736d", + "x86_64-pc-windows-msvc-0.1.16": "73659c150df62c0c42d8f195763fc270a213383fbcf413f746bb026878fa1d93", + "x86_64-unknown-linux-gnu-0.1.16": "84b15dbd298969ecf2bffb22a3e1003df085579d53d39a6bb87d5813a14e10f2", + "x86_64-unknown-linux-musl-0.1.16": "1d76289dea83224d61eb84284f00136a1275234e7537baba44ca3c9e696dab05", + "undefined-0.1.15": "55d165ea2c9ab28351c0f5f680c21a66bc8b8c7799ac39162ca5044d0e23a3f4", + "aarch64-apple-darwin-0.1.15": "df9bab49d9a171bfafb619422ec8c88c0bea930fb69ddd6c8884420b9cf7a13d", + "aarch64-unknown-linux-gnu-0.1.15": "33c5c5340b0c29381b0dcfc0458194800a74866301fd6f64efb1e77e4491beba", + "aarch64-unknown-linux-musl-0.1.15": "ae21b106eb5dd26f76d163613746ae869ff5c6f111aad2a7b482f906a8de81f0", + "armv7-unknown-linux-gnueabihf-0.1.15": "9bc6769404a17f24340ae39c1b23a495c405644d3c003719145d92596b1559f5", + "armv7-unknown-linux-musleabihf-0.1.15": "5d678a5a06561c01e8052528186394a45eabcb37595c4540205c292d8d9f2f82", + "i686-pc-windows-msvc-0.1.15": "84cfd219b31f5cde825d212012652ab326a81d621faf86c08b03b0b85e72ae4c", + "i686-unknown-linux-gnu-0.1.15": "56ceeb2d72f0ae1fa2852b4951bb0c64c5502472a867532ca157c89e93ade4c2", + "i686-unknown-linux-musl-0.1.15": "62b821fd3e94190b2f7427a6a805b0b9308e21383a8c3161bc4ab7d777ef40b0", + "powerpc64-unknown-linux-gnu-0.1.15": "f06fbd8a50544d9e76d1e0a984a5fc17fcaddf237e28f2874d8a6f01ea5034a0", + "powerpc64le-unknown-linux-gnu-0.1.15": "14f177d8e9c83356e57f7f3f54c1dcca28f47bd784278436207c6149244ee1d5", + "s390x-unknown-linux-gnu-0.1.15": "cb714eab80809c6b921c2b4f7b81e2c166c07a75c990032ee6d5e939986beabe", + "x86_64-apple-darwin-0.1.15": "8cb18f0aa3d61dea3b3d8dc98aaea6b9f1f8677d43db89a0c69b53c86ad6a9c5", + "x86_64-pc-windows-msvc-0.1.15": "dfe55955cc7ab137b0dfb186f0e6108f320d79383761d62415ea554167cecb42", + "x86_64-unknown-linux-gnu-0.1.15": "00a37907aa7985e88584ab4765905b720fa8b9088d1bcae7611c10f398299c5d", + "x86_64-unknown-linux-musl-0.1.15": "5f7378a55671fa53e32cf5cc8beaf2cca40db95a579faaaa1310399f9329d27c", + "undefined-0.1.14": "19be86f31cbf3d4c5f7094fc77652c57cd05f70876d22df469d85c52b2108047", + "aarch64-apple-darwin-0.1.14": "793d267ae803c4c59b9d825bbacd09d4f1a06579567a7ea9aa458e2986b5b778", + "aarch64-unknown-linux-gnu-0.1.14": "fd82838503cd540c5a2aebb38b0c539912c858ff6b8e6c4b74b90a190442a0db", + "aarch64-unknown-linux-musl-0.1.14": "ef9e8a2cb2a440d8b6b8fddd00f7d7d91b5f060ac8e2142b6ad778a85f00fda5", + "armv7-unknown-linux-gnueabihf-0.1.14": "03ad6b59053a933de33a4779484ea275fa7e885a8dfe833153eb1cc24b3009ff", + "armv7-unknown-linux-musleabihf-0.1.14": "ddebfea1674aeb6534181d034477c39d7ccc15065e34e7c9c4abe1333f5f0890", + "i686-pc-windows-msvc-0.1.14": "365b29899ee7e83057850fc25e231a33f27671785724b0718bda07fce311de1a", + "i686-unknown-linux-gnu-0.1.14": "f3983d685e27a55554b6107d59db017addebacf143daeceaf15f7a81a0286006", + "i686-unknown-linux-musl-0.1.14": "84f6644fb06ef46478c68e55b367ecfceebbed80c7e3b5e2b8af70d7fdee6c87", + "powerpc64-unknown-linux-gnu-0.1.14": "bd21243c9d1679e27ce5d0651cac380521743d20bf996ba146b7a98c9c975dd2", + "powerpc64le-unknown-linux-gnu-0.1.14": "25f42e9e3fd230e7cc9f416143dd0aa6a5806f306a1abb4d02989edcf938000c", + "s390x-unknown-linux-gnu-0.1.14": "15ce4609be46217639b0b589398bbc6ead801cb42c750b0c734d51e2384e9be1", + "x86_64-apple-darwin-0.1.14": "c8d471a0c6f5a710508284cc260005e2d535ecb255b5f2ddc8b362057d8cd80d", + "x86_64-pc-windows-msvc-0.1.14": "eba641a900d26feb5158fb131a80bb7bbb4ce4bec71284753345f23f885414f9", + "x86_64-unknown-linux-gnu-0.1.14": "394c421302ba972fffdd674a0a57f7189d8cc5a728fac8a175027abf833eee59", + "x86_64-unknown-linux-musl-0.1.14": "3c26c7a3e236d9f5d10aa6f32a8751322e8719812424b0b05ede1023f16dbd52", + "undefined-0.1.13": "859b13879d2a6f97c3c4d8928cb6a81b067b022b4e5b6c8e75bba099570bd0fe", + "aarch64-apple-darwin-0.1.13": "9d7a71dbb75dbabcbaace98d06517caa691ec8dab8ecbda3afee44ac9cb1e1c3", + "aarch64-unknown-linux-gnu-0.1.13": "16429c1a00b0a1fb653ae8a104d5af121bc765f047a7b750f356515c50c226c7", + "aarch64-unknown-linux-musl-0.1.13": "c07044d21142e308961c1509975b71f52bc2f298497869ba40aa84fefa3807cd", + "armv7-unknown-linux-gnueabihf-0.1.13": "7a62ee6b4e669ea1aec3ab05da021e59ae8b226f524fdc610e14cfafc5b513d7", + "armv7-unknown-linux-musleabihf-0.1.13": "24c717aa7d4b8cc2e0b2378d2b6097adc376cb8422733a0478f0696ef4f2b5a9", + "i686-pc-windows-msvc-0.1.13": "5e75f004ece194c6c0bbec894f229bae440556c3c43df6d6a33a93b287a6ef96", + "i686-unknown-linux-gnu-0.1.13": "3a74bace4da3dbdc3f36e7720d7f6bc56098716e7c3e949664b301136fdf3dee", + "i686-unknown-linux-musl-0.1.13": "d9c18676b96654a7133cf9a9f1dbfc47b37bf02ba8f7ab9f5f0307a3d6483311", + "powerpc64-unknown-linux-gnu-0.1.13": "2ffd41af6962f46807f64a44e30c7d5faac3fa8faa1bb1dd65f03cd49e61f66c", + "powerpc64le-unknown-linux-gnu-0.1.13": "9fcb334fa7d99f732628214f2af386183fccaa7abbf9157df0966b619f741131", + "s390x-unknown-linux-gnu-0.1.13": "e575fd873988078a20d99346ba0c4964e6fbc322700c8d2541e9fe9e07eee113", + "x86_64-apple-darwin-0.1.13": "ad133fc0c67cbe2d578631d77d2f6442626c77a1e144bbda2912b7af9085e91a", + "x86_64-pc-windows-msvc-0.1.13": "f61cc5c329abc535248cce0912fe01c20e7c99ae9bead6015842f8c5fd3cdfeb", + "x86_64-unknown-linux-gnu-0.1.13": "2bfc6a542a3df6af6f56ccd8ec9f1b0596fff62b11650b0bdb830f10ee4e2d64", + "x86_64-unknown-linux-musl-0.1.13": "5e771e72b3dd42d99a354fc4ce9be047e4d9fc1a653b2f551128a3b4fd533d28", + "undefined-0.1.12": "e16d94a2d6365a99d88168175325bc1f9f7e9f72eadb136691150e3fdad4491b", + "aarch64-apple-darwin-0.1.12": "c27629967760a84caeae66a130bb4c53dc1da0386122a4e67eeb19a0a163311e", + "aarch64-unknown-linux-gnu-0.1.12": "84b611afe5b7234585999a9ed2e24b542b8d3cb438595f9564629cae6d6a7580", + "aarch64-unknown-linux-musl-0.1.12": "c9abbf7d6c9ebe737e3b881243297eeb6d67b5a8fd458b9d55deb80b29b45fb8", + "armv7-unknown-linux-gnueabihf-0.1.12": "1b3bd6f3e8d8080481af2c231fb72defd0d0c63eab2e28528ca420cfbc1b71cf", + "armv7-unknown-linux-musleabihf-0.1.12": "d74b4a43ddd2601b18e2f4bedd9bcdd84bbd64fba2e4bfb169cda95bbabc88b4", + "i686-pc-windows-msvc-0.1.12": "6424486541fbdb17c3dd9144e690e3e86c318374342f02db94fc2a369ba31a14", + "i686-unknown-linux-gnu-0.1.12": "84caece3b6498801a9fca6ae91c341c4287a6f16d3a089199636259b00217bef", + "i686-unknown-linux-musl-0.1.12": "3daee4d2580054255a78d73eba040a247b1bc1db559726a4be0a4029b9bd1006", + "powerpc64-unknown-linux-gnu-0.1.12": "588ea9f541451f435eca5811d970e528cf599fc7054d258821f96a87af51eadc", + "powerpc64le-unknown-linux-gnu-0.1.12": "91c60c49b0309f2f51919a6603eeb03ae32dd7ead8f9f3f390929703577a1ac6", + "s390x-unknown-linux-gnu-0.1.12": "54334b0bf35ef275a092f4567539066d4a25c59de08bee9dcfa1bb3eaa2348b8", + "x86_64-apple-darwin-0.1.12": "5ce7d6c25e68cb96ed21773fba9bb9cebca81dac70ab7dce86e620eacf547f24", + "x86_64-pc-windows-msvc-0.1.12": "c458aa2416bde29315d73356ac34f6639cf55305018bec226c0e310343d6af07", + "x86_64-unknown-linux-gnu-0.1.12": "fb1f56e7485b6c94364d11f227107fdc74799e8c91ca5321c35e8a19828d7a72", + "x86_64-unknown-linux-musl-0.1.12": "3d4fe441702e719156c373caffbfccd75254594113d8e3ef5e43d871fad7c722", + "undefined-0.1.11": "ce4fd6fad4986f5ee738455e251825de4094f48c86555e9b4b3adafc1a88ed27", + "aarch64-apple-darwin-0.1.11": "64e0aeae1d5135684c65e5d41741f1b2eba5c60e574dfef7386712b259066d95", + "aarch64-unknown-linux-gnu-0.1.11": "56a7edd9bfadab67100bde6aca3012c9d7d8619405ebb360eae50b88ba2c6dff", + "aarch64-unknown-linux-musl-0.1.11": "0c890bb996c6431149583a402d5bfc3124da92b6e65ec3ee3a961935b06f8cfd", + "armv7-unknown-linux-gnueabihf-0.1.11": "d26ac8502154f45e080c8330c58842e33e2330a73937a8f8be0d02f0d20391ee", + "armv7-unknown-linux-musleabihf-0.1.11": "b7b3e0ba037f28994bbe99abba47ca2fe651e451c533fa54927ab61d21bacb9f", + "i686-pc-windows-msvc-0.1.11": "75e74c43bf6aeb3cd83a7b7a1f578c2247c48a03fa421317ca7f27f881c0890e", + "i686-unknown-linux-gnu-0.1.11": "f8d63781a8a0d3452f7322268a4bfb3a6e06816b76deafde660d53bbc2d790d9", + "i686-unknown-linux-musl-0.1.11": "fef030f0adb05a19072a8a4f042a5e8f55102633653cc092841ab5ea6fef342d", + "powerpc64-unknown-linux-gnu-0.1.11": "de28ad908376178c3a66bb71a1e882bca9d30964c068c2d84e26982da5fa12b4", + "powerpc64le-unknown-linux-gnu-0.1.11": "62454fa7c614b129bfdfebd8ed1928b66e379ba4f3da14750255fcd936890256", + "s390x-unknown-linux-gnu-0.1.11": "75915f9b4efb686247e6524cc467f7d498054915c1aa9888eafc5d3385c3e904", + "x86_64-apple-darwin-0.1.11": "62f2c6696fdf8bf394662cad54244411b9e96908de9e52b3743955b0d94bd8d4", + "x86_64-pc-windows-msvc-0.1.11": "e3e49f27f032c195f01d33df30dff16c9ce7d6ac60512c1af117fc4597d0e632", + "x86_64-unknown-linux-gnu-0.1.11": "8b1d098549f46814ed40975db6e88aba2eb541196bea54753b08f789b6db8384", + "x86_64-unknown-linux-musl-0.1.11": "a74b6e51ccf087f78814eecd449ad759f55a633015d9762f06d134394e6122fa", + "undefined-0.1.10": "cf57c25c9b806efdc8f81ff1e66df985513caf28a4508b6399d1e125fabbe359", + "aarch64-apple-darwin-0.1.10": "1febf66f3377f28d59cedaf16ca08fdf0b18a19dff201ee29cfd4c09b5672a7e", + "aarch64-unknown-linux-gnu-0.1.10": "88d6b781dfaef6676eb1aae170a8dd18dc0935bb49e6ef4fff0cb33733d3b7ac", + "aarch64-unknown-linux-musl-0.1.10": "bc7b0d6bbd58eb6eb00ef0fa3bc4ef2fb54c693c0027bcfec8787259de6ab9e3", + "armv7-unknown-linux-gnueabihf-0.1.10": "c3a6624ce92cce721d32327b7354b656272ee593b1fe97ed8221b429b103a353", + "armv7-unknown-linux-musleabihf-0.1.10": "b3ac69be2544c280acf6ef4aef660bbc78b000bfe08d46156833031359a3fe8f", + "i686-pc-windows-msvc-0.1.10": "354b9be42669c2b3e90a3d0e900264fdab89212c0159551a4ef3d2bb273a84a4", + "i686-unknown-linux-gnu-0.1.10": "665208a455b369b36af3558a2bc75248eb357d54eeaf84b6aa06673c69b7e5ee", + "i686-unknown-linux-musl-0.1.10": "d2c152c9192eb565917089a2c5d0b5462d01a3e6799ae9e37fc11f4b32e97291", + "powerpc64-unknown-linux-gnu-0.1.10": "69ab3b4a36ee75892e4a242fd030dbbe11f8028c84b318196496d8ce2e368fc3", + "powerpc64le-unknown-linux-gnu-0.1.10": "6d037c45c46ceb8b760c8c80e37b0f9cb5cb194ec0ed152ee6b43b3700a1bd37", + "s390x-unknown-linux-gnu-0.1.10": "bd2bb41a6efb3df0f8336685708963d37cc019ab6782af2d9f5a0e8e08e5f199", + "x86_64-apple-darwin-0.1.10": "349e36a0b1806d6760b7529384b94b450dffb0284bf541f50f1b9880a4c40667", + "x86_64-pc-windows-msvc-0.1.10": "d2842d27994304c8613a1ef366386f1cc7d15c05fba3c48b5b115ccb4b59a88a", + "x86_64-unknown-linux-gnu-0.1.10": "94c6a8bdde7151ea9587f866f47f5d376acedd90606c546bac9585d3ad5b4426", + "x86_64-unknown-linux-musl-0.1.10": "ff6b01c23bab0333dc258d9decaeddd500d7bcfb3bd6a1c47c12b449e9430bfa", + "undefined-0.1.9": "5ac47ac172b0d451bb9820174d2b1ddbf1f99a257d512f065735d3a0dec44854", + "aarch64-apple-darwin-0.1.9": "0b92f201c4f48a54a23074001e490722d8a532043566f3b24fdfddcee5dbbb81", + "aarch64-unknown-linux-gnu-0.1.9": "51e3791eff68824daf1360631aa2f11f98f3728d5d342cadef191f53e9321c61", + "aarch64-unknown-linux-musl-0.1.9": "9b00d23f7d7267af182641df08c2c120271164c803f31e9cfb6de62ef1facb87", + "armv7-unknown-linux-gnueabihf-0.1.9": "8e0c5b9838daf8403dbfc5f6befa54440afbbecc54eddb446265c6db3b3e91ba", + "armv7-unknown-linux-musleabihf-0.1.9": "0569e3dd62ed50478f1b546d7c32bdfbbf8fc7a9bfd5331794733f89bc1ea114", + "i686-pc-windows-msvc-0.1.9": "1b6bf7348f81c34912bdf7bf5ff57911849820f198dce12e737f635f87b79cda", + "i686-unknown-linux-gnu-0.1.9": "3fed572fce343c86737e3912f86dce47a26611b07c86b2ff3be0f4936861a1d3", + "i686-unknown-linux-musl-0.1.9": "e3f71bc7566e407c88caa0acf98fd2d7267a0e88ba53ca8d8ebd0018ef1a0ede", + "powerpc64-unknown-linux-gnu-0.1.9": "c2918765883475223e63f9281fc43695f311162a5583e21bc20f86dc5bd124d8", + "powerpc64le-unknown-linux-gnu-0.1.9": "6571b7c86c31db0e0bca2a002566c94a557968fd58b8f9c7d38539b89cac47ce", + "s390x-unknown-linux-gnu-0.1.9": "2c7c5a7409a6ecf47062b29342f4a792c689170d9bea4ae9e3db81c6a134bfd3", + "x86_64-apple-darwin-0.1.9": "a2cbd617b00e26d633ce0622b97ef96282e4924d0aef222754412d2c2ab7e625", + "x86_64-pc-windows-msvc-0.1.9": "0de903c0c36b91dd1d734d61a1677afbd80e6c0db3c91d775ba011d710866c60", + "x86_64-unknown-linux-gnu-0.1.9": "4c6305655fba53bd68dcecebc622e172c9de369543539428a5449b4c6ee53ec0", + "x86_64-unknown-linux-musl-0.1.9": "93f43d609bc6298af89519fc2a8ddcdc3a494110f64e7238c6f19639b3a45755", + "undefined-0.1.8": "6ba549d17d0b699fa4c955cdc482bfd5a89d6ec4c382119ab1937f6d75c6770e", + "aarch64-apple-darwin-0.1.8": "0993fce3759983899a83d6c2727576a4b35176d97c13d1bcbabd41e91f6147fb", + "aarch64-unknown-linux-gnu-0.1.8": "6a8a4ffa1e7157563706e1fbb5b42936d94bbe57effab8b62aef06c69234558d", + "aarch64-unknown-linux-musl-0.1.8": "f4ae032d4484c5493584b2effc5936627065440eb4c7fa1265b0f5da904f9538", + "armv7-unknown-linux-gnueabihf-0.1.8": "eb223bf424c28f7d60f24b1a51a8903746c9020d94fb51c91a62024b5463bf2d", + "armv7-unknown-linux-musleabihf-0.1.8": "eb060441259b20e77b6115a483d8505ff44cb358449dbcb3d72b9ae561ff7c11", + "i686-pc-windows-msvc-0.1.8": "71d40d232f81acac3ec4ffeb9a732ec231945093867eae3b1008ed516f588c3c", + "i686-unknown-linux-gnu-0.1.8": "aaf5320b5305621b5ef850e5dcda5e65946443980147015bdf19472ae3ea5360", + "i686-unknown-linux-musl-0.1.8": "e68cd09932d18ccde2e48830eb068b5ac01f93d06b0c690f8035b9f3dcf07cd1", + "powerpc64-unknown-linux-gnu-0.1.8": "3980df97930b76b5b93975321f8662db7f8518229079b383df667e88616afdff", + "powerpc64le-unknown-linux-gnu-0.1.8": "c76e9a5e285c8f728853749c2cc0f39480d0b59c4215437df5055ae73a7659fc", + "s390x-unknown-linux-gnu-0.1.8": "ec5ed3af4632c6c8a23364bc88b2f9f2266602219be0eada354d4ad1d2496067", + "x86_64-apple-darwin-0.1.8": "a6f9188e79a95f5220ce27185283d9aba2fc3ea8cdd2abb9d41eda08a9416fb2", + "x86_64-pc-windows-msvc-0.1.8": "f7fa2a6ff10c3a0281014acabb463ac5b1ff7b3599b6f91e6f507c0fd52483ea", + "x86_64-unknown-linux-gnu-0.1.8": "074267e2a2eaed2eb87c3ffc71eb1ce1c21c5594e079ec2f2d5d5ff6815cbdf4", + "x86_64-unknown-linux-musl-0.1.8": "3d8d92513f85811d1383d74c2b5eeef75002b33f1dfcf48cb46c253c31297cc8", + "undefined-0.1.7": "9729f66c74df1341f05b8e3ef4b02598caa234c1fdfd834adb7435b3ad7107a9", + "aarch64-apple-darwin-0.1.7": "020cd34efacc144b7dcd0bd1813ca1e8153cbb281b6fb4506be80714ad2322da", + "aarch64-unknown-linux-gnu-0.1.7": "e349b8e6959ec7840178e48bc06be3a6c41c35dabb7243bd7627ad0c8b9b962b", + "aarch64-unknown-linux-musl-0.1.7": "8fec50377df06f83dab2248f7397de8250e531e24ef2d2f840e74b55469e4d64", + "armv7-unknown-linux-gnueabihf-0.1.7": "d07ee44215d486aab894a054576f45efa65cbc45d026785187053aa33f8e195e", + "armv7-unknown-linux-musleabihf-0.1.7": "f795784c9d352afbf3b7fdbe2109bbd664c65217e6cdbd55efa00f8c383ed2cd", + "i686-pc-windows-msvc-0.1.7": "6acf1caed9ebc233a3de1cb9fe2ebf20253e4fa915cda65fa53a53a13c860f13", + "i686-unknown-linux-gnu-0.1.7": "a7022f599dfa97fe21c0926c95b24d04379ec364c8210516525c837e7d19ec9d", + "i686-unknown-linux-musl-0.1.7": "8045ed3acbf3190daebd5acd62e8707add1b0dd40b138cf9e49934eecb8622d8", + "powerpc64-unknown-linux-gnu-0.1.7": "52245ab38a7f443e2951814ccb253e4aa11d7c183bbe3ffbd352d5afd6b8bd0a", + "powerpc64le-unknown-linux-gnu-0.1.7": "1ee56598340ea158ffbfcd3b9ae50e30f3802df5554b1537971531a5b4c8fe23", + "s390x-unknown-linux-gnu-0.1.7": "179840bf7c06d0d99dbaca52b02a7d697bc43fb48fdf7327b1f4733511d1dc1d", + "x86_64-apple-darwin-0.1.7": "4a98413d5edae3117d0c0960be2f91dedd88ca0975583819eb520279bcfae55c", + "x86_64-pc-windows-msvc-0.1.7": "aa20b99f4d687fe95e0ad952300648bad9bc581d034f8fe9952bb1ce3272cc6d", + "x86_64-unknown-linux-gnu-0.1.7": "60175158c359cf247e67b6499feca8d0848c75d95061b7552dd3c5500938ef63", + "x86_64-unknown-linux-musl-0.1.7": "d0777ccaf989172b821f7c1a6d2f94b327e527a01ffbd3d5cec1d9d2321ca5db", + "undefined-0.1.6": "0b1086d16d4fbba5dccb1aed7e8774fbb6d4feccd5cd42efd4509dce521ff698", + "aarch64-apple-darwin-0.1.6": "3c6f147f2f45d0327803a690722d25ba4c23c4145cf08df971cba161567e448b", + "aarch64-unknown-linux-gnu-0.1.6": "de9f62f4fbad55c6b8918006e02c65e9cb871d017263f4f1ec3ebb7b6ca87247", + "aarch64-unknown-linux-musl-0.1.6": "e8a5e657a2837c5522a9f6d5c7b20384cdc53f8841c9190d34cfd251a0087385", + "armv7-unknown-linux-gnueabihf-0.1.6": "324b4645fe37b68a33fdcd292ba026201c3321882f16ca8293decf943c360426", + "armv7-unknown-linux-musleabihf-0.1.6": "e4ebba2ab004ea22aa59829bb774230b58e9c750b277a995c3247dcede63ad6f", + "i686-pc-windows-msvc-0.1.6": "8e6d2180a42c468d72b1ac4bd2b16adfc16021286fe1aae34c27248158fbf25f", + "i686-unknown-linux-gnu-0.1.6": "332a3a588e95ba99eddbe059d7cf330d98a5d11db4b7d24ef3e9472e046d944b", + "i686-unknown-linux-musl-0.1.6": "32bd89273ce21fdc064c6bdebcbacc07e74d9ffcd237a2cbdabb522aa5952f7a", + "powerpc64-unknown-linux-gnu-0.1.6": "7dff85ff980f80915247674288020b9e7050fb42286b73bfa8ea09c6def6aa96", + "powerpc64le-unknown-linux-gnu-0.1.6": "ad3c76383c5c61e6510057658d013594bf9c34e0d80484de18b8f864ec4dc752", + "s390x-unknown-linux-gnu-0.1.6": "b58a9ff37ca400c22844e0e0d4aa691b11417b98afe4077a8f2b468aaadd602a", + "x86_64-apple-darwin-0.1.6": "ac26fa53a156385781959487abe5112d5154bc395eaacbdb21e3ceb20ab5b835", + "x86_64-pc-windows-msvc-0.1.6": "864a4142b671b1f67fa7e853094e83af8a71445463886f74552636ac7aaac985", + "x86_64-unknown-linux-gnu-0.1.6": "7dc7a615ed6d613ad49d77c0e4a39361a97f43b842e8b14536a00db9671ce5ab", + "x86_64-unknown-linux-musl-0.1.6": "4d956f457e0f5a2116d4138082f030488865c0c04aa7389a54f4f80ad0868119", + "undefined-0.1.5": "90eeea76c1c1de3343f97be1f270c990c10193cdea7925a80913cd31aae71d45", + "aarch64-apple-darwin-0.1.5": "dc62f02d9684e3453ef62d2b8775323a54d89a446e3dbbd94115e809dbd0aa56", + "aarch64-unknown-linux-gnu-0.1.5": "23d4ac8e358ef51e436e0dc66f120cf5acb86c1cede69d8ee3bed0864a44efdf", + "aarch64-unknown-linux-musl-0.1.5": "0b4f963239a69e03ea856e52b474c05be06417961ff7003e06bc0f0db1025f1b", + "armv7-unknown-linux-gnueabihf-0.1.5": "53778c45a8d95bab74b096bad6e5071b45f7b9d379438c770dbebe119bbf55a6", + "armv7-unknown-linux-musleabihf-0.1.5": "09a37f4749d1efe473aabe8bf7de3429a92456703741eaa5a41aa85eb3a08f51", + "i686-pc-windows-msvc-0.1.5": "a50ef8b67c8f50e73a080dcf8e1b928c266a6c08d5c5ee8485b2b9e5a0cc57d3", + "i686-unknown-linux-gnu-0.1.5": "8a9b3fa8c50ab85767db7c633589ce8aae6440ce615e3984c96aa2885b97d949", + "i686-unknown-linux-musl-0.1.5": "16f37509d028e7dcd28679f9b24cfd5a21751531a05c8f79fefdbd385b81403f", + "powerpc64-unknown-linux-gnu-0.1.5": "2788c0444cb62cf6536f3cec9996ec1eeba9daf9f039176920e5f55e1ee30e8f", + "powerpc64le-unknown-linux-gnu-0.1.5": "08a4022f73326145ce468cac03169e1970685f0eb9bdb053bf61ec53f6f769ed", + "s390x-unknown-linux-gnu-0.1.5": "3763dd278fe3df1e911cb11fd104327a07dead0e642550ee817e956937da61e2", + "x86_64-apple-darwin-0.1.5": "3559b67be0cc77a944323bafd5e70de8bd2933613f1825d7980fa0b22ba5f465", + "x86_64-pc-windows-msvc-0.1.5": "5f3f000d8405d0f93756cefeccca7cf529effc0353d2c694a4b05d79be677ead", + "x86_64-unknown-linux-gnu-0.1.5": "06e1530ca6dd161d7052a26cd08716276d8d6aee90d6e164cf4e05d4f5694312", + "x86_64-unknown-linux-musl-0.1.5": "6d290240419ba81e789b458b3d0685bb3cf8c61d725fb43949b554c64a50ce9b", + "undefined-0.1.4": "1fffbd35b2b8feb57d320b5032cd3972b6dbf99606929dc30b8959aaab1e97cd", + "aarch64-apple-darwin-0.1.4": "20ddf1a3919664d427d2d5ebb9875d9fef39a9ffd6850c036591235678e42609", + "aarch64-unknown-linux-gnu-0.1.4": "d0341732b39688b2464cceecaf617af40898eb80b1093ced778e91d13837e057", + "aarch64-unknown-linux-musl-0.1.4": "f05108b90840554a42b3486c1779c283348131093ee459883e3af73c6bff9cd5", + "armv7-unknown-linux-gnueabihf-0.1.4": "57fd95339e096d1f59641083bc58b42cd8e4b49ac355a40aed2613fbdaf5bafc", + "armv7-unknown-linux-musleabihf-0.1.4": "9f0a39ce106970b437ab36cd7f04ed9e5790c79632a44c62e7eee3e97fb89fee", + "i686-pc-windows-msvc-0.1.4": "55619ce61c7b1788cf6c490f45491a11656c1067e2e6e53a759e9eef338538b2", + "i686-unknown-linux-gnu-0.1.4": "a3d55664de30d58ba26d34106fea81f2532d73afb47d6812efa884d0726dae39", + "i686-unknown-linux-musl-0.1.4": "c08cdb5232797e88c3bcf817ff1d8c47c2096275574391e30417fd2cc3f7976f", + "powerpc64-unknown-linux-gnu-0.1.4": "80ac83cbe2ee1b3c8632988d45d1e9873bd665d8ce03275f8c67cb8a5c4ffc6d", + "powerpc64le-unknown-linux-gnu-0.1.4": "35fa6f4234785dd0a7362fe3e4521caddb8aec3645cc6b55fc196f0e22756019", + "s390x-unknown-linux-gnu-0.1.4": "9cfe751e4c0d0db2d3693f777966e2e4b9d01f3651314df87871d5807aa1fd7d", + "x86_64-apple-darwin-0.1.4": "3b0648dffde1337a592963da1cf1e6167d54cb832128bba2a151b23b260decbc", + "x86_64-pc-windows-msvc-0.1.4": "0e52e5e2f92599f839d2a69739343d80044fe3593f807c9415729f56cdf59673", + "x86_64-unknown-linux-gnu-0.1.4": "1eb2f8ba39c231a310e41784980c8085eb747711ad59e430e75975a61a0a7fbf", + "x86_64-unknown-linux-musl-0.1.4": "04789d4a7f5a50524679b0d7f440566cfe69873448f4128815fab1354d3a0bb0", + "undefined-0.1.3": "0eeba5a57732dc3b0b81fe0b67f01986aac2580ef27275292b97bc1c48837014", + "aarch64-apple-darwin-0.1.3": "f15e35d795cb370f6ae9d4107961acb3e7ab190196d6f6e1243ed8941947dcff", + "aarch64-unknown-linux-gnu-0.1.3": "51d4d1c9fcd4db37535b8aa75698efcb38aeaf29a35ad969c2b17d099e7b9b89", + "aarch64-unknown-linux-musl-0.1.3": "3e15d92c271a426b7bd3fa65e5947aa7d91c97202645eb8269fa483d58d49167", + "armv7-unknown-linux-gnueabihf-0.1.3": "391828d0f9916852650de441d947e059a6a1c47eb2a96fcb4e3fecde385a6878", + "armv7-unknown-linux-musleabihf-0.1.3": "7361f722e2cf3e8c16017778140be3f27f3a4a4f0167c1f25682a35dc374e8d4", + "i686-pc-windows-msvc-0.1.3": "50370c13b2b841c9f48d66ee056caf369ed70ccfe465f1a7caa44457af494cdd", + "i686-unknown-linux-gnu-0.1.3": "3516336206e39ced43d534e7319ed01722af68cba0b7d110921eb62e1db991cf", + "i686-unknown-linux-musl-0.1.3": "0738d7d3a2e9bb13fcaa4c1001c2af00295f3e2f76441fb34edbb83a6ba0f433", + "powerpc64-unknown-linux-gnu-0.1.3": "f5cc9474f9b19d0ad210454eb779b85e2cd3089f0f509da0995f1c90f86ec9cf", + "powerpc64le-unknown-linux-gnu-0.1.3": "8bd935aa9c9f894e145de738cdd11b97ee8164ac6fee4915d3b5a5d3ac37d121", + "s390x-unknown-linux-gnu-0.1.3": "c044ef56eb600fff4c734da9912deaf3b20d962679fde9a88eb7de4cc3d77ad5", + "x86_64-apple-darwin-0.1.3": "e08524327a9c3ca3f087dcec5fa6ab20c35f3714051034a97ea04eda19e7dc04", + "x86_64-pc-windows-msvc-0.1.3": "c37479397b96f1576b08a2bb82d94fb5228918633b4605e0b580feefc5794467", + "x86_64-unknown-linux-gnu-0.1.3": "785f82659bb563553adc08608abd65475bce99f080fd01e9f5a358d2e8ddb2a6", + "x86_64-unknown-linux-musl-0.1.3": "f7355abd4f4013c573d7ae64c0a42986ffc6b08a73ee24e8bff74ee6335136df", + "undefined-0.1.2": "ba37d11fcbf801bdacdbffac31817f6be7dc4b11155957e98ed94f65e171c436", + "aarch64-apple-darwin-0.1.2": "13289f543d96c2506f7c3319e8bbc5fb944c8109374b61188593567dc2dae454", + "aarch64-unknown-linux-gnu-0.1.2": "5d4a1e82e78080ba308a06ecc408b3f17a13077dd35174031ed37646a4c24bfd", + "aarch64-unknown-linux-musl-0.1.2": "c869e839347f2fd9e0302d25470659df99918ad8bdfad2477a61393a32d1a361", + "armv7-unknown-linux-gnueabihf-0.1.2": "67f6d19583bb24d628c6d3a97fd412a81b0f15f88491b6b244cda2832365d3a3", + "armv7-unknown-linux-musleabihf-0.1.2": "7acbfaef69adffb9591766c1e6b25b5750ddac8c43bded8b8b6301852b3bb436", + "i686-pc-windows-msvc-0.1.2": "7c923a8c0198da91094c96fe9bf9f737e09aa67f569b5c0f76b5f492b9394190", + "i686-unknown-linux-gnu-0.1.2": "d5462c8746aaf8f36ca43829c6bc71f8ad303bec83d9173f44e1a3ad36d83871", + "i686-unknown-linux-musl-0.1.2": "aa85ccbac61b7e8153dd7239f9757ca3a95fb01d0782949f554fd88a396edb29", + "powerpc64-unknown-linux-gnu-0.1.2": "4055b1ce30f7786fa49fcc9dd7eb3b818aa8903930fc49a42dd11ce99507f8d9", + "powerpc64le-unknown-linux-gnu-0.1.2": "d36b4d8c78ad8816a760f2d888d52c732b2eae5d62fc0830e6918a0732361c96", + "s390x-unknown-linux-gnu-0.1.2": "5829510eb1684d2f0f58ddab2e80313e5858d5e5be6e315b9b9a74c9742f6fac", + "x86_64-apple-darwin-0.1.2": "20777b7f904ec9cf7e4f7ee19fe8a0b64afada1a7168908c14557130768f46b7", + "x86_64-pc-windows-msvc-0.1.2": "35b7fdb10fad5e644125bfb3d7f5aff83d9aca24268701359e9fef767b8a4a15", + "x86_64-unknown-linux-gnu-0.1.2": "89624cd11aa20bc4a841bdcb110940ecb9f05555d79c3f8f4758e34d76c5c7ca", + "x86_64-unknown-linux-musl-0.1.2": "f69cbd79dfea3bd69c4db064565f9eaebb86db2c0ba0609c090be86366d5db42", + "undefined-0.1.1": "525a76cf1603007fff9d1909126b2f2d3068b1cfa0e0f20dd41769a5efe87808", + "aarch64-apple-darwin-0.1.1": "ff595133104cd486c7d852f68d5fa82bafddc7cedcc5087432fd55f0681af89a", + "aarch64-unknown-linux-gnu-0.1.1": "4919f30de5b5321df003f4c73cd8d43e6d1b28da2050e221e7b574398a6c48d8", + "aarch64-unknown-linux-musl-0.1.1": "1a4382a0e417658c531ad4377f3d2ef95c55cd0bf52b9e854b7a46dc7ba679fe", + "armv7-unknown-linux-gnueabihf-0.1.1": "96f169f7bbc78bcef25f4a36ec51baf9cf2ecb4f3628267ca1cba780e9f4434a", + "armv7-unknown-linux-musleabihf-0.1.1": "581d354ec9b3504a133863e2a7ffde8bec2cce12f13e9fffed8f8bcfb28e2a24", + "i686-pc-windows-msvc-0.1.1": "f8abfe07f7c80e6f0b0bc41b827735e6342bfa14ef302195b23d9d548a3e4827", + "i686-unknown-linux-gnu-0.1.1": "b976191b1a507b709e95efee48befbf41df0e31cb882a07d4c9a928070985a68", + "i686-unknown-linux-musl-0.1.1": "ee9702c41ad0606c5b811b62acdbc5a82d814ddcf90b6d9e4f337ac6d5692f97", + "powerpc64-unknown-linux-gnu-0.1.1": "62cbd638e66db9eddfe05a4d21eb9b3c611b81f8f941c0b93bd8e4c0adb80426", + "powerpc64le-unknown-linux-gnu-0.1.1": "b0b8107d6f18c9ddfb287a5f25ff01c6b9505aae1e1001be19acfa0c0b024799", + "s390x-unknown-linux-gnu-0.1.1": "5b50e4cadb4e5ab9f2022c976f41c171fb92c4ed57b3366d8b89397d0de4735b", + "x86_64-apple-darwin-0.1.1": "dde96aad74a1abd6ba3440eceebca2a5c9f29aecf9178dda0b10d1177cfa3a8d", + "x86_64-pc-windows-msvc-0.1.1": "2f47b60169f343f0ee64cda77392aab96b77444e52b2e800d881263f33630abe", + "x86_64-unknown-linux-gnu-0.1.1": "f9d426e72ae4fccb849cef5e944ab8391accde203966f6e309dcc2505379f341", + "x86_64-unknown-linux-musl-0.1.1": "05fbfb6d1f46b2fda2bbb916b5e0c5e396dc01e8f5b14cc2a9b46f427539a380", + "undefined-0.1.0": "e745f9958b6cf7c413f52d56e4005e0a8809bdc0237d26fd53555948f4fab8d8", + "aarch64-apple-darwin-0.1.0": "955d8dcb920b0a544f3595ebf35b813912fefedf4e18f8ac6a984a0532f9e35e", + "aarch64-unknown-linux-gnu-0.1.0": "fbd2a9edbe98517ba8eb89e8650a411498b5da7b5e6470f3a0cd072bd31f7b79", + "aarch64-unknown-linux-musl-0.1.0": "492c26b75153aefae58a2f81f4582dc20e2c7b686b284dbb085a7bc0a6270430", + "armv7-unknown-linux-gnueabihf-0.1.0": "674bf524bcd8b6ed0b9ed42873bcf18af09352ea91777ecec1f1c6bc174f9837", + "armv7-unknown-linux-musleabihf-0.1.0": "8cfbe423184a860e805dc1b7a2df7b390e0c605cea77ad8dacd8968fca650a41", + "i686-pc-windows-msvc-0.1.0": "75ae72a862cf609e2141eb5fbd8206cae861e9368c27eff72f34911739cb4a3e", + "i686-unknown-linux-gnu-0.1.0": "961e44ac4d75e10f64154dcdefa40650767727fba08d73de140b8bb071db0918", + "i686-unknown-linux-musl-0.1.0": "7db329f27696a0ea70cf36ea6a437eac6ac8740a462d130af1c96fa5c5ae7539", + "powerpc64-unknown-linux-gnu-0.1.0": "0b5996241dbd3c774bbd76fbb682496367773871787132e3a917f251419ff647", + "powerpc64le-unknown-linux-gnu-0.1.0": "2d53a5bdf82f26702d5e8db20981b048265040fde49e3e5f1bc8add56ca72ff4", + "s390x-unknown-linux-gnu-0.1.0": "d9ea9847f045366b428e679d9e44ccce53119f9ed6b2bd167563ef865097695a", + "x86_64-apple-darwin-0.1.0": "e8e386f588f8fb1a51e309e89da771febda1dc34e99fce5ebf042211389e7c01", + "x86_64-pc-windows-msvc-0.1.0": "d9a55a65d761831e073a9461a3d5f4462203e991b814522f27dad12ddfab0183", + "x86_64-unknown-linux-gnu-0.1.0": "43a5253b18dee80d3e259dc0df39db39728296d0a506ab89974d3fc15d8e3a16", + "x86_64-unknown-linux-musl-0.1.0": "9caa5b457d1adbd30b28444bfccb6c789702e3bb260e286d8f3278bd0cb02af6", + "undefined-0.0.5": "5eaac1dcbcf6e25b7e2cf73aee3c9ced014605bcd3fe055e337e505ece443835", + "aarch64-apple-darwin-0.0.5": "887f58afbcdb879bcb07a0d5f99106a10b8023d4b104882627a93798629c7ed8", + "aarch64-unknown-linux-gnu-0.0.5": "ac9aa3b0ecb1655baafe87be9fdc6e4f904fc7856779e292e8d55d679867f033", + "aarch64-unknown-linux-musl-0.0.5": "e7ae701ed98ccbe51ef07345c9721b73afac8e68d0c95f9739e2eb367856bf15", + "armv7-unknown-linux-gnueabihf-0.0.5": "697804a6c83cf1fcfad284baaf72a7a5d03228759aefeccc191a4ed4d6e2ff89", + "armv7-unknown-linux-musleabihf-0.0.5": "23d2fa787666ed1b4418d584758789805d0954e36e221ec9d58376b5630d3fcc", + "i686-pc-windows-msvc-0.0.5": "ba05493ffbb4b848ac333278471f119c58bff3ff56a4de9c98449c3cde5b27d4", + "i686-unknown-linux-gnu-0.0.5": "b867363feedcce39bb6935ad12a597e6474280f69b6c759cc0ee00d0d9859427", + "i686-unknown-linux-musl-0.0.5": "40e56b614a64d0b2001738f41808f543cd3e43a0bcc4df70d4c28b92376ddf84", + "powerpc64-unknown-linux-gnu-0.0.5": "0742fd23ced7fafba5ecd580bd47dacd5613acf4b962385909032f1f6d484cb7", + "powerpc64le-unknown-linux-gnu-0.0.5": "a7f847c0490388a9f970559ff88f935d83373efda94f9db260cec26aa85f11a8", + "s390x-unknown-linux-gnu-0.0.5": "27fd1a54606ee68d07d5acd2a6000497f43fb1b87203a0c0c92da9cc77007c74", + "x86_64-apple-darwin-0.0.5": "9a62a8b6d8cefb8716aae62e1deb34df18b4fa6cfc5069c5ef645193c5a9f6c6", + "x86_64-pc-windows-msvc-0.0.5": "952e3e9ca0e88ad49c516ddaaa6625b0f818b34d83b3ff65f7557c3e07d90c2d", + "x86_64-unknown-linux-gnu-0.0.5": "c0f3bc450ffac667dd3c12e2fb221177262d60ccac0521797bb4f4fef14cfad3", + "x86_64-unknown-linux-musl-0.0.5": "705bbe04a93a9d4d9db5224c2f980a88bba272538a33a78ea2e966f46b4d5eb7", }; @@ -85549,25 +85549,25 @@ function downloadLatest(platform, arch, checkSum, githubToken) { return __awaiter(this, void 0, void 0, function* () { const artifact = `uv-${arch}-${platform}`; let downloadUrl = `https://github.com/${utils_1.OWNER}/${utils_1.REPO}/releases/latest/download/${artifact}`; - if (platform === 'pc-windows-msvc') { - downloadUrl += '.zip'; + if (platform === "pc-windows-msvc") { + downloadUrl += ".zip"; } else { - downloadUrl += '.tar.gz'; + downloadUrl += ".tar.gz"; } core.info(`Downloading uv from "${downloadUrl}" ...`); const downloadPath = yield tc.downloadTool(downloadUrl, undefined, githubToken); let uvExecutablePath; let uvDir; - if (platform === 'pc-windows-msvc') { + if (platform === "pc-windows-msvc") { uvDir = yield tc.extractZip(downloadPath); // On windows extracting the zip does not create an intermediate directory - uvExecutablePath = path.join(uvDir, 'uv.exe'); + uvExecutablePath = path.join(uvDir, "uv.exe"); } else { const extractedDir = yield tc.extractTar(downloadPath); uvDir = path.join(extractedDir, artifact); - uvExecutablePath = path.join(uvDir, 'uv'); + uvExecutablePath = path.join(uvDir, "uv"); } const version = yield getVersion(uvExecutablePath); yield (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, version); @@ -85582,17 +85582,17 @@ function getVersion(uvExecutablePath) { // The output looks like // uv 0.3.1 (be17d132a 2024-08-21) const options = { - silent: !core.isDebug() + silent: !core.isDebug(), }; - const execArgs = ['--version']; - let output = ''; + const execArgs = ["--version"]; + let output = ""; options.listeners = { stdout: (data) => { output += data.toString(); - } + }, }; yield exec.exec(uvExecutablePath, execArgs, options); - const parts = output.split(' '); + const parts = output.split(" "); return parts[1]; }); } @@ -85655,17 +85655,17 @@ function downloadVersion(platform, arch, version, checkSum, githubToken) { return __awaiter(this, void 0, void 0, function* () { const artifact = `uv-${arch}-${platform}`; let downloadUrl = `https://github.com/${utils_1.OWNER}/${utils_1.REPO}/releases/download/${version}/${artifact}`; - if (platform === 'pc-windows-msvc') { - downloadUrl += '.zip'; + if (platform === "pc-windows-msvc") { + downloadUrl += ".zip"; } else { - downloadUrl += '.tar.gz'; + downloadUrl += ".tar.gz"; } core.info(`Downloading uv from "${downloadUrl}" ...`); const downloadPath = yield tc.downloadTool(downloadUrl, undefined, githubToken); yield (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, version); let uvDir; - if (platform === 'pc-windows-msvc') { + if (platform === "pc-windows-msvc") { uvDir = yield tc.extractZip(downloadPath); // On windows extracting the zip does not create an intermediate directory } @@ -85739,7 +85739,7 @@ function run() { } const setupResult = yield setupUv(platform, arch, inputs_1.version, inputs_1.checkSum, inputs_1.githubToken); addUvToPath(setupResult.uvDir); - core.setOutput('uv-version', inputs_1.version); + core.setOutput("uv-version", inputs_1.version); core.info(`Successfully installed uv version ${inputs_1.version}`); addMatchers(); setCacheDir(inputs_1.cacheLocalPath); @@ -85758,7 +85758,7 @@ function setupUv(platform, arch, versionInput, checkSum, githubToken) { let installedPath; let cachedToolDir; let version; - if (versionInput === 'latest') { + if (versionInput === "latest") { const result = yield (0, download_latest_1.downloadLatest)(platform, arch, checkSum, githubToken); version = result.version; cachedToolDir = result.cachedToolDir; @@ -85780,12 +85780,12 @@ function addUvToPath(cachedPath) { core.info(`Added ${cachedPath} to the path`); } function setCacheDir(cacheLocalPath) { - core.exportVariable('UV_CACHE_DIR', cacheLocalPath); + core.exportVariable("UV_CACHE_DIR", cacheLocalPath); core.info(`Set UV_CACHE_DIR to ${cacheLocalPath}`); } function addMatchers() { - const matchersPath = path.join(__dirname, `..${path.sep}..`, '.github'); - core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`); + const matchersPath = path.join(__dirname, `..${path.sep}..`, ".github"); + core.info(`##[add-matcher]${path.join(matchersPath, "python.json")}`); } run(); @@ -85823,13 +85823,13 @@ var __importStar = (this && this.__importStar) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.cacheDependencyGlob = exports.githubToken = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.version = void 0; const core = __importStar(__nccwpck_require__(2186)); -exports.version = core.getInput('version'); -exports.checkSum = core.getInput('checksum'); -exports.enableCache = core.getInput('enable-cache') === 'true'; -exports.cacheSuffix = core.getInput('cache-suffix') || ''; -exports.cacheLocalPath = core.getInput('cache-local-path'); -exports.githubToken = core.getInput('github-token'); -exports.cacheDependencyGlob = core.getInput('cache-dependency-glob'); +exports.version = core.getInput("version"); +exports.checkSum = core.getInput("checksum"); +exports.enableCache = core.getInput("enable-cache") === "true"; +exports.cacheSuffix = core.getInput("cache-suffix") || ""; +exports.cacheLocalPath = core.getInput("cache-local-path"); +exports.githubToken = core.getInput("github-token"); +exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); /***/ }), @@ -85844,9 +85844,9 @@ exports.getPlatform = exports.getArch = void 0; function getArch() { const arch = process.arch; const archMapping = { - ia32: 'i686', - x64: 'x86_64', - arm64: 'aarch64' + ia32: "i686", + x64: "x86_64", + arm64: "aarch64", }; if (arch in archMapping) { return archMapping[arch]; @@ -85856,9 +85856,9 @@ exports.getArch = getArch; function getPlatform() { const platform = process.platform; const platformMapping = { - linux: 'unknown-linux-gnu', - darwin: 'apple-darwin', - win32: 'pc-windows-msvc' + linux: "unknown-linux-gnu", + darwin: "apple-darwin", + win32: "pc-windows-msvc", }; if (platform in platformMapping) { return platformMapping[platform]; @@ -85876,9 +85876,9 @@ exports.getPlatform = getPlatform; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.TOOL_CACHE_NAME = exports.OWNER = exports.REPO = void 0; -exports.REPO = 'uv'; -exports.OWNER = 'astral-sh'; -exports.TOOL_CACHE_NAME = 'uv'; +exports.REPO = "uv"; +exports.OWNER = "astral-sh"; +exports.TOOL_CACHE_NAME = "uv"; /***/ }), diff --git a/dist/update-default-version/index.js b/dist/update-default-version/index.js index 61eebf7..0af4a33 100644 --- a/dist/update-default-version/index.js +++ b/dist/update-default-version/index.js @@ -32713,34 +32713,34 @@ const tc = __importStar(__nccwpck_require__(7784)); function updateChecksums(filePath, downloadUrls) { return __awaiter(this, void 0, void 0, function* () { yield fs_1.promises.rm(filePath); - yield fs_1.promises.appendFile(filePath, '// AUTOGENERATED_DO_NOT_EDIT\nexport const KNOWN_CHECKSUMS: {[key: string]: string} = {\n'); + yield fs_1.promises.appendFile(filePath, "// AUTOGENERATED_DO_NOT_EDIT\nexport const KNOWN_CHECKSUMS: {[key: string]: string} = {\n"); let firstLine = true; for (const downloadUrl of downloadUrls) { const content = yield downloadAssetContent(downloadUrl); - const checksum = content.split(' ')[0].trim(); + const checksum = content.split(" ")[0].trim(); const key = getKey(downloadUrl); if (!firstLine) { - yield fs_1.promises.appendFile(filePath, ',\n'); + yield fs_1.promises.appendFile(filePath, ",\n"); } yield fs_1.promises.appendFile(filePath, ` '${key}':\n '${checksum}'`); firstLine = false; } - yield fs_1.promises.appendFile(filePath, '}\n'); + yield fs_1.promises.appendFile(filePath, "}\n"); }); } exports.updateChecksums = updateChecksums; function getKey(downloadUrl) { // https://github.com/astral-sh/uv/releases/download/0.3.2/uv-aarch64-apple-darwin.tar.gz.sha256 - const parts = downloadUrl.split('/'); + const parts = downloadUrl.split("/"); const fileName = parts[parts.length - 1]; - const name = fileName.split('.')[0].split('uv-')[1]; + const name = fileName.split(".")[0].split("uv-")[1]; const version = parts[parts.length - 2]; return `${name}-${version}`; } function downloadAssetContent(downloadUrl) { return __awaiter(this, void 0, void 0, function* () { const downloadPath = yield tc.downloadTool(downloadUrl); - const content = yield fs_1.promises.readFile(downloadPath, 'utf8'); + const content = yield fs_1.promises.readFile(downloadPath, "utf8"); return content; }); } @@ -32808,16 +32808,16 @@ function run() { const octokit = github.getOctokit(github_token); const response = yield octokit.paginate(octokit.rest.repos.listReleases, { owner: utils_1.OWNER, - repo: utils_1.REPO + repo: utils_1.REPO, }); - const downloadUrls = response.flatMap(release => release.assets - .filter(asset => asset.name.endsWith('.sha256')) - .map(asset => asset.browser_download_url)); + const downloadUrls = response.flatMap((release) => release.assets + .filter((asset) => asset.name.endsWith(".sha256")) + .map((asset) => asset.browser_download_url)); yield (0, update_known_checksums_1.updateChecksums)(checksumFilePath, downloadUrls); const latestVersion = response - .map(release => release.tag_name) + .map((release) => release.tag_name) .sort(semver.rcompare)[0]; - core.setOutput('latest-version', latestVersion); + core.setOutput("latest-version", latestVersion); yield updateDefaultVersion(defaultVersionFilePath, latestVersion); }); } @@ -32826,7 +32826,7 @@ function updateDefaultVersion(filePath, latestVersion) { var _a, e_1, _b, _c; const fileStream = (0, fs_1.createReadStream)(filePath); const rl = readline.createInterface({ - input: fileStream + input: fileStream, }); let foundDescription = false; const lines = []; @@ -32839,7 +32839,7 @@ function updateDefaultVersion(filePath, latestVersion) { line.includes("description: 'The version of uv to install'")) { foundDescription = true; } - else if (foundDescription && line.includes('default: ')) { + else if (foundDescription && line.includes("default: ")) { line = line.replace(/'[^']*'/, `'${latestVersion}'`); foundDescription = false; } @@ -32853,7 +32853,7 @@ function updateDefaultVersion(filePath, latestVersion) { } finally { if (e_1) throw e_1.error; } } - yield fs_1.promises.writeFile(filePath, lines.join('\n')); + yield fs_1.promises.writeFile(filePath, lines.join("\n")); }); } run(); @@ -32868,9 +32868,9 @@ run(); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.TOOL_CACHE_NAME = exports.OWNER = exports.REPO = void 0; -exports.REPO = 'uv'; -exports.OWNER = 'astral-sh'; -exports.TOOL_CACHE_NAME = 'uv'; +exports.REPO = "uv"; +exports.OWNER = "astral-sh"; +exports.TOOL_CACHE_NAME = "uv"; /***/ }), diff --git a/jest.config.js b/jest.config.js index b0ed2b3..b281a16 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,9 +1,9 @@ module.exports = { clearMocks: true, - moduleFileExtensions: ['js', 'ts'], - testMatch: ['**/*.test.ts'], + moduleFileExtensions: ["js", "ts"], + testMatch: ["**/*.test.ts"], transform: { - '^.+\\.ts$': 'ts-jest' + "^.+\\.ts$": "ts-jest", }, - verbose: true -} + verbose: true, +}; diff --git a/src/cache/restore-cache.ts b/src/cache/restore-cache.ts index a261c76..a88eb0d 100644 --- a/src/cache/restore-cache.ts +++ b/src/cache/restore-cache.ts @@ -1,65 +1,69 @@ -import * as cache from '@actions/cache' -import * as glob from '@actions/glob' -import * as core from '@actions/core' -import path from 'path' -import {cacheDependencyGlob, cacheLocalPath, cacheSuffix} from '../utils/inputs' -import {getArch, getPlatform} from '../utils/platforms' +import * as cache from "@actions/cache"; +import * as glob from "@actions/glob"; +import * as core from "@actions/core"; +import path from "path"; +import { + cacheDependencyGlob, + cacheLocalPath, + cacheSuffix, +} from "../utils/inputs"; +import { getArch, getPlatform } from "../utils/platforms"; -export const STATE_CACHE_KEY = 'cache-key' -export const STATE_CACHE_MATCHED_KEY = 'cache-matched-key' -const CACHE_VERSION = '1' +export const STATE_CACHE_KEY = "cache-key"; +export const STATE_CACHE_MATCHED_KEY = "cache-matched-key"; +const CACHE_VERSION = "1"; export async function restoreCache(version: string): Promise { - const cacheKey = await computeKeys(version) + const cacheKey = await computeKeys(version); - let matchedKey: string | undefined + let matchedKey: string | undefined; core.info( - `Trying to restore uv cache from GitHub Actions cache with key: ${cacheKey}` - ) + `Trying to restore uv cache from GitHub Actions cache with key: ${cacheKey}`, + ); try { - matchedKey = await cache.restoreCache([cacheLocalPath], cacheKey) + matchedKey = await cache.restoreCache([cacheLocalPath], cacheKey); } catch (err) { - const message = (err as Error).message - core.warning(message) - core.setOutput('cache-hit', false) - return + const message = (err as Error).message; + core.warning(message); + core.setOutput("cache-hit", false); + return; } - core.saveState(STATE_CACHE_KEY, cacheKey) + core.saveState(STATE_CACHE_KEY, cacheKey); - handleMatchResult(matchedKey, cacheKey) + handleMatchResult(matchedKey, cacheKey); } async function computeKeys(version: string): Promise { - let cacheDependencyPathHash = '-' - if (cacheDependencyGlob !== '') { - const fullCacheDependencyGlob = `${process.env['GITHUB_WORKSPACE']}${path.sep}${cacheDependencyGlob}` - cacheDependencyPathHash += await glob.hashFiles(fullCacheDependencyGlob) - if (cacheDependencyPathHash === '-') { + let cacheDependencyPathHash = "-"; + if (cacheDependencyGlob !== "") { + const fullCacheDependencyGlob = `${process.env["GITHUB_WORKSPACE"]}${path.sep}${cacheDependencyGlob}`; + cacheDependencyPathHash += await glob.hashFiles(fullCacheDependencyGlob); + if (cacheDependencyPathHash === "-") { throw new Error( - `No file in ${process.cwd()} matched to [${cacheDependencyGlob}], make sure you have checked out the target repository` - ) + `No file in ${process.cwd()} matched to [${cacheDependencyGlob}], make sure you have checked out the target repository`, + ); } } else { - cacheDependencyPathHash += 'no-dependency-glob' + cacheDependencyPathHash += "no-dependency-glob"; } - const suffix = cacheSuffix ? `-${cacheSuffix}` : '' - return `setup-uv-${CACHE_VERSION}-${getArch()}-${getPlatform()}-${version}${cacheDependencyPathHash}${suffix}` + const suffix = cacheSuffix ? `-${cacheSuffix}` : ""; + return `setup-uv-${CACHE_VERSION}-${getArch()}-${getPlatform()}-${version}${cacheDependencyPathHash}${suffix}`; } function handleMatchResult( matchedKey: string | undefined, - primaryKey: string + primaryKey: string, ): void { if (!matchedKey) { - core.info(`No GitHub Actions cache found for key: ${primaryKey}`) - core.setOutput('cache-hit', false) - return + core.info(`No GitHub Actions cache found for key: ${primaryKey}`); + core.setOutput("cache-hit", false); + return; } - core.saveState(STATE_CACHE_MATCHED_KEY, matchedKey) + core.saveState(STATE_CACHE_MATCHED_KEY, matchedKey); core.info( - `uv cache restored from GitHub Actions cache with key: ${matchedKey}` - ) - core.setOutput('cache-hit', true) + `uv cache restored from GitHub Actions cache with key: ${matchedKey}`, + ); + core.setOutput("cache-hit", true); } diff --git a/src/download/checksum/checksum.ts b/src/download/checksum/checksum.ts index 5b9b539..3a9e063 100644 --- a/src/download/checksum/checksum.ts +++ b/src/download/checksum/checksum.ts @@ -1,55 +1,55 @@ -import * as fs from 'fs' -import * as crypto from 'crypto' +import * as fs from "fs"; +import * as crypto from "crypto"; -import * as core from '@actions/core' -import {KNOWN_CHECKSUMS} from './known-checksums' -import {Architecture, Platform} from '../../utils/platforms' +import * as core from "@actions/core"; +import { KNOWN_CHECKSUMS } from "./known-checksums"; +import { Architecture, Platform } from "../../utils/platforms"; export async function validateChecksum( checkSum: string | undefined, downloadPath: string, arch: Architecture, platform: Platform, - version: string + version: string, ): Promise { - let isValid = true - if (checkSum !== undefined && checkSum !== '') { - isValid = await validateFileCheckSum(downloadPath, checkSum) + let isValid = true; + if (checkSum !== undefined && checkSum !== "") { + isValid = await validateFileCheckSum(downloadPath, checkSum); } else { - core.debug(`Checksum not provided. Checking known checksums.`) - const key = `${arch}-${platform}-${version}` + core.debug(`Checksum not provided. Checking known checksums.`); + const key = `${arch}-${platform}-${version}`; if (key in KNOWN_CHECKSUMS) { - const knownChecksum = KNOWN_CHECKSUMS[`${arch}-${platform}-${version}`] - core.debug(`Checking checksum for ${arch}-${platform}-${version}.`) - isValid = await validateFileCheckSum(downloadPath, knownChecksum) + const knownChecksum = KNOWN_CHECKSUMS[`${arch}-${platform}-${version}`]; + core.debug(`Checking checksum for ${arch}-${platform}-${version}.`); + isValid = await validateFileCheckSum(downloadPath, knownChecksum); } else { - core.debug(`No known checksum found for ${key}.`) + core.debug(`No known checksum found for ${key}.`); } } if (!isValid) { - throw new Error(`Checksum for ${downloadPath} did not match ${checkSum}.`) + throw new Error(`Checksum for ${downloadPath} did not match ${checkSum}.`); } - core.debug(`Checksum for ${downloadPath} is valid.`) + core.debug(`Checksum for ${downloadPath} is valid.`); } async function validateFileCheckSum( filePath: string, - expected: string + expected: string, ): Promise { return new Promise((resolve, reject) => { - const hash = crypto.createHash('sha256') - const stream = fs.createReadStream(filePath) - stream.on('error', err => reject(err)) - stream.on('data', chunk => hash.update(chunk)) - stream.on('end', () => { - const actual = hash.digest('hex') - resolve(actual === expected) - }) - }) + const hash = crypto.createHash("sha256"); + const stream = fs.createReadStream(filePath); + stream.on("error", (err) => reject(err)); + stream.on("data", (chunk) => hash.update(chunk)); + stream.on("end", () => { + const actual = hash.digest("hex"); + resolve(actual === expected); + }); + }); } export function isknownVersion(version: string): boolean { - const pattern = new RegExp(`^.*-.*-${version}$`) - return Object.keys(KNOWN_CHECKSUMS).some(key => pattern.test(key)) + const pattern = new RegExp(`^.*-.*-${version}$`); + return Object.keys(KNOWN_CHECKSUMS).some((key) => pattern.test(key)); } diff --git a/src/download/checksum/known-checksums.ts b/src/download/checksum/known-checksums.ts index 2340532..d406702 100644 --- a/src/download/checksum/known-checksums.ts +++ b/src/download/checksum/known-checksums.ts @@ -1,3303 +1,3303 @@ // AUTOGENERATED_DO_NOT_EDIT -export const KNOWN_CHECKSUMS: {[key: string]: string} = { - 'undefined-0.4.4': - '32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6', - 'aarch64-apple-darwin-0.4.4': - '3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae', - 'aarch64-unknown-linux-gnu-0.4.4': - 'f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2', - 'aarch64-unknown-linux-musl-0.4.4': - '803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d', - 'arm-unknown-linux-musleabihf-0.4.4': - 'e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6', - 'armv7-unknown-linux-gnueabihf-0.4.4': - 'fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37', - 'armv7-unknown-linux-musleabihf-0.4.4': - '9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681', - 'i686-pc-windows-msvc-0.4.4': - '01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a', - 'i686-unknown-linux-gnu-0.4.4': - '9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4', - 'i686-unknown-linux-musl-0.4.4': - '5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa', - 'powerpc64-unknown-linux-gnu-0.4.4': - '7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744', - 'powerpc64le-unknown-linux-gnu-0.4.4': - '79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17', - 'powerpc64le-unknown-linux-musl-0.4.4': - 'bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce', - 's390x-unknown-linux-gnu-0.4.4': - 'a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf', - 'x86_64-apple-darwin-0.4.4': - '618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f', - 'x86_64-pc-windows-msvc-0.4.4': - 'dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65', - 'x86_64-unknown-linux-gnu-0.4.4': - 'c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b', - 'x86_64-unknown-linux-musl-0.4.4': - 'a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586', - 'undefined-0.4.3': - '05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554', - 'aarch64-apple-darwin-0.4.3': - 'e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d', - 'aarch64-unknown-linux-gnu-0.4.3': - 'bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801', - 'aarch64-unknown-linux-musl-0.4.3': - '8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f', - 'arm-unknown-linux-musleabihf-0.4.3': - 'c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0', - 'armv7-unknown-linux-gnueabihf-0.4.3': - 'f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0', - 'armv7-unknown-linux-musleabihf-0.4.3': - '9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585', - 'i686-pc-windows-msvc-0.4.3': - 'ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0', - 'i686-unknown-linux-gnu-0.4.3': - '762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa', - 'i686-unknown-linux-musl-0.4.3': - '8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9', - 'powerpc64-unknown-linux-gnu-0.4.3': - 'b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8', - 'powerpc64le-unknown-linux-gnu-0.4.3': - 'cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710', - 'powerpc64le-unknown-linux-musl-0.4.3': - '6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3', - 's390x-unknown-linux-gnu-0.4.3': - 'f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086', - 'x86_64-apple-darwin-0.4.3': - 'bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd', - 'x86_64-pc-windows-msvc-0.4.3': - '6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e', - 'x86_64-unknown-linux-gnu-0.4.3': - 'af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8', - 'x86_64-unknown-linux-musl-0.4.3': - 'ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333', - 'undefined-0.4.2': - '98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3', - 'aarch64-apple-darwin-0.4.2': - 'c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e', - 'aarch64-unknown-linux-gnu-0.4.2': - '19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc', - 'aarch64-unknown-linux-musl-0.4.2': - '2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4', - 'arm-unknown-linux-musleabihf-0.4.2': - '9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26', - 'armv7-unknown-linux-gnueabihf-0.4.2': - 'd6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e', - 'armv7-unknown-linux-musleabihf-0.4.2': - '931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e', - 'i686-pc-windows-msvc-0.4.2': - 'c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6', - 'i686-unknown-linux-gnu-0.4.2': - '2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2', - 'i686-unknown-linux-musl-0.4.2': - 'b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e', - 'powerpc64-unknown-linux-gnu-0.4.2': - '61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6', - 'powerpc64le-unknown-linux-gnu-0.4.2': - 'ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6', - 'powerpc64le-unknown-linux-musl-0.4.2': - '8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f', - 's390x-unknown-linux-gnu-0.4.2': - '8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d', - 'x86_64-apple-darwin-0.4.2': - '4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d', - 'x86_64-pc-windows-msvc-0.4.2': - '3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c', - 'x86_64-unknown-linux-gnu-0.4.2': - '56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289', - 'x86_64-unknown-linux-musl-0.4.2': - '7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d', - 'undefined-0.4.1': - 'bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82', - 'aarch64-apple-darwin-0.4.1': - 'd89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b', - 'aarch64-unknown-linux-gnu-0.4.1': - '2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694', - 'aarch64-unknown-linux-musl-0.4.1': - 'd9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f', - 'arm-unknown-linux-musleabihf-0.4.1': - '1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2', - 'armv7-unknown-linux-gnueabihf-0.4.1': - '19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01', - 'armv7-unknown-linux-musleabihf-0.4.1': - 'd750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92', - 'i686-pc-windows-msvc-0.4.1': - '7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee', - 'i686-unknown-linux-gnu-0.4.1': - 'ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2', - 'i686-unknown-linux-musl-0.4.1': - '43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe', - 'powerpc64-unknown-linux-gnu-0.4.1': - '12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7', - 'powerpc64le-unknown-linux-gnu-0.4.1': - '13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0', - 'powerpc64le-unknown-linux-musl-0.4.1': - 'c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f', - 's390x-unknown-linux-gnu-0.4.1': - 'cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181', - 'x86_64-apple-darwin-0.4.1': - '7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d', - 'x86_64-pc-windows-msvc-0.4.1': - 'a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89', - 'x86_64-unknown-linux-gnu-0.4.1': - 'f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e', - 'x86_64-unknown-linux-musl-0.4.1': - 'f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44', - 'undefined-0.4.0': - '3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18', - 'aarch64-apple-darwin-0.4.0': - '33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9', - 'aarch64-unknown-linux-gnu-0.4.0': - '0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07', - 'aarch64-unknown-linux-musl-0.4.0': - '5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd', - 'arm-unknown-linux-musleabihf-0.4.0': - '1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8', - 'armv7-unknown-linux-gnueabihf-0.4.0': - 'b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce', - 'armv7-unknown-linux-musleabihf-0.4.0': - '38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae', - 'i686-pc-windows-msvc-0.4.0': - '60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc', - 'i686-unknown-linux-gnu-0.4.0': - '0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f', - 'i686-unknown-linux-musl-0.4.0': - 'bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690', - 'powerpc64-unknown-linux-gnu-0.4.0': - '56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124', - 'powerpc64le-unknown-linux-gnu-0.4.0': - 'e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0', - 'powerpc64le-unknown-linux-musl-0.4.0': - '64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838', - 's390x-unknown-linux-gnu-0.4.0': - 'd899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da', - 'x86_64-apple-darwin-0.4.0': - '5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272', - 'x86_64-pc-windows-msvc-0.4.0': - '2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792', - 'x86_64-unknown-linux-gnu-0.4.0': - '1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1', - 'x86_64-unknown-linux-musl-0.4.0': - '033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c', - 'undefined-0.3.5': - '7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572', - 'aarch64-apple-darwin-0.3.5': - 'a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8', - 'aarch64-unknown-linux-gnu-0.3.5': - '30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae', - 'aarch64-unknown-linux-musl-0.3.5': - '012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5', - 'arm-unknown-linux-musleabihf-0.3.5': - '88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f', - 'armv7-unknown-linux-gnueabihf-0.3.5': - 'ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3', - 'armv7-unknown-linux-musleabihf-0.3.5': - '1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25', - 'i686-pc-windows-msvc-0.3.5': - '3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c', - 'i686-unknown-linux-gnu-0.3.5': - '91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8', - 'i686-unknown-linux-musl-0.3.5': - '8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966', - 'powerpc64-unknown-linux-gnu-0.3.5': - 'cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12', - 'powerpc64le-unknown-linux-gnu-0.3.5': - '343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7', - 'powerpc64le-unknown-linux-musl-0.3.5': - '7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55', - 's390x-unknown-linux-gnu-0.3.5': - 'b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d', - 'x86_64-apple-darwin-0.3.5': - '483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c', - 'x86_64-pc-windows-msvc-0.3.5': - '339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95', - 'x86_64-unknown-linux-gnu-0.3.5': - 'a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db', - 'x86_64-unknown-linux-musl-0.3.5': - 'f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84', - 'undefined-0.3.4': - '89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d', - 'aarch64-apple-darwin-0.3.4': - 'd00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086', - 'aarch64-unknown-linux-gnu-0.3.4': - 'f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f', - 'aarch64-unknown-linux-musl-0.3.4': - '743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346', - 'arm-unknown-linux-musleabihf-0.3.4': - '8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16', - 'armv7-unknown-linux-gnueabihf-0.3.4': - '2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c', - 'armv7-unknown-linux-musleabihf-0.3.4': - '9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd', - 'i686-pc-windows-msvc-0.3.4': - '9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf', - 'i686-unknown-linux-gnu-0.3.4': - '4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3', - 'i686-unknown-linux-musl-0.3.4': - '1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd', - 'powerpc64-unknown-linux-gnu-0.3.4': - '63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158', - 'powerpc64le-unknown-linux-gnu-0.3.4': - '513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232', - 'powerpc64le-unknown-linux-musl-0.3.4': - 'a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5', - 's390x-unknown-linux-gnu-0.3.4': - '4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9', - 'x86_64-apple-darwin-0.3.4': - '70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23', - 'x86_64-pc-windows-msvc-0.3.4': - '32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d', - 'x86_64-unknown-linux-gnu-0.3.4': - 'd0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe', - 'x86_64-unknown-linux-musl-0.3.4': - 'c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747', - 'undefined-0.3.3': - '40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e', - 'aarch64-apple-darwin-0.3.3': - 'a8e6593f5f787823de4c0509af030b0327b536903044c77c9e61941e0032def7', - 'aarch64-unknown-linux-gnu-0.3.3': - 'a0815f3950be714b4d32efacecf32cb33b2857f837fe9cda56b717d69a33851b', - 'aarch64-unknown-linux-musl-0.3.3': - '47f6794a78e3ae62c27bd19d347b30362f3aa7466eb1767c10bbc5ddd015208e', - 'arm-unknown-linux-musleabihf-0.3.3': - '90384cd65b755d3e60cbe21c2b991a1ddb03e42649d8598248b782d66fb41135', - 'armv7-unknown-linux-gnueabihf-0.3.3': - 'bf4e8c2d1137959dc2271190e036f9046ea95e82ef3af948ec9bf6a8e4ed4c45', - 'armv7-unknown-linux-musleabihf-0.3.3': - '92578e0da2b2fff1002a70d217d54b3b1a37be424bbe91b03aa0ee1ec233d54f', - 'i686-pc-windows-msvc-0.3.3': - '7184333831c6608f395c600ac2bb98890babf38fcea48eee8a9fe5e3a8c81bcb', - 'i686-unknown-linux-gnu-0.3.3': - '11f0071666d5dd10255c73a80938eb573d7d080203c3f6b7f13ddbc9054cbad9', - 'i686-unknown-linux-musl-0.3.3': - 'de74c76c0c03a2a9638276d46c2fae14d732679a011600e5d361c880124a9aef', - 'powerpc64-unknown-linux-gnu-0.3.3': - '6bd8a0cb576b49a25f57dc3f602f1caa1e37a60c602d0f170809af78fd66c55d', - 'powerpc64le-unknown-linux-gnu-0.3.3': - 'd9d6db9f3ffcedfd8a29a8f18af3fb09fd639fbdb33c2cb58b2bf5e428942269', - 'powerpc64le-unknown-linux-musl-0.3.3': - 'cd7d6199b1682d0348b3411f094e653e132a2c78ed39424ebc3278f78b51d0e1', - 's390x-unknown-linux-gnu-0.3.3': - 'bc941ccd12529957eff13882cc8f2f37b5a47a4ab80ea67ba5444778764efec5', - 'x86_64-apple-darwin-0.3.3': - 'be1cdcdee3d91402d259c34b756a42beaafe7bb93567bb5d48c7fdcf799e423b', - 'x86_64-pc-windows-msvc-0.3.3': - '742f3c5aefd0966c38705b0439641c390aef290e8ea007496ac83fcb825203a6', - 'x86_64-unknown-linux-gnu-0.3.3': - '729da13410ba857c6e258753c4fabcccc39d32801fea7f5149997e9f88b27b3d', - 'x86_64-unknown-linux-musl-0.3.3': - '8c7a7bf83bbe25bc5e5d7d41cc5f58148a8b577a298cd91ea9173b4e612bafda', - 'undefined-0.3.2': - '1aadddb260b5a9f3d44f5832a834b55a6fd1573bb657d62759495dcdbe212507', - 'aarch64-apple-darwin-0.3.2': - 'a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218', - 'aarch64-unknown-linux-gnu-0.3.2': - '6be360abe140f6818844aa3fdf6a3d004b2337b9c240be77c348bcf1f032e877', - 'aarch64-unknown-linux-musl-0.3.2': - '65735e2776fae9ee3f4604f6d3c562f1f7cae203e428a6d8824a37379f469d77', - 'arm-unknown-linux-musleabihf-0.3.2': - '68818f6b349260ae60bae969dfa048f45e4196c74a0639c4b9c3591cc0f56dcf', - 'armv7-unknown-linux-gnueabihf-0.3.2': - '474b62fbbd461792e224dbc5e883a4bfe23f85aa2e3d45b6f1fda1b5be1ab0f3', - 'armv7-unknown-linux-musleabihf-0.3.2': - 'b66b76824df42c3057a9ed440a2d1630533a8fa1fbab3c99f237cecb0cbafc47', - 'i686-pc-windows-msvc-0.3.2': - '26ddb27546bb7fc97758aed476938bd4469d9a6698292909b6e7820c48a3eead', - 'i686-unknown-linux-gnu-0.3.2': - '44b11e3cb4e0e6e51e3a78738fa17da251975434b0d538dd6219fc221b520585', - 'i686-unknown-linux-musl-0.3.2': - '37a8728fd5125990b4de3468a3f12b7242f336852c5c2b27fe14a81a7df6b579', - 'powerpc64-unknown-linux-gnu-0.3.2': - 'd4f02f9781be8e0bd2dc87481b1aa045cb37f2bb83cef20272a1a506ccffc9a8', - 'powerpc64le-unknown-linux-gnu-0.3.2': - '6ca624ec97b6f13a65d8d0d4b854634b48e6b7b6f9dcd1433ebb584ee3164fcd', - 'powerpc64le-unknown-linux-musl-0.3.2': - '7a50bf8228ec8ca60dc5ca1a1aaad4ece43d2ff08e32c0178ac0c5e652126372', - 's390x-unknown-linux-gnu-0.3.2': - 'b0ffeeba7605cab0058713be4f23a9772f8dcc0218d760ee22635f9caf4c56de', - 'x86_64-apple-darwin-0.3.2': - '7b54003989387079ca27b8895a11abba7ccae60712641592c81e0edab4c668dd', - 'x86_64-pc-windows-msvc-0.3.2': - 'ee77cedd463673505bf6c060eb8149f3d3965c46090bbf76595d2b05a95e596b', - 'x86_64-unknown-linux-gnu-0.3.2': - '4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd', - 'x86_64-unknown-linux-musl-0.3.2': - '38d18a40c0bdf02f98f3ee35749c295638be37fb8699aa626ca5c87d0ad42512', - 'undefined-0.3.1': - '5dce72d45cbbc0b661325e5f585440b977e095b6a29601059f509065f86ff9ae', - 'aarch64-apple-darwin-0.3.1': - 'e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8', - 'aarch64-unknown-linux-gnu-0.3.1': - '6d57e45392f7cffe62853f1f35382e8ac9d52f1061c97ecace28dbf50243e7e1', - 'aarch64-unknown-linux-musl-0.3.1': - '2465eb291940c51cdf84c68d2a699d4026f7030cdaeb2a4e2801a3c4c0213f19', - 'arm-unknown-linux-musleabihf-0.3.1': - 'dba9127924bd5e809600b1554a8b91f8abde511cbe9ddb5027a9749254c7a531', - 'armv7-unknown-linux-gnueabihf-0.3.1': - 'e95c07dced47f3c6444c66f52378bfbcc0015281bda2ad79d308421a458b5384', - 'armv7-unknown-linux-musleabihf-0.3.1': - '8c58b4ce189d5e1add276eaaf3d69c77de340cbbe79fec375333de00e4e360dc', - 'i686-pc-windows-msvc-0.3.1': - 'f5d15af65e0782f2459770afacb3ce8c5a4916566399e357c951618edbd27c9d', - 'i686-unknown-linux-gnu-0.3.1': - '22508ed628b2966ec0cac3264db99337059f8c1cf70c0db0ee88d7d27f3e181f', - 'i686-unknown-linux-musl-0.3.1': - '223b6920226ff5af37178b0511112d82af6dbcb24dd78230d972a17de6a4a0ae', - 'powerpc64-unknown-linux-gnu-0.3.1': - 'c4eb8e06853c0e1accb6ef7976ee52ffe21631709a3ff63f4a1523ecafd7354d', - 'powerpc64le-unknown-linux-gnu-0.3.1': - '540aa375abc43c5fcb39e646ab7e3ebc14ebfb95264575c81b8c9c335ab4122f', - 'powerpc64le-unknown-linux-musl-0.3.1': - '387459fa2cdfa3f9814c8a2de2a864a0be6ce159f76e831cd249f4b659edda5a', - 's390x-unknown-linux-gnu-0.3.1': - 'b469bd51615edb3ec245b0aeb9338d074a8832856029b331f2a949946e921cd9', - 'x86_64-apple-darwin-0.3.1': - '8a4fc632bf32b49a08d1994e6a4054b535eb7f0eb85e618f30fae86375b34cab', - 'x86_64-pc-windows-msvc-0.3.1': - 'e57ebd003eee92edfaa909fffec3214aa032590566851edc5ce55824c4aacf8a', - 'x86_64-unknown-linux-gnu-0.3.1': - '1ad8815d46435ab29923d84717dd0f8ee467be055cff5c4ba1d9855882a6ae19', - 'x86_64-unknown-linux-musl-0.3.1': - 'e9f8396a2c06d6c06c36338b795e2978645c2b3b0e6915537e1860dd0cd951ab', - 'undefined-0.3.0': - '1f52cb03becdae308666b75ff6b193ca55267a762ecf98d99f8f4cc8cbfe5a5a', - 'aarch64-apple-darwin-0.3.0': - '232935b3b2c187c4f8dc8bf533875bd7163d06a6fab625a1770689b337cbfded', - 'aarch64-unknown-linux-gnu-0.3.0': - '27fca2b1fda6870e1e6d376276cf0e7d3ca87b7e5c3062ef1301d9e5266cfa39', - 'aarch64-unknown-linux-musl-0.3.0': - '55bc78ee396f3b9847d28a83edbeeb557edd78462b782459d95fa9cad86cca5e', - 'arm-unknown-linux-musleabihf-0.3.0': - '9305f0214f16eda22e72f4dd08c6b980243fe16a43b6efcaf11227efd1aa5d9e', - 'armv7-unknown-linux-gnueabihf-0.3.0': - 'e949eb495b199e6c5853f6b051e3c7db84c044453e443d7b7892aef4eb08f5bd', - 'armv7-unknown-linux-musleabihf-0.3.0': - 'c466e061a8547a669e216321738d02ca5c864eb4ab3feac53a51a681a07cb2d7', - 'i686-pc-windows-msvc-0.3.0': - '1dbe4b2b9829bb11cdb3ec64e916749f6224f0db0a65bbba69570a8aa1289e2c', - 'i686-unknown-linux-gnu-0.3.0': - 'b5a7fb7e649de9fb0342fd42c3bb1c5e6dd25d96096e08af99caa276fa44dc07', - 'i686-unknown-linux-musl-0.3.0': - '569ed9ac409ebce382e1583c33705e159bb960e79f9fe58feb9a357676be3607', - 'powerpc64-unknown-linux-gnu-0.3.0': - '0e075944b22557da941677ff25fa21677cd1eaf8302782dd2c94643494f667e6', - 'powerpc64le-unknown-linux-gnu-0.3.0': - '6886c917446d6b954eff5c688596a4216e9418560166271eac1caa722847350c', - 'powerpc64le-unknown-linux-musl-0.3.0': - '560583853792f5e3e4d40594436d5f75cdbc9a4e304d6f781f601b9eeaafbfd1', - 's390x-unknown-linux-gnu-0.3.0': - '72b1b81523466a0fbe388bbde0a6926ed0af4884cb46d1e46ed1c0232a076cab', - 'x86_64-apple-darwin-0.3.0': - '8f3abf9bc7f49ddf85b1ebb4e5a5dd2032b6e7a4492fb5fce4b70ee4a9938733', - 'x86_64-pc-windows-msvc-0.3.0': - 'b8b693699b46d2063cf92ada07671a309f14ccb99b34f9b3f927f7fa08b24c19', - 'x86_64-unknown-linux-gnu-0.3.0': - '06e38986b2923882ad250ac42c9e5db3295bde33693aa9a63b8d32632daba007', - 'x86_64-unknown-linux-musl-0.3.0': - '194d2a550af3e334f693f6afd716d66adc90445805e72bfa8108f36714ed7431', - 'undefined-0.2.37': - 'bad5e3e29e3a795a789dfdce52b4ae4c252f95572539b075bc938870e6e7c1df', - 'aarch64-apple-darwin-0.2.37': - '35786030f926e3d34d186edc0ea3989698e57755852af9ae4b39da5109abcbfa', - 'aarch64-unknown-linux-gnu-0.2.37': - 'ac1b4688074f5a2eab1fbe331e76b5f5766e143a8eac87f64f24379168b971f9', - 'aarch64-unknown-linux-musl-0.2.37': - 'ddec1dd3aced1a209645c0d4c8fc9bd9f3c6a4577c43a854efd6708440f34f14', - 'arm-unknown-linux-musleabihf-0.2.37': - 'd99c5c44ae042249b50720d3979aa5b82f61838ee76474a250ced23c09475a85', - 'armv7-unknown-linux-gnueabihf-0.2.37': - '3fe173e1e1d2f1bf0196bf8a140f39bc4eee34d16c6f758e552bf2a40f82b579', - 'armv7-unknown-linux-musleabihf-0.2.37': - 'dd5a3225a8f39a4621425079f867decea4638e21d65cc9fc6803f1f6d4e22f6b', - 'i686-pc-windows-msvc-0.2.37': - '4c024f88c23359f8c0a61a31f93197e1fcc0b6e2ed2ea17733b99494b75078c8', - 'i686-unknown-linux-gnu-0.2.37': - 'a041764c46d872124b4ba390bf1a9263fb52fe1b17cfbd5af85a0deaf66ade1e', - 'i686-unknown-linux-musl-0.2.37': - 'b307f7dd65a3175aee4283603c0107496de14e431614ab10060d89f4c9ceaf31', - 'powerpc64-unknown-linux-gnu-0.2.37': - 'c4bee003a56938110c1e9d1c1843837149f20696c35d148567b1106223f06200', - 'powerpc64le-unknown-linux-gnu-0.2.37': - 'c54213db80c976487f54e5521f73010029da1bcdd22136a52a9976deca30db9e', - 'powerpc64le-unknown-linux-musl-0.2.37': - '8da6a98b7bec35b6333b33872c641a52070331192da840ea5716fbd182f66e27', - 's390x-unknown-linux-gnu-0.2.37': - '5603fbd953a980203c9f6adec0482165a3b8274b2202a9fe46e1ec3168d4386e', - 'x86_64-apple-darwin-0.2.37': - '13185dd359d6b3c3c0e170711b2939f3512741ec64c436e0bef83813e94a6691', - 'x86_64-pc-windows-msvc-0.2.37': - 'ea51e0dfdc0c1884d116b5a12b589e65bb47d0b2d071d6da4a23f453585be144', - 'x86_64-unknown-linux-gnu-0.2.37': - '2aa80df3a7120a13fe8cfd0ced688a6285e58c40cfa878e6de817356914df485', - 'x86_64-unknown-linux-musl-0.2.37': - 'a4ec0d06361c27a87111212623559da332382c2ead25c1f4c9386adee9905b62', - 'undefined-0.2.36': - '6e7e0950c5808eea0bda615ab5d2e9fa517434edc0c17d0766cd47606241c060', - 'aarch64-apple-darwin-0.2.36': - '89f0f76695ee554cdfae60245667b795ffeac7e4d52c0b7fa90bb46d4cf95d59', - 'aarch64-unknown-linux-gnu-0.2.36': - '8bbc36002d398b5d9febe93be913d42d2844944451189cad6ff2b844c604f499', - 'aarch64-unknown-linux-musl-0.2.36': - '921a5c069a74608e63e7292d606b1cf0096ffd0914f28bd825968ac66ab3a77f', - 'arm-unknown-linux-musleabihf-0.2.36': - '349369041c1c86c69bcbdbc3fa2bb0d03e864a95db5e50ef0c04ee67c4e0d428', - 'armv7-unknown-linux-gnueabihf-0.2.36': - '42d15ec25a0e04fcda9e6e7501e8cc51d17e593a8758ec76e686381336ec6302', - 'armv7-unknown-linux-musleabihf-0.2.36': - 'eaed31f496ce42bccbe17eab69d36351c67d3832f9c7740e33c34a3edf5c5451', - 'i686-pc-windows-msvc-0.2.36': - 'b8a3fcaf5e66ae916f31d8c1df8a7d32558eb8e852087c6038cc80fb3e04dace', - 'i686-unknown-linux-gnu-0.2.36': - '1f0515ebd04690b5f09b5a55531eff3595fc778d021bf6b33b5d5dbfdd76ce0a', - 'i686-unknown-linux-musl-0.2.36': - '07bb7a141abfe23d0fbdf30e0840865671f491228288cd851d943a984ff5982b', - 'powerpc64-unknown-linux-gnu-0.2.36': - '9ec964f73faa23b52e8022086fbffc8f77dbe346e5a17344967a290c10ea0143', - 'powerpc64le-unknown-linux-gnu-0.2.36': - 'f7cf2055c9048faebd75665487d20a55812e37535c6f8393a97f715f40482433', - 'powerpc64le-unknown-linux-musl-0.2.36': - '03c3221271bbde6333be35e7bdf0576a73165f8f35c48e33cf09b8e14f907718', - 's390x-unknown-linux-gnu-0.2.36': - '91788d177f47e3a6db63d5d619f622814b1407b673c311873b4868f223eb2ca5', - 'x86_64-apple-darwin-0.2.36': - 'a8c08a6c978b0ef87c00012d892d936324dc9a6881efefbd028622b69c903aa5', - 'x86_64-pc-windows-msvc-0.2.36': - 'ae6e07bd2c0843a0ffd18959a519c125bcc444d4ad1b71c00e7c3734bed0777e', - 'x86_64-unknown-linux-gnu-0.2.36': - '6fbea0801c1698d00b2300b220d4f72a4edeb0406877ac6d774f4ff385b6fbe2', - 'x86_64-unknown-linux-musl-0.2.36': - 'd3543c84d8b2da5d8f08b6f2e87e792aa7626c47cb65458c7b92e68e8614d3a8', - 'undefined-0.2.35': - '19425afc472eb6e7ff6c4abc28ed2582af977aab1b1d7f15db34ec9579ef9095', - 'aarch64-apple-darwin-0.2.35': - 'e07fd0ed3b5e92ce9018f8775aa76cfd891fae8cb0a1627d5a861158fdbbe32a', - 'aarch64-unknown-linux-gnu-0.2.35': - '41d1a15fbd346ca3b33e8c60e54bc36df11a8e8655e98e25801847c270e1b6f9', - 'aarch64-unknown-linux-musl-0.2.35': - 'b8c920e4d335f09ab032087e0f27b4beda00248577ae708fbebf0362f7b19818', - 'arm-unknown-linux-musleabihf-0.2.35': - 'd50f55d2cdcca7aa7542e73482106fa8413541ad17da47a2a9be612a0b53dc74', - 'armv7-unknown-linux-gnueabihf-0.2.35': - '322b8564e20a860d5d6e0d9de950f2f0d8204ed7b7a9605f25c0039cb01ac6a4', - 'armv7-unknown-linux-musleabihf-0.2.35': - '5f2a37d0414c8585770721139fcad061f123f312ca85faebc70f8836bc5b0c30', - 'i686-pc-windows-msvc-0.2.35': - '2bd193bb68095b21b86a1126a6fe7740a36bd76cdbb606f51b0da6f19214487a', - 'i686-unknown-linux-gnu-0.2.35': - '44719f49c7e7d634db35d9656f2f168fc13042ab87ee9afe8f04c864a3c341b9', - 'i686-unknown-linux-musl-0.2.35': - '2cb162263ee067df2a10c3f9c9959835862aebc17402b7e0decff4a0dda30b45', - 'powerpc64-unknown-linux-gnu-0.2.35': - '31ca8623f79926496f78d335839d13d15c66c7e164804604e8f4535be4f5be19', - 'powerpc64le-unknown-linux-gnu-0.2.35': - 'b1d797f9a9f413f3d3f884accd47a97c84d64145407d458e4442b4d011aa39b6', - 'powerpc64le-unknown-linux-musl-0.2.35': - 'fc7e73e1af403cb91a0b4d6bb3d133facf93d0c28c188bdb5f9294d4e1e0e657', - 's390x-unknown-linux-gnu-0.2.35': - 'f52ffe9ceb3817df9a999194ab32fb8f997707a44e6597dcede0df238fc14c77', - 'x86_64-apple-darwin-0.2.35': - 'f8159e1977b00cf99e120858253ee675a66669b820e63af7f7e7e91cf6a3b9da', - 'x86_64-pc-windows-msvc-0.2.35': - '1bbb2a9a81f609a5f257ed066e25902bba995ca2ade3cbd4839703ffbd221071', - 'x86_64-unknown-linux-gnu-0.2.35': - 'f1a9bcbcc3e085fb5ee6a79f5778373fe27fa192d95fc47db20c596789dd1b97', - 'x86_64-unknown-linux-musl-0.2.35': - 'bec7f54d33aaff97098157b4893b9d4a93200c2902772cba13d60c266a54d087', - 'undefined-0.2.34': - '2c8167c6b14738d2d94cc864cbcc5a2f4b45d9136f8cbed348dba937a03927fc', - 'aarch64-apple-darwin-0.2.34': - '2eebf71aa924d8d977983394c212cb3ad99f6e241e77702822e8f407c8e231e0', - 'aarch64-unknown-linux-gnu-0.2.34': - '022b805b4d0360e4441fb94262e6a4cdcde9038aabe156242ba833e1ed00e0c3', - 'aarch64-unknown-linux-musl-0.2.34': - '227cd1dabb4ebb98e51c1b7735fa94dea96e14db7efb2d3d76b48c87a61a3d28', - 'arm-unknown-linux-musleabihf-0.2.34': - 'b71616ec27d83325f0b1f5a801181da201c2bc0c148c20006a40e48adaf2ad6f', - 'armv7-unknown-linux-gnueabihf-0.2.34': - '5e3ff5bbb4159b7a2f9768caab5bcb692756509566ef52fd5eca129b2e0949b6', - 'armv7-unknown-linux-musleabihf-0.2.34': - '7366c01e5996b7d5251423ae37bc3646e919b39a0d9f1fbde25e3215134a006f', - 'i686-pc-windows-msvc-0.2.34': - '34035c24e9c6dcf1164f10fee22e12fd03b329479233986909458df3259cf22f', - 'i686-unknown-linux-gnu-0.2.34': - '99c3873d4bc3816c383c0e2686de1066be1ca8ff546e29e418e435296df13ae0', - 'i686-unknown-linux-musl-0.2.34': - 'e659c3d71edba36fec7b9d742c5c4c3172a22bc409d713bb2d944a8a916d221c', - 'powerpc64-unknown-linux-gnu-0.2.34': - 'e5b4e6c20f5f79abbc4e9eb3881ea2b1edae1ad747980d7a2e062f3be09478df', - 'powerpc64le-unknown-linux-gnu-0.2.34': - '125035676a19c335f6c8af34ccf69d5df144183c13649e823cc0959886a11cae', - 'powerpc64le-unknown-linux-musl-0.2.34': - '728c7750d408d3300437fb79b74b126e5b49382b45b45fa22d49195ebd19b2cc', - 's390x-unknown-linux-gnu-0.2.34': - '0da036696c1decfa388ebaf98e779e8085fd2bb76a91128bf2445fe32c84c053', - 'x86_64-apple-darwin-0.2.34': - '62764007f4553f3677ef86e864097405d1b054e8a62e89f047e545816347491c', - 'x86_64-pc-windows-msvc-0.2.34': - 'd237ebacb6f4a651fbad3af702f29b8262b825e070c87e9020d5164936459393', - 'x86_64-unknown-linux-gnu-0.2.34': - 'cee114bb3c73a4be5066660d71eea1ac996378f567ba69fb7f29c688289245cd', - 'x86_64-unknown-linux-musl-0.2.34': - 'd1d49d2d3e1e2e2ba547b6cad8b1ad279cdbf622fe5b3fe3b6d470d7a06e3c92', - 'undefined-0.2.33': - '7dbdfb20366d96745ab9e48c0d8bd0a88926f0eef4675876fd45e4ecc3942cb2', - 'aarch64-apple-darwin-0.2.33': - 'a2602b99e71bc04d7eb11df00b87be068727bb47fc415f7fcbd24dae49c947a3', - 'aarch64-unknown-linux-gnu-0.2.33': - 'd4d24e221c5f1c9b0f2bb39b919c933259175bb9db37845a92d31bf241f28035', - 'aarch64-unknown-linux-musl-0.2.33': - '9d4ba96eee49b9483fd55ab1b376ed4b9f88f0f9d155c0e48e7280d3cc388d4e', - 'arm-unknown-linux-musleabihf-0.2.33': - '9940e8f34a702e6944ce953208c1abac7bc9fcbe8348dd76c3b5eb62c1125126', - 'armv7-unknown-linux-gnueabihf-0.2.33': - '08b9a84370acc5ea1631a8fff94bf7522305612da3c24c612fc1d4fb5ecd3839', - 'armv7-unknown-linux-musleabihf-0.2.33': - 'fa5a2cdd3714a2f4b8d6f64c86b988e6c7189d67411814a6c20905992201d16c', - 'i686-pc-windows-msvc-0.2.33': - '69c5d28aa75d0ce3fa5466736e2e156db48514cd7c9c44e6bc6515994944695d', - 'i686-unknown-linux-gnu-0.2.33': - '176caa5100e047b32e84c0c7ce1a31f74610b3f94266f5aa3f86d02417fcdfb6', - 'i686-unknown-linux-musl-0.2.33': - 'f0d93ceced329740403cde3c0e6f44325aee40b5619c3fc855e602f1829bf731', - 'powerpc64-unknown-linux-gnu-0.2.33': - '7aa9bf5a765801bdfda72b491d716cf08eea7d4821c41698217732a403b7eac2', - 'powerpc64le-unknown-linux-gnu-0.2.33': - '329aab924d8572d6aa19e2c2e225beb5bcca8bf04e62cc023941aaa06768fd6d', - 'powerpc64le-unknown-linux-musl-0.2.33': - '1c99451ea9d95732e78bf3c612bce889a1815cf333406857b170986739fda597', - 's390x-unknown-linux-gnu-0.2.33': - '095a4b15583e21d521e7954b5da62d5a08b69a08cdfb8847b3b5318e054c29ce', - 'x86_64-apple-darwin-0.2.33': - '0d4a2c20e1d0e06c83a60fac0d85bff46cd5312f146dd0f6bf35b63ae8f7a9fe', - 'x86_64-pc-windows-msvc-0.2.33': - 'c080525062c3d803e63ef493002f234056dd6efe6d0281d86d672510702823d3', - 'x86_64-unknown-linux-gnu-0.2.33': - 'e62a4123e6b77c9dd22f133212f7bac638077ebde73daa20fea3bef3ac51c84c', - 'x86_64-unknown-linux-musl-0.2.33': - '5f6842bd7a800a83c568b7a2cf18f4d9428e929e7ea91d55cc8d53e0a0c10c42', - 'undefined-0.2.32': - 'b7694bd29041e5315cbd7194253bb865a51369e19897d7b6b303f4d6255477db', - 'aarch64-apple-darwin-0.2.32': - '5084b7544da648d3467440f87a3f2929ca7c593a311a3b77271b638ca7664f3c', - 'aarch64-unknown-linux-gnu-0.2.32': - '97879b661787586ab3a747d9a65a0c295d9ed445001b5860f9ff2923ef07d824', - 'aarch64-unknown-linux-musl-0.2.32': - 'b3fff6bb0ae62154c5d17256b40f3d568a7bd7037e4839cb672545b16cd8622f', - 'arm-unknown-linux-musleabihf-0.2.32': - '9b3957aea729f36d823a59ae0dba033860f5904cb42215d55c7857d2d1fb3340', - 'armv7-unknown-linux-gnueabihf-0.2.32': - 'c3afbf787fa9b2cc8fcfaa74cf0fc723d224d56b514b0851dc0901747b03fbc4', - 'armv7-unknown-linux-musleabihf-0.2.32': - '33941dd54c28c6b56f105cd198e7ca7ea480676bda71b0c5e31b55a1493c4acb', - 'i686-pc-windows-msvc-0.2.32': - '7a449bc0fe9326d31ad809c8cfbe19ba2b67b28c9dc631bb6f1696334442d928', - 'i686-unknown-linux-gnu-0.2.32': - '1c91f7ad89b5697a33906be435fe6b9fad903916096ef61f034257252a8e4c86', - 'i686-unknown-linux-musl-0.2.32': - 'ba1b6775f17d1522a6ba69655bfe792ba0b4c9ed481edec08ee56bd74d0d5368', - 'powerpc64-unknown-linux-gnu-0.2.32': - 'e5e0d7b9ce6db091ccd8b642d11e65205650cb9b02514fdcc9ca35b699cce0f6', - 'powerpc64le-unknown-linux-gnu-0.2.32': - '60534e2567ee4b84922d4b6e39000a2709bfa7f2cb162c8c0a2274f3c4ccd2d1', - 'powerpc64le-unknown-linux-musl-0.2.32': - '732bb92926d033e22bf65c671ecca31f5a08f15b696fa944e7f57d70a4823f1f', - 's390x-unknown-linux-gnu-0.2.32': - '80420ca075a995f2171b68d6311a304da59461c39594db88d146079f2656b51e', - 'x86_64-apple-darwin-0.2.32': - 'e86f3bd4e7c30b0e4094d1eff520d762fdfac9e55da785db23b0139b675aeda9', - 'x86_64-pc-windows-msvc-0.2.32': - '1725fafdcc1390574b8682805ec31ebc9287085f562dc7ac6a64b186abaf1b0d', - 'x86_64-unknown-linux-gnu-0.2.32': - 'c676266d23c8dbe7832c44f37832c4e4ecf21781b7b0560bf27b270bedb14462', - 'x86_64-unknown-linux-musl-0.2.32': - 'e7deca89ca4e273c57adc45cd91e83377c74916feb9ece311cc93c8a8ab2c2e5', - 'undefined-0.2.31': - '81dcedc57262b565ba3f9f6a20d368a2be304bbe845121f849d1c75c6d4b53c9', - 'aarch64-apple-darwin-0.2.31': - '34938bcc045b35a646aa768d660755e838a23ab224ea3687dc577299da227fb3', - 'aarch64-unknown-linux-gnu-0.2.31': - 'f8d46c40c3f6ff762e5f0408a151f4e2ce97ff878625b0c9bd5ca13f14e576e8', - 'aarch64-unknown-linux-musl-0.2.31': - 'f2bdf2132993b1dfe50ee610e9df2a56cd89f0346d9d8a5cc3275b47c4c5e7a0', - 'arm-unknown-linux-musleabihf-0.2.31': - '8c4628e19a571ca7480b48c6ea739efeae2abfe08e07fb8f8e7b0f49887af223', - 'armv7-unknown-linux-gnueabihf-0.2.31': - '8e7879750c682fbd3619ced0770a43afa902865a839cc84fe361bf5a9f55154a', - 'armv7-unknown-linux-musleabihf-0.2.31': - '051c6f44f5f1607ea5f11d8a73cc91064a29c7293d6d050d2d7ae34c9d1ec680', - 'i686-pc-windows-msvc-0.2.31': - '382c7007bdfa6f02d436b552fee33d2d2beec5335410b9fe308067c094f95742', - 'i686-unknown-linux-gnu-0.2.31': - 'dcecee22480a73c9a31fcf76cd633ab4c4befb10180e61b1b298e78a85ea7f8a', - 'i686-unknown-linux-musl-0.2.31': - '990d1ac694f8d4bc31b79a0a64817d0781f0c59a42e57136cf9165dbb7aeab2f', - 'powerpc64-unknown-linux-gnu-0.2.31': - '3b556388d586f24e37c6e6478b97d4519a402b564b7a70f1ee5f4d86352547ee', - 'powerpc64le-unknown-linux-gnu-0.2.31': - 'c2219e0285a14b8d1dbbcbae750ef9b66a3567e862bec3fc2f55e465941f78fe', - 'powerpc64le-unknown-linux-musl-0.2.31': - '1756ca439bfcc86b40ed3d987170439212c54118a5741a0af662892817e46f93', - 's390x-unknown-linux-gnu-0.2.31': - '98a83bcfdeaff40772f7338538ea8a1b94ae60a94b20e552a80efd0ef4db7add', - 'x86_64-apple-darwin-0.2.31': - '8674abad2d95099de054c92a9310d95466932176548a57916fb5f1c5674db790', - 'x86_64-pc-windows-msvc-0.2.31': - 'e5779b76db0ae0334221a1dc9956b97dc10969735750777717551397a2b48e31', - 'x86_64-unknown-linux-gnu-0.2.31': - '351278978126eb9a74c4d735d3ee2191de5cd492fcc1615cc4c1107ad3e632ff', - 'x86_64-unknown-linux-musl-0.2.31': - '003e8ea52e2b8383009f5d2bc78becc27f6c97bd9f6837140162cc25247a465b', - 'undefined-0.2.30': - '1961bf9f481364dfd34c2fa1922152d0901f230de444b168f2d7e29c5b48de5d', - 'aarch64-apple-darwin-0.2.30': - '387f24ebf55f304352bc5fc4638ca251112ab682291a00290de3753a1b5092f7', - 'aarch64-unknown-linux-gnu-0.2.30': - '3cb0b65d21961dc36044562b9ba9462320e1106bb40f55e5ec03614c83a8fe0d', - 'aarch64-unknown-linux-musl-0.2.30': - '4b4e5fb2ca63fee674a32ed99e1c371d4dcfe194787c3bddc7bef37b4ae3fd24', - 'arm-unknown-linux-musleabihf-0.2.30': - 'aa68e7f58b1b6b31481f104893f44acdd57ab712f17429f3bb6ba03ac3fee370', - 'armv7-unknown-linux-gnueabihf-0.2.30': - '355672634f530981171c67c7d99bda999bfd66b4273d0d292ce3f5db25118213', - 'armv7-unknown-linux-musleabihf-0.2.30': - 'b3fa035bb0b493ab7bb65ff4d5c6c6740a8804815acfbd50c718ec03f6876e33', - 'i686-pc-windows-msvc-0.2.30': - '2ce7b022fab83161cf9b26a8413702ab328c2f01a530a2739712527acd769068', - 'i686-unknown-linux-gnu-0.2.30': - '6777ab4ee773df50790da19586afe41507dd9b4c69db39e09154cc013e066aa5', - 'i686-unknown-linux-musl-0.2.30': - '2145948b75e56106618e2b7a9cea916194cca7768c7e83a3e06095e4690f214d', - 'powerpc64-unknown-linux-gnu-0.2.30': - '7287d8034db3f1e071ea1098f7fc0cf8fd853c7731d37f59e374e9c771d92026', - 'powerpc64le-unknown-linux-gnu-0.2.30': - 'b7c8a829b869e11e64ca9fa1d748b5094e1841c6487f017b70117d826dfe6c46', - 'powerpc64le-unknown-linux-musl-0.2.30': - 'cb83556e2cb6f6d7731c436dd3ad1b048d323622d6d37ecbb3e320d7dd0c6d39', - 's390x-unknown-linux-gnu-0.2.30': - 'c8f623ad3da4bc425185fc026b52b80a86b796955dc65ccaf67e7a4778bb05c6', - 'x86_64-apple-darwin-0.2.30': - '4048630dcfca6946dd8b7f2e8ff38dbc54a9e47ae50f9e04a372081c413e0b66', - 'x86_64-pc-windows-msvc-0.2.30': - '8cae7297892b5cd947fc8dc9ef045dc82c8a3c948413cbc68aa46285b888031c', - 'x86_64-unknown-linux-gnu-0.2.30': - '572a09703b40680191f4da33ffad2ae57cee93f0007f1eb25b84d241b0b418f2', - 'x86_64-unknown-linux-musl-0.2.30': - '430aa21ca5c6eea5731dd5f3f8c0a364160a6e2d7153dcc0b3941ecc06947000', - 'undefined-0.2.29': - '4cc0762718440d622e351871e568dbbd1b4325a0a362bea4158adc81bf81826b', - 'aarch64-apple-darwin-0.2.29': - '34e214671c640b72e7805ae4802ad774f9e7636d59361b6434f38950af0fc6c3', - 'aarch64-unknown-linux-gnu-0.2.29': - 'ada417de9049b4e16cc4b31de1096e19835bd971569f6462d3c6d24ce75006b9', - 'aarch64-unknown-linux-musl-0.2.29': - '77607a17959e650fa085a28f74b120db065833957a8306ee458a06e331433a21', - 'arm-unknown-linux-musleabihf-0.2.29': - 'fc91ac746a94ae16bfb1fbb0fff159d9df6e40b7ce67f91dc7ba7984d417912f', - 'armv7-unknown-linux-gnueabihf-0.2.29': - '9ddfcbac00d7594e3c99ea4a97fe3a63895266a5993ae458e70e05e6834e3247', - 'armv7-unknown-linux-musleabihf-0.2.29': - '62dc5eb5430aca18e02b0f8b156716bdcda15ff4a7605f4129500d6f18d157d7', - 'i686-pc-windows-msvc-0.2.29': - '0ff66ebe55fca07d6637b39ff9b9cf8169c726d5c3d3776e232b8cee2b04b22a', - 'i686-unknown-linux-gnu-0.2.29': - '719d62f7e8e48fb746454c817f8ba094958f673bcef3bfbf0a3fe21b9d9fa296', - 'i686-unknown-linux-musl-0.2.29': - 'c204569e573555810c54cd7fdb96cac3ecc1014d69fb3017b44270413313a212', - 'powerpc64-unknown-linux-gnu-0.2.29': - 'c4e63df2e3843c1fa9919df76d00996ec2f8d733b81f13673c7f09ddc5e8fd85', - 'powerpc64le-unknown-linux-gnu-0.2.29': - 'b18ed91775d1a715f975c91a3b9a16f53b7c5e25ee6d9101493f1091c425edbc', - 'powerpc64le-unknown-linux-musl-0.2.29': - '7a35b550385b8131561de362d769da1477b3c22a9eb3c9a42f4e758971d56b01', - 's390x-unknown-linux-gnu-0.2.29': - '47c3b46b281c46a1379a9ec3e11748e44c33b613582f294f3fb5794270c49d90', - 'x86_64-apple-darwin-0.2.29': - '8536255454ef7c9875d64baf7616cfdad6ce263270860f34b6ec38f02faffa0d', - 'x86_64-pc-windows-msvc-0.2.29': - '45456b9383097670a5f05ecb1288f9d6b7f7d84889ae7b6022130feaae834334', - 'x86_64-unknown-linux-gnu-0.2.29': - '1199ddcaba212d1909d934b7edfe24ee39f6ac60cfce1a558d74d082f9763937', - 'x86_64-unknown-linux-musl-0.2.29': - 'a7529403581edef6e1e34d1b7c321540e526105aedaea1672cb0f37cc1b5da0c', - 'undefined-0.2.28': - '4d42d64676b09efb34a01c867a6fe2acf9cfe9be8d8886b08177f837bd615234', - 'aarch64-apple-darwin-0.2.28': - 'b84fc81eecdeda15f9cedc1634685104463798903ad2241f46994bec17bdc5be', - 'aarch64-unknown-linux-gnu-0.2.28': - '103fa6a5e68562376351d174bedb5013dcc52b0a7a27258336b87a7186aa10be', - 'aarch64-unknown-linux-musl-0.2.28': - 'bf23111a512596da533ad21ef94ea1758957f0f12ca9a306b298617affa4db8d', - 'arm-unknown-linux-musleabihf-0.2.28': - '0b0113d0326fae2e99c9ac6b8a66607f74aadae7e9868149439472fe6c3fabfc', - 'armv7-unknown-linux-gnueabihf-0.2.28': - '6e50f4f5690f0135b30d0f6e4cbbceec1909bdef10b1996abb42042b6b28c64b', - 'armv7-unknown-linux-musleabihf-0.2.28': - 'ec9bcd417ccd5608d8f6f053b84497204704c6439c04e80ccc9cd4ec379a3fc3', - 'i686-pc-windows-msvc-0.2.28': - '75de1d50a1f5d19de6794375762ab8afefb0b0c4704d6c599e5af6cee84ad0e3', - 'i686-unknown-linux-gnu-0.2.28': - 'b01214f008a456aef5acd9043fe13ffadd8bc7975912f288a4afc7f26ae1136f', - 'i686-unknown-linux-musl-0.2.28': - 'ded399ffdfda93b56c78a29eb3889f7e8c0700348af73207972940e66fb45c43', - 'powerpc64-unknown-linux-gnu-0.2.28': - '5e1cda75b920f9478f4711a3420ddad07d2d25b5f7eae93430968a7af57568f4', - 'powerpc64le-unknown-linux-gnu-0.2.28': - '0b246ecc617ac22c75170bf9db20ba03fee0df46f7adf6b42a3f949f5316e380', - 'powerpc64le-unknown-linux-musl-0.2.28': - '8928c0ed5e2a5ca68989d823ac813592c25de7c2c2e77c999cb79f50b6c9425f', - 's390x-unknown-linux-gnu-0.2.28': - 'b865fec71668ab77aee6f6ffc823a3fc4f92ac04d0746755e1fb624fd3fd7f75', - 'x86_64-apple-darwin-0.2.28': - '52da204e0117cb65471ff2e17b449f69adb6091720e0290721aa2a9d7947f6d6', - 'x86_64-pc-windows-msvc-0.2.28': - '7635ff298ddfde400e00054ba31d88a139dbfec234578f10376984f3e0aa36e2', - 'x86_64-unknown-linux-gnu-0.2.28': - '9c6cbe9f7d7b2abcb45e028d82a5986b951af76a587c93c99922ba0e71c7f21c', - 'x86_64-unknown-linux-musl-0.2.28': - 'ba2656952c1dd29e400a9d21a7b923b26f1cc8a4b29468e7c99fa4613034d837', - 'undefined-0.2.27': - '2dc0595cca3a3167832c87ddb340138fa77e682472791ff9c4bf4ddf39a7364e', - 'aarch64-apple-darwin-0.2.27': - 'd071d3063933e2e98322619bd4318594e84b7f6ce4f6c5c13a2ef424b0704bb7', - 'aarch64-unknown-linux-gnu-0.2.27': - 'c390e4791f3bcb44041d326f6a7aabb2498a610d2b1d28964c3fa8de97fa7dc3', - 'aarch64-unknown-linux-musl-0.2.27': - 'f7ad07f32e01dfdbd6b217c7f6acd7822eb6600d9992d204b93bfa0749bc6b29', - 'arm-unknown-linux-musleabihf-0.2.27': - '41df51f4a9de2258973c6f0b80d6122475f18909d3905135d9b0defcb0222737', - 'armv7-unknown-linux-gnueabihf-0.2.27': - '0316c82068bd34faee8a26bff0b85c25951a10fc54bc2ec5bfae64dc00e4a58d', - 'armv7-unknown-linux-musleabihf-0.2.27': - '8553382a71fbd84e351f732ece7513e1b36a294dfb2949d956a45e389a397b6b', - 'i686-pc-windows-msvc-0.2.27': - '6183e4fecfe5404dc69d9cc23c248441ba25a21541c8046c8a27b09a63f224b7', - 'i686-unknown-linux-gnu-0.2.27': - '4def707256649e6ad40ad33c8c00464d163728a969e54baf94f9d8463b4b89d8', - 'i686-unknown-linux-musl-0.2.27': - '383bdad28c1a571856aee566f37f888c65fa36385d9e0fff50950dd4280d09c3', - 'powerpc64-unknown-linux-gnu-0.2.27': - 'bc7161175d823aa92d27402e137d1753da1a37fb6d2f7fe534e829bf7f9317cf', - 'powerpc64le-unknown-linux-gnu-0.2.27': - 'bd8eb63b1e3de60279c8daa045f3f738f4f533787302fa0199275b8624831f8f', - 'powerpc64le-unknown-linux-musl-0.2.27': - '9eff96f3761db33e7043cabdc38b5e49011929dc777ee44f1ea3c4747ee07dd9', - 's390x-unknown-linux-gnu-0.2.27': - '4a8e46f67995c86e955416907b4b37558f9df6786851e943ae896f22fb6a3bbb', - 'x86_64-apple-darwin-0.2.27': - '56be1ded925e7c1852f8853f7637942786ae379c0ecdbc88cf101f17f8413129', - 'x86_64-pc-windows-msvc-0.2.27': - '1ea0b0623c362c47c6d00801e09ddf948cc27cc18200e5390469e279dfb85d29', - 'x86_64-unknown-linux-gnu-0.2.27': - '224cdff5d82ff7053d1a9bf61e5ae89961d536eb2da8a4a13b93a49a0ab434bf', - 'x86_64-unknown-linux-musl-0.2.27': - '2fa8e18d3804863c1355ef8b0688530c1a57b1981be69476641a8dc87c812d60', - 'undefined-0.2.26': - '1ff81cb3c0618cfcde78b67ac1b1267a09ebef69826e20599aa92ed6e57b6321', - 'aarch64-apple-darwin-0.2.26': - 'e99954e3853a367497f66ed5ec1460cbe0c527e5664732eb2407ffc375cb3207', - 'aarch64-unknown-linux-gnu-0.2.26': - '93595aa21aecddfafb3573db9b83761a33d12f9c20ce38bd0840262fdbcd94f8', - 'aarch64-unknown-linux-musl-0.2.26': - '824c3a1e4eba63370232998dfb34964afcebd00fc79b4c7b4e9a1c5d749cf08f', - 'arm-unknown-linux-musleabihf-0.2.26': - '100c1bbb2b5f09b7c2ca0e9ce9b0c36e8870a2f8c536b24a8098b4bb5375edb7', - 'armv7-unknown-linux-gnueabihf-0.2.26': - 'd42cd9db133bb16faa844f46baba52184a3cba5ad6f428bdfb0f3a5d85d01951', - 'armv7-unknown-linux-musleabihf-0.2.26': - '370e1a42247359f275dd2e68b6e7279b1718f7ce8148492a291c7851effd7291', - 'i686-pc-windows-msvc-0.2.26': - 'ce1118475dfd9636c873b5d135f2f238f522f069955653805def0196ba2c227d', - 'i686-unknown-linux-gnu-0.2.26': - '81408c83605c95ad7f5431100293970c040a2f78651f8de6269784999c283932', - 'i686-unknown-linux-musl-0.2.26': - 'c6b6dabebbf86c533f75150f67be276d0a934c13db1922597cacc086cd64e6c2', - 'powerpc64-unknown-linux-gnu-0.2.26': - '7c094b2a084288d586bad962330648c19c02faf421590c1542c4c961db5b28f6', - 'powerpc64le-unknown-linux-gnu-0.2.26': - 'ee28b5db562c13f9262799cd407373734ef4aac229f4436cf4478117ab70d2dc', - 'powerpc64le-unknown-linux-musl-0.2.26': - '577babbcfaf8ca472286b492164ac49e0209a18a014b93b340be73c563bbb915', - 's390x-unknown-linux-gnu-0.2.26': - 'f08d8559b2f73c3b112edd8414bcba3a94d0a1bc986099a2d24e4a24ba68ceee', - 'x86_64-apple-darwin-0.2.26': - 'f7dfea29cd87f8e8ad893fc50fbdd06270de392c79fa42f6e9ef8ebb61ce6c5d', - 'x86_64-pc-windows-msvc-0.2.26': - '7bd19cc12f927dcd29e61ea1ad428d4c7315a01561d05ce32d6f9c09ee5ce972', - 'x86_64-unknown-linux-gnu-0.2.26': - 'f70997db1acf979b626e23236c289bfbf418e17ffd18a7956d8cf44e6f3f5522', - 'x86_64-unknown-linux-musl-0.2.26': - 'aa61951a7101f9de68265425a64ea2320d2ac1857001293274a338becef63180', - 'undefined-0.2.25': - '71916afae3d93c2147a08324c8455cb4d49a168ceec5123fea7bc4fac5977703', - 'aarch64-apple-darwin-0.2.25': - '79887e314f1614352852b45aad55bb533b45add7ba239faa50cc0122665a941d', - 'aarch64-unknown-linux-gnu-0.2.25': - '2d45144527eb5aaa1e073f1046d510b8854f24553bbbf883d0971ac10721a1ce', - 'aarch64-unknown-linux-musl-0.2.25': - '34fe01cb0ed953aab2584231875b7f112d306955a92d674edcae4632c475bd2f', - 'arm-unknown-linux-musleabihf-0.2.25': - '368bd210f1ac181879d8394480672243e10710d41fbaaff46d5195a5f13f7ed4', - 'armv7-unknown-linux-gnueabihf-0.2.25': - 'a107c831168cd40131be62193cc9ee8516868542e14d08c649d7767bf74077f8', - 'armv7-unknown-linux-musleabihf-0.2.25': - 'b3e910c7c857dee9436ecce2a5c706a5f70c8e443e10c007a994741d5f0ead54', - 'i686-pc-windows-msvc-0.2.25': - '4d787b0549b4ded295ada22a5fb6764588bedbcd83e73a1185292c756922dfe8', - 'i686-unknown-linux-gnu-0.2.25': - '8f16d242447721557bdd8b5a4eb97c06d031e02f5f3acaa6c3a0dbc210fd0bb6', - 'i686-unknown-linux-musl-0.2.25': - '9c0ab30932a97e8ed1b64a6ddcff313b32eba2a51a46b5aff595df1af5b6b91c', - 'powerpc64-unknown-linux-gnu-0.2.25': - 'f36f267441929b6dc21459a8244b70477877e03ad0a72e5cadce4518f81c141e', - 'powerpc64le-unknown-linux-gnu-0.2.25': - '2ad2221281afd1f68e8746a0ca630cf2b31d03d017b6bb1dd624975b35a1f70c', - 'powerpc64le-unknown-linux-musl-0.2.25': - '57ed0874e885ed1318f10d65971ee6fa91365cb958a5f5f0005975e4754782f5', - 's390x-unknown-linux-gnu-0.2.25': - '39d33889705863efcbfc08ef840ce7e6b0a823dc9bd5b80f5001f732c0f1d83c', - 'x86_64-apple-darwin-0.2.25': - 'ed21c9ee096bb7306eaf3ff39307461452ace0221a132d45f6919ddd5972949d', - 'x86_64-pc-windows-msvc-0.2.25': - '7e55a0ae316797723acc2974a658a5aaf0b94ec9ecc90cf62b94da64da223a8f', - 'x86_64-unknown-linux-gnu-0.2.25': - '7f3396784a504ffb3d2190312b4a7c5330f08906ef22bcf544fe20ecde30081c', - 'x86_64-unknown-linux-musl-0.2.25': - 'c92951cc355ba7de4897d538e8d420c7b32f810945dcd664f55d50a936331629', - 'undefined-0.2.24': - '5d5a694112d8463c0003cbb295cd29697500c4a0a60920466b0a5c50e43bba2d', - 'aarch64-apple-darwin-0.2.24': - '49d55dd8a8f2adfb83d1feaee5bf40c20169b411e3809e3455ff0d96bae4f388', - 'aarch64-unknown-linux-gnu-0.2.24': - '0232b3d2ad506df099ec488b48a7801e7a51118bd6b5c48b081d5d172ee63ea9', - 'aarch64-unknown-linux-musl-0.2.24': - '56bd0db80905d0f5eeba51aa33872727aa40e3dda65c86a584c095ac05609509', - 'arm-unknown-linux-musleabihf-0.2.24': - '63d0a438b8ae0e080a5321b668d72a0b40ed9e9f09240592020dc55a39edf762', - 'armv7-unknown-linux-gnueabihf-0.2.24': - 'c2650b42b0211cca495cbb8ccadd200256876cd02f70ce5ccb03e4eb6782c16d', - 'armv7-unknown-linux-musleabihf-0.2.24': - '51ad3c67b2730040858d59e71b4d3cb8f32e7ef6e1c2b03023cc8518c92c1794', - 'i686-pc-windows-msvc-0.2.24': - '3995fbf5a09bcdfc54824ccd0969a975844d586a5fe5dc689f0b8d36eec6e5e6', - 'i686-unknown-linux-gnu-0.2.24': - 'dfb662a3dbb7bd1d5da4dbb20805484d8ba7e9d8cc1f6884e737ffdb3106cba2', - 'i686-unknown-linux-musl-0.2.24': - 'ebb6d14796fb172b03f2ed561d68c6a0f7468173dd9c2f34823dc868bed6ee90', - 'powerpc64-unknown-linux-gnu-0.2.24': - '3d7abf03072c74c6d841979d444add3d44eea3ef2955ea5bf2968549c9ad8b2d', - 'powerpc64le-unknown-linux-gnu-0.2.24': - '40e3fa0cdb1da02314c998ba0dde02cbc0ef60dfc75eddbe7a51e5bf83e0db28', - 'powerpc64le-unknown-linux-musl-0.2.24': - 'c89746e4807e8a960f681faefc9fcbbc9cf6c261153791f893f90b3ce8b2dc39', - 's390x-unknown-linux-gnu-0.2.24': - 'ae088d02d3435bf7e7dd15f72ea8b92888a92762cc7d6830a1a8c9f9cb8c1635', - 'x86_64-apple-darwin-0.2.24': - 'dbb918c9d55b99cfe1c995cc330b6b1dac29379e320c35a84e7bc6bc0e0a55f4', - 'x86_64-pc-windows-msvc-0.2.24': - 'a044e2cbdfaaea36d15a7c8091d12e2ae81784329116fdf967a573b792fc1fd5', - 'x86_64-unknown-linux-gnu-0.2.24': - '24a0c6758a4f533c37193592fd0a9a37a61fb583a4b6abd0bb81b83127d86336', - 'x86_64-unknown-linux-musl-0.2.24': - 'cb91cb5111e9eb4f1be7c4b8e467380e65b41c5f19ad956f613b290deaa838c9', - 'undefined-0.2.23': - 'd5fe4b3aa545d6bc43cb5fb2a27d3f24f53762472d345b06d0d03a2e27614f86', - 'aarch64-apple-darwin-0.2.23': - '1d41beb151ace9621a0e729d661cfb04d6375bffdaaf0e366d1653576ce3a687', - 'aarch64-unknown-linux-gnu-0.2.23': - 'c35042255239b75d29b9fd4b0845894b91284ed3ff90c2595d0518b4c8902329', - 'aarch64-unknown-linux-musl-0.2.23': - '60a122ac03b4187ddf716995f5f87838ff0edf9bfac372202c5c05269a32537d', - 'arm-unknown-linux-musleabihf-0.2.23': - '643666522fb27c45b8cbb12533b57519ede6c1c1a61c1597e9c632888080d55c', - 'armv7-unknown-linux-gnueabihf-0.2.23': - '2e284e7718176306b0d042a65143ff5b2c6453f33cadc1ebb19aedbb4f70ec95', - 'armv7-unknown-linux-musleabihf-0.2.23': - '27408e6dcdca9437d7813f7122ef08b2de4e21c90c0c1784c32998dcb9f5ed7c', - 'i686-pc-windows-msvc-0.2.23': - '8f7e83f5c09320d1ed32dee5773c4c122797c194ce27922cb03889c54d927eac', - 'i686-unknown-linux-gnu-0.2.23': - '1cbd6066b8e39445f36cc621b982a053a917708bd5f13d1624484677449bd854', - 'i686-unknown-linux-musl-0.2.23': - 'a3e68f5c51efdbc63edfda7f3f830d381964458d46a42b993f8847d4369e0818', - 'powerpc64-unknown-linux-gnu-0.2.23': - '2644acd3c6fb902b14325a2a60b324bec6617ce90ff73fe4df15d2ca26ca5572', - 'powerpc64le-unknown-linux-gnu-0.2.23': - 'ca16c9456d297e623164e3089d76259c6d70ac40c037dd2068accc3bb1b09d5e', - 'powerpc64le-unknown-linux-musl-0.2.23': - 'ee6596b3241df3884ce77780833051ce4a3700a83e82e1704cb60981db8f8801', - 's390x-unknown-linux-gnu-0.2.23': - '55f8c2aa089f382645fce9eed3ee002f2cd48de4696568e7fd63105a02da568c', - 'x86_64-apple-darwin-0.2.23': - '960d2ae6ec31bcf5da3f66083dedc527712115b97ee43eae903d74a43874fa72', - 'x86_64-pc-windows-msvc-0.2.23': - '66f80537301c686a801b91468a43dbeb0881bd6d51857078c24f29e5dca8ecf1', - 'x86_64-unknown-linux-gnu-0.2.23': - '4384db514959beb4de1dcdf7f1f2d5faf664f7180820b0e7a521ef2147e33d1d', - 'x86_64-unknown-linux-musl-0.2.23': - 'c7b80246dad84eadf288c26128f6504fa27529f21091ccf7d5f9450fbc229dd4', - 'undefined-0.2.22': - 'd390a2990caffab099f129a10b0393dab81a7043dbd93d514e05034368e052d5', - 'aarch64-apple-darwin-0.2.22': - 'ed44fcb929f8cef958ed9e6de350d542f7392a43331d3605c4fcbf418e204c5c', - 'aarch64-unknown-linux-gnu-0.2.22': - '2fa9b4647ac17dcc050abb8ed1547b8c87e3d914bde3e045b51ddc16946a4e57', - 'aarch64-unknown-linux-musl-0.2.22': - '1855c439577523fd2a3e1afb19712fd80eb59d63c92fa29d24afb7f68c8ba88c', - 'arm-unknown-linux-musleabihf-0.2.22': - 'bba9175deeb797714c629543276a98fb834c58d85d8edce47d28c90e2e600e07', - 'armv7-unknown-linux-gnueabihf-0.2.22': - 'dcb1fcea336bf36bc5880c2ea29e1f32b10296f3b14ff6f3f2ffd8667a2146f7', - 'armv7-unknown-linux-musleabihf-0.2.22': - 'de1a29702d5fc14be20b21e0ba7b513d84f4debe8c5ff49a66ae333060fdd767', - 'i686-pc-windows-msvc-0.2.22': - 'aa5b36bdc88a16c92d5ca93c4a9325bb82eb875507d363ec28cb6e5ee694e8ed', - 'i686-unknown-linux-gnu-0.2.22': - '00002ada635ce3f17a97a4eca7361eb6ac065db342540dc31e743920a723b92f', - 'i686-unknown-linux-musl-0.2.22': - 'c98fd1af293fb19bdeac03320f83ff328b4575478ca30845f7172e9491c5bb05', - 'powerpc64-unknown-linux-gnu-0.2.22': - '98dc7f3d818368190389aa008b5873df84a470c40c94f5f339655c50af0cdb89', - 'powerpc64le-unknown-linux-gnu-0.2.22': - 'cb9096be1041b49b09b3f407059bab3a4b68219fc407f05dd441c58b40299c0a', - 'powerpc64le-unknown-linux-musl-0.2.22': - '4c0d300931775be6069dd5fa095077a639e780b5c890885035df9fb3f4dcbbd7', - 's390x-unknown-linux-gnu-0.2.22': - 'acdc4f3e01327209883e0578a077a69e46be0a0ce95f53c742d64ac753f93610', - 'x86_64-apple-darwin-0.2.22': - 'cb03b461250b688e39b19feaa0853d842e5d4193e262c9d4db2d15faafc54dcc', - 'x86_64-pc-windows-msvc-0.2.22': - '6ab3ed27e38e3a2c4a3a4880b87b8d607fa14589860aebbb1a34064d792d54ad', - 'x86_64-unknown-linux-gnu-0.2.22': - '65cd2e2c3660779f8a1fb02eac488b540d1ae30f3a80a381f8a7859d0b76bf06', - 'x86_64-unknown-linux-musl-0.2.22': - '8e165482df8590a620bea0411023c4c345f14301b733a9b6f6ca93e730947aba', - 'undefined-0.2.21': - '29a224acdb53a5478e12260672547e3d84a14c972c64f3e154553ccd813f8400', - 'aarch64-apple-darwin-0.2.21': - '5b3925fc797bc5e168b5883a5ba2ff6c5751a1c900748c132f01d1ee5c87d24e', - 'aarch64-unknown-linux-gnu-0.2.21': - '77ff74dcda1e08d757632eee8c6aa3928d1e52dddb460056a0c7224c888d2956', - 'aarch64-unknown-linux-musl-0.2.21': - '3ae6f0de1698b257052d5b1a05809a0f17db64fb6b1e80ffc64b659840105002', - 'arm-unknown-linux-musleabihf-0.2.21': - 'af4467849e6815b89067b9133dead64d0c912b9d2645a80b0dad575c01ff4912', - 'armv7-unknown-linux-gnueabihf-0.2.21': - 'ec15bee0208d23966a5ae6f2dfd07e38ca8656960a5caf26970d3a91f055e34b', - 'armv7-unknown-linux-musleabihf-0.2.21': - '5671278eb619ee82615ab8e7be2251763d57d5b210d317d92c40d6bff0c6c418', - 'i686-pc-windows-msvc-0.2.21': - '7740b290f6efdfc73d24977e4dc86be144865ca92ec106cb8e0b206f7b77b80f', - 'i686-unknown-linux-gnu-0.2.21': - 'ec323eb0b67103da905e24de5c6ee4036da22068c439f098b93d4c206e6764b8', - 'i686-unknown-linux-musl-0.2.21': - '118a1a3c0484a392ccf9388cd296bdbaa1e8b5479772efd69056ac99119c0aa5', - 'powerpc64-unknown-linux-gnu-0.2.21': - '0fbf9a1b148b86511a0c167f3dc7e5fd228c784af0d3fe8d8c99e024ed2fa1d5', - 'powerpc64le-unknown-linux-gnu-0.2.21': - 'ff49e7dbd25e98932b5207100916c1d6a6c624a620d37aabbc307bc97be53674', - 'powerpc64le-unknown-linux-musl-0.2.21': - '29e32e5b7bb5facb8eddec8e9146f3b20074fa73dfd3555c985b79c10d3c55fd', - 's390x-unknown-linux-gnu-0.2.21': - '897414d24d13a202a6f9a437408da64cb26e10bbbb5820571e0de2b4d540fa99', - 'x86_64-apple-darwin-0.2.21': - '92eec02ae5ff8ef4b4070cf6ef787a2ee3bfc6ca910b61669a8615e2149d6595', - 'x86_64-pc-windows-msvc-0.2.21': - 'bf4946c5a8751cc63def72aaa53a9a0c1ca015876b9ec144cc389ef4901dbc4a', - 'x86_64-unknown-linux-gnu-0.2.21': - 'bb6ff8fa0ac1d86a32b1ef615ec52acb5c8230f803146ad4ceeaba8aaa26a787', - 'x86_64-unknown-linux-musl-0.2.21': - '90b0903364aa45e588ac2b269d70e871180f81df0f7c603d6b17742fccc660b3', - 'undefined-0.2.20': - 'f248835e7b801bfd0dd9e70716257604fa6760cdf92573ae6419dd35ce7a9058', - 'aarch64-apple-darwin-0.2.20': - '519bd42c022a41187984234a040c3f00a3eb4bcb189f101c0fa48fe70b953357', - 'aarch64-unknown-linux-gnu-0.2.20': - 'b97b67c7f65025729da8194f8b0e21ffbd91a1210fbbc89279dc46d5342a3e4d', - 'aarch64-unknown-linux-musl-0.2.20': - 'bef8bdd253acc9a82269e5574ab4843b0d70a1935235805bb470eae3ceaa2fee', - 'arm-unknown-linux-musleabihf-0.2.20': - '2caeadb57638fae11cab25094975201d3f8573fe6f752e628b89d61447f7abe4', - 'armv7-unknown-linux-gnueabihf-0.2.20': - 'faa32b09015770fa5a72557a04236a7be61f06bbef77a6707c658be791adf039', - 'armv7-unknown-linux-musleabihf-0.2.20': - 'ba1be06d8aec4b5247b5d09032f37fd4aa8f54acd07b05db18351d61a93e0cf5', - 'i686-pc-windows-msvc-0.2.20': - 'c4430939e934ca8ba2b079138728a22600d32572fe315ac1811f8a40b062534d', - 'i686-unknown-linux-gnu-0.2.20': - '6c8c4e58391c508eed5f8506257d421f3fe13464fc8672b5995bf6243d46fad5', - 'i686-unknown-linux-musl-0.2.20': - '4a4f8a73f29362e40e9de94749f988e691665102ca2bd6501f39248735c40647', - 'powerpc64-unknown-linux-gnu-0.2.20': - 'aa557c951623d746ea30b4ae107fc37ce7328196929d5cf38beecf2c1c60555b', - 'powerpc64le-unknown-linux-gnu-0.2.20': - '1ef60183bf6de0c1da96fa027a8b3847da289222aa4bd5ac81255aa614e36fc7', - 'powerpc64le-unknown-linux-musl-0.2.20': - '56c880df3b97d2a1c0ac6812ba174d4b7e1362fd256ce8b29f029adabfdaf28c', - 's390x-unknown-linux-gnu-0.2.20': - '455863a0850d211aad8c94b61778b2c30cc7d5639ae0d5607549f1d56372f706', - 'x86_64-apple-darwin-0.2.20': - '41018b406133a2ee5e51d8f35c990999c2bb96ce457864ac9883a0f9dcb49c58', - 'x86_64-pc-windows-msvc-0.2.20': - '74d2f2c945da68a2aa8f0f277229f3b172c7aec1072cd990d866c25ecbe21410', - 'x86_64-unknown-linux-gnu-0.2.20': - 'bafad50e1b8b8b89083df115cdbad6e991747fd6ecb52ca407d6b5533ddb150f', - 'x86_64-unknown-linux-musl-0.2.20': - '1c27fd144912433d7f12b58b00eebb80a7ad9a1864b22b1ba41b07b5998a743b', - 'undefined-0.2.19': - '9186f4961698b35b1812eef5dcd6973accb3eaa980a571c964f6f91ca71da5ff', - 'aarch64-apple-darwin-0.2.19': - '539f2cb812f0596b3f56d41a92662f6e102094587ff07f0793bd015d21cda54b', - 'aarch64-unknown-linux-gnu-0.2.19': - '7ba7454ceca1b789e74637b5cc8d1353d6a87ae3985dedd16869c036e3b4d02e', - 'aarch64-unknown-linux-musl-0.2.19': - 'a9932edc68680dc388bf13cb21132f4d0aa13bf9c31c1c1f4febf1415ad51923', - 'arm-unknown-linux-musleabihf-0.2.19': - '71dedaf8f40e3939b8ad493093584d03046c607cb7e7c155de7eb0c8e0da2830', - 'armv7-unknown-linux-gnueabihf-0.2.19': - '17b44738383b1a5fe7ad592be61c543048022c09c649759c589a74a00fa3afb5', - 'armv7-unknown-linux-musleabihf-0.2.19': - '6c287d699c95cffbb30520d27d7b80ce1971b336bd387f72391340acac434c86', - 'i686-pc-windows-msvc-0.2.19': - '68977cc3fde46c61a80ea451651f3b6789ee2a8cb67a4e5fbfc7db93022d9e1a', - 'i686-unknown-linux-gnu-0.2.19': - '5ed1da9e25968be4581ff301a9034e8e82f2206686f504734015c348b94333eb', - 'i686-unknown-linux-musl-0.2.19': - '236c3fde87ee06c2b49372e184f2fca84f82ea3daa36e85ac884f7459b18ebf7', - 'powerpc64-unknown-linux-gnu-0.2.19': - '9ecdf74c9846c271e78e300f1db8cf3762ace6d9ba1f2e9d6e695cc64fb2e746', - 'powerpc64le-unknown-linux-gnu-0.2.19': - 'fc8bedb7f7b35905fd5e1180466593e2ad35788994f7d61c6605ff985bb61aff', - 'powerpc64le-unknown-linux-musl-0.2.19': - 'a5d1f2b9686ed2466e9e588d8ada686130318015693ef1a7064651347063bd05', - 's390x-unknown-linux-gnu-0.2.19': - '6b68ee8a45062e9a6d3be5de5c0fddf49f8669c2b2b897432f0a55e99fed57ea', - 'x86_64-apple-darwin-0.2.19': - '1b8bd98a1ffb5823b499d914d8fc430b6bb96b3f97bedf06b67c60f084e366ca', - 'x86_64-pc-windows-msvc-0.2.19': - 'b704c9c6e5e18e1c822e44f118902468df76245eca8831c5f8d4dd1223c0fbda', - 'x86_64-unknown-linux-gnu-0.2.19': - '71132ec5c59ec865d73877f2f7f4ff75cd2f56a93d967c1a91ef797bdc87ff93', - 'x86_64-unknown-linux-musl-0.2.19': - '6e8a64434d3baf03fd64f58016a9a37b08a8561db6979b807de8feb55d94502d', - 'undefined-0.2.18': - '5919f79b42997129e5a456bb5910086d0043dda20e505d12f7f57f0a2669ae74', - 'aarch64-apple-darwin-0.2.18': - '979ddc0aa7b068632bf4c517bbb6d97798b95c54dfeaca9ba653df91989ed958', - 'aarch64-unknown-linux-gnu-0.2.18': - '5cc1535801398ad74e5fc8a5cf5a619d3e806b8b7de6b973b33c02b9b2584ffe', - 'aarch64-unknown-linux-musl-0.2.18': - '473ae75c6e9ed1f63f0c0c556ac6ca4718457903c3652adf07c8d46655133e31', - 'arm-unknown-linux-musleabihf-0.2.18': - '7fb75cfe47c50f9306eea91f1d713a0f76dacefc92b6a35271b7af90e024bac5', - 'armv7-unknown-linux-gnueabihf-0.2.18': - 'c0ff7d440ccd43666d813da4dce5e90a1c6b90e3dfc951ed868a38c488ebff07', - 'armv7-unknown-linux-musleabihf-0.2.18': - '1c99194b715b74f0bbab9ba2f350bcbdc4e101f056d81ce35f62736b951b212f', - 'i686-pc-windows-msvc-0.2.18': - '554b9b65eee4f30b70ff2d3b1c2cee07600eef176c235d8639aacdca799610c4', - 'i686-unknown-linux-gnu-0.2.18': - 'efd8fbe10f88622479611cac0ad18d7e5614a9335d655e64be8e30db6ea749cc', - 'i686-unknown-linux-musl-0.2.18': - '9d991b27482edc0891c8aa2750e95aa4f8007f3af9746d90f0176462a2cb3a09', - 'powerpc64-unknown-linux-gnu-0.2.18': - '0dde2eea6496139c10bad1e7e1d49d210bc47f294dde158db65f78eabcc363a1', - 'powerpc64le-unknown-linux-gnu-0.2.18': - '4515b5741a0cd2596526f4504429bbd8e6122c384ffd9211023771aa042c6815', - 'powerpc64le-unknown-linux-musl-0.2.18': - '48ce3450450a0314a6b7996f53145e273c3a2013c1771b56449c275d9260575b', - 's390x-unknown-linux-gnu-0.2.18': - '4c3826eabcb81aeb187a3de95fa3e3f3c784fb71539be05ea56a963b3d97fe4d', - 'x86_64-apple-darwin-0.2.18': - '140158512a43d8266fbbc550dad7ed3f27953d5bb5bc7a3e91e94ed3c1c1773e', - 'x86_64-pc-windows-msvc-0.2.18': - '16dff877e19f61d094af35878a00b592302a1794c1c27afb1b194106931e9e59', - 'x86_64-unknown-linux-gnu-0.2.18': - 'e5a0bde1e0fe57a7ea1d26bdb582c636ba742c3db8a10d0a965536da7004abd7', - 'x86_64-unknown-linux-musl-0.2.18': - '4472cd12522d96566be88545f1520dc5099f12f47df297f54f9239fc1af0ed87', - 'undefined-0.2.17': - '6bfe8c67c849a87271a47d6c54672b860a1b37fba5bdb2928f6b912719edac55', - 'aarch64-apple-darwin-0.2.17': - '7dc5fe97867ac3bbcbeabf32fb76b3caaf12141b5e20926ed81353f9a2ff7dcb', - 'aarch64-unknown-linux-gnu-0.2.17': - '5037a966a2422f40c63d36982d46f10362383c128ce1707a56b4339b44a50c94', - 'aarch64-unknown-linux-musl-0.2.17': - '910edd0a8db6ff39baaad0f7f77b2ce74e0111b6b83a4439e2e02d5b82404e1d', - 'arm-unknown-linux-musleabihf-0.2.17': - '6e72744e9cadf1649397acceb006f27c9cdce3dcc2876fb73a887d8914166791', - 'armv7-unknown-linux-gnueabihf-0.2.17': - 'a5f18a5f739402e9c2a6b5a4dafe0ead37125bedc7c03a74a9a92e4682a0f49c', - 'armv7-unknown-linux-musleabihf-0.2.17': - 'fcf11ba75a1d21c49d53474c51b612de1627fbb97c23bd7752d64d178740014e', - 'i686-pc-windows-msvc-0.2.17': - 'ed5dc4a4341e7af3d92ef0649df6152b555b16e09c072c43f7f39b9d5bdce784', - 'i686-unknown-linux-gnu-0.2.17': - 'd1d478429fdaeadd56ce280bd43460275bd131cd44f9878987d9d7a5caa4f398', - 'i686-unknown-linux-musl-0.2.17': - '8fcafe168ae2eb4de6891c0d0d5c0c598af87b552d99d2c4d15deca824236cd2', - 'powerpc64-unknown-linux-gnu-0.2.17': - 'b2601121c8df47bdb430da2bf85848b7e38ff5df1150d8ea980d8ab7b4f5551e', - 'powerpc64le-unknown-linux-gnu-0.2.17': - '1f94aeda1cf36d401073ae21d9dc4acafed761d41074795f622ffa1fbd4a3677', - 'powerpc64le-unknown-linux-musl-0.2.17': - 'a3599741a236d088cb418f446e491b661c042ebd9f23e15f6cadcfe2833a6609', - 's390x-unknown-linux-gnu-0.2.17': - '4dccbee34457c45f4fb9df5760094d402db7642a3a5665ccbc271293dc19b746', - 'x86_64-apple-darwin-0.2.17': - '78137a1b9d6fd1f8f5f0d4208829dd5f89b6505c314192c0fa2a35d6faff5e91', - 'x86_64-pc-windows-msvc-0.2.17': - 'e77465f8a964cf0cbd932af506df6ca42ce288e6db4df312c53f27b05c7c09e5', - 'x86_64-unknown-linux-gnu-0.2.17': - 'd49537780cd9cd5621bbc34e6864356487155cd4a7540035e1b0acb0d1017def', - 'x86_64-unknown-linux-musl-0.2.17': - '20184a870ba25416b61d46c387853afd27d9a8df3f0598ee6878a315db5c7302', - 'undefined-0.2.16': - 'f215cd4c173a71cfc2427b5cb3c42e321ade41350051a1ca7a9c898ed502ff2c', - 'aarch64-apple-darwin-0.2.16': - '9a19728c43c35a2d5f97f2bf85b0dc7b508e1931738f0d95e2354f0f745196e1', - 'aarch64-unknown-linux-gnu-0.2.16': - 'f50584835c2099d5dcfff4fe4292719871ea40661d6fb124f732c81b131ac2cf', - 'aarch64-unknown-linux-musl-0.2.16': - '47af1d071daf655fea352a440f533f3ad7dfbdfc2314160ac14b31815d959c37', - 'arm-unknown-linux-musleabihf-0.2.16': - '5ab0424e8c18776c809f0c1e7f6e925f7e478c36b2260b24f2694d1293e5f8c2', - 'armv7-unknown-linux-gnueabihf-0.2.16': - '9d4a66d55c273ae5f265ee979899faa6636823b1dbaf4079085e108adfcb916c', - 'armv7-unknown-linux-musleabihf-0.2.16': - '384ffae2d98a0f2211d1353eb66031710e452838349fdad115503b26a3dc01d1', - 'i686-pc-windows-msvc-0.2.16': - '8b140cb56029585fb95685410f17eb866a4d6dae9d63de4fba14268e17730951', - 'i686-unknown-linux-gnu-0.2.16': - '902439f172d22dde421681d54994fcc9bc66ac412baf1dab978fc061342bc4e3', - 'i686-unknown-linux-musl-0.2.16': - '1e02d7e7e06dd44c1cd077bd645427af7f04901e685ba3fbcc2691d024906470', - 'powerpc64-unknown-linux-gnu-0.2.16': - '68209030923b2276df8dbcec9ae3a0efd9f7166419018e7d282dcbbc5043e97d', - 'powerpc64le-unknown-linux-gnu-0.2.16': - '9c0ef3b12fc81337612841f3d0588d60e5cd6f40ff533c546218c5f8f3b30935', - 'powerpc64le-unknown-linux-musl-0.2.16': - 'd41c74bda5a383cd71667ad7d38a7a5af667a82fd83df997ebd0547a5050a5ee', - 's390x-unknown-linux-gnu-0.2.16': - 'ca828149fa733859b4837b3aae69e253cd336d690ab6af6fca8726f5498d21f6', - 'x86_64-apple-darwin-0.2.16': - '1457a592a56326ac67ca12db89f8cc175634d36bd17a2efa7b605a9f81edcb31', - 'x86_64-pc-windows-msvc-0.2.16': - '0eceb9b4c9ec8049ac15455ee79100bdd2e9db2153977da7d9788ba792e1eaeb', - 'x86_64-unknown-linux-gnu-0.2.16': - '0a6cebd98cda27fe3f49853a686ca050fbfef2da7871f6cf4065c5e9a7b2233d', - 'x86_64-unknown-linux-musl-0.2.16': - 'e4efe763ad24e32b658e33b38cde271694f2fff7c2eb07cca5a267d600c1f718', - 'undefined-0.2.15': - '902d06ac01ebd1ac7fcda81f514b04c6d79a1bafd70305b18e9b1d387cfc7025', - 'aarch64-apple-darwin-0.2.15': - '7342fba0eeb0ea204eb4ec6311378e76d43bd237ad0576872aca3345914b024d', - 'aarch64-unknown-linux-gnu-0.2.15': - '939998c380bb95b4fbc15bc00c43c1b1fc1fc30d02638aeca6113f02a99c608f', - 'aarch64-unknown-linux-musl-0.2.15': - '3f5c7c25e4099854330b3a21bb9670d3cdcf3ec3c0eb9f8bee7e42c5098cc5a1', - 'arm-unknown-linux-musleabihf-0.2.15': - '2b53a33e0f46f2c37f949d12d420f666e93f8286ed371a1bc5b1406899ab5ff3', - 'armv7-unknown-linux-gnueabihf-0.2.15': - '1f8712bd2b6c11533d4defea1f2e7e3972b9db887ef26a4c33f452a8492891ea', - 'armv7-unknown-linux-musleabihf-0.2.15': - '0bb582c399933b7affce3c9f5992a6aa7f7bf596fbd43e08623a08dff564fbc3', - 'i686-pc-windows-msvc-0.2.15': - '339014778ebae1bfaf327217c137997ef272047626c857bd3fe84286af61a7a0', - 'i686-unknown-linux-gnu-0.2.15': - '8c5e80b94a84ab14b91de827858c076b0501a85de40c7ba917070a929e914a18', - 'i686-unknown-linux-musl-0.2.15': - '148fb4554317f84cb27e563707cff8acd35a5b3f668f27a45005e076833cd4ce', - 'powerpc64-unknown-linux-gnu-0.2.15': - 'c533ec6526e7c338c79c38181c94b88b5d80c5a1ec8d7182a0aac3b6448caa46', - 'powerpc64le-unknown-linux-gnu-0.2.15': - '681b607989c135d17215a3442fb0e6b11d5c5ea90973eacc6f3aaf2f7b1520d7', - 'powerpc64le-unknown-linux-musl-0.2.15': - 'a39e8898c033b86e3432e177d9d6ee7da5f9ffcd1624b894bce92d6fdd58bf56', - 's390x-unknown-linux-gnu-0.2.15': - '2fe5fe764afdb8e4f6f752f17400013af4c0ed60fbc91eabfe5b05483f30fb82', - 'x86_64-apple-darwin-0.2.15': - 'dd7ff73cbab1c65b3f2d110bf025d0c74ca2aee3001e38e808d7b1816f49a6cd', - 'x86_64-pc-windows-msvc-0.2.15': - 'c1ffecd50d417b3de667da0fee07b577abeffd5f9d6762501818252b3aa6c7a8', - 'x86_64-unknown-linux-gnu-0.2.15': - 'f9c06177f2153336c3a96f9ab54d881126447cde1cb5d00ed771223427692e9c', - 'x86_64-unknown-linux-musl-0.2.15': - '3151e375fdb6c73765a8cae5048790c52366cae4593e89365549587f24406837', - 'undefined-0.2.14': - '528d2dc187720d6338c5dc84809f64633cd969262c5a0f6a2bc0bddffa1ff8c0', - 'aarch64-apple-darwin-0.2.14': - '0a78382f3e93514d51257243313a420646a2316da47bc4bc194bb66ed2e50ee5', - 'aarch64-unknown-linux-gnu-0.2.14': - '5461797a801f3752cab99b63b206dcf54de037283d93f03adba736179f099d31', - 'aarch64-unknown-linux-musl-0.2.14': - '3b315856284f2d4c2a6e3b19fd6c5eae87334c37f1a7dfdaad3f696b976dae72', - 'arm-unknown-linux-musleabihf-0.2.14': - '40b481cb4ad70be8afe62fdb62c6b4f4f90a6a3cc6061950f58e4d92b13e58b9', - 'armv7-unknown-linux-gnueabihf-0.2.14': - 'bf7ceff49dd3ceb384316c6bd85b037a9b5c830074166f57d6ad6fc8b42fbb75', - 'armv7-unknown-linux-musleabihf-0.2.14': - '3e246f87058d03d0879c0a2dc287aa352785fa8a37e166b6c322b7ad1e79fe49', - 'i686-pc-windows-msvc-0.2.14': - '97d1cd6da0bbdfcda220167c0309b50ff294304d273d59a5b30076e31a8b9deb', - 'i686-unknown-linux-gnu-0.2.14': - '7f41c2d76af64bb5fa790516a43d86dda8c03b1ba5b57f1b2db9cea7eb836a53', - 'i686-unknown-linux-musl-0.2.14': - '28d924aaf00228b35d0219a4e0b87846bcc515c6575f3712733cdf614716e9ae', - 'powerpc64-unknown-linux-gnu-0.2.14': - 'd20a64a746d24e49fc85d46064538fb2c84778131340abe345192c1d62c29357', - 'powerpc64le-unknown-linux-gnu-0.2.14': - '1bc57215f96f156d784761c616de0a1c7d90aecf145c5f7e401add537db17106', - 'powerpc64le-unknown-linux-musl-0.2.14': - '2fbb0995b0a34d3cc2a97e3a5c4aa0e8b6b3b52d432a082f566112eaae1c490c', - 's390x-unknown-linux-gnu-0.2.14': - '8b025f335dc7066dae5646114b7fa0e9026a12a05b8909acccaf9c6348298d7b', - 'x86_64-apple-darwin-0.2.14': - '402525d3a113fbdcc687ca408d42cb104ce18e8e030dc05b83381ca4f9ea76ec', - 'x86_64-pc-windows-msvc-0.2.14': - 'a4c00d69418061c1566e758e85f3f6fc1532908453d03cd9f9aeba03d0bf640b', - 'x86_64-unknown-linux-gnu-0.2.14': - '79b2582675bd93c7d632e71a667478a3b1eed101669944e64c848f7240ab4725', - 'x86_64-unknown-linux-musl-0.2.14': - 'c0f760078a326b6f861d0eb4e9a04bccd0bdeed6cf72f284efa698e54ba83c77', - 'undefined-0.2.13': - '9ae345ea16f8c61997d8434153a20a1e95ba11fc46013ac951c70d3fcb77c8ec', - 'aarch64-apple-darwin-0.2.13': - 'f588388d2b13f77e4526e619f618a306b6b026a96975fbfb2c6dd1ded134cb72', - 'aarch64-unknown-linux-gnu-0.2.13': - 'f342442088a56a8a5e4af6781501870bed1b388b37ac2e9deb250cd1d0dc1845', - 'aarch64-unknown-linux-musl-0.2.13': - '56151690ccd6a12205478212dd16013d1969e3ef808a66f99809da850a49ed29', - 'arm-unknown-linux-musleabihf-0.2.13': - 'ef70483125e00033ed6bd5f9b0c4cfd377db54897284cd7d1d25e2ca6224312a', - 'armv7-unknown-linux-gnueabihf-0.2.13': - '20f96f8a6b2dee8a6013bc12b243b718027e5a34c9fceb4baef7e85e530f9da8', - 'armv7-unknown-linux-musleabihf-0.2.13': - '59b50354236a4a3919ecf9619bb5791936724351e6d1f96a18969d0e5df2dc51', - 'i686-pc-windows-msvc-0.2.13': - '644e97188d6f4d96e0b149992958c20cce928ad0f4ab4800e0fed70ae16198ef', - 'i686-unknown-linux-gnu-0.2.13': - 'aa94cec4368c615297aa4d81ab81c9034b4a40d66c75854002f0e26857e659a5', - 'i686-unknown-linux-musl-0.2.13': - '152cabfaf4c433d6904c5f68c2771b0c5ad207e356ef96867680faeb9bba0c8d', - 'powerpc64-unknown-linux-gnu-0.2.13': - '7f6bcf0354c87993bdcb76ca0ce3b6211703d19f08bef2cd3306b75cda6ff8ad', - 'powerpc64le-unknown-linux-gnu-0.2.13': - '0f38a41264be0ef325f8d438f34ea95c002736b3c092e3276518a2253c4ff923', - 'powerpc64le-unknown-linux-musl-0.2.13': - '081e0c31a971c3755108a6c70c90fb68a2b0829f995665aa5df1002eaa4945ec', - 's390x-unknown-linux-gnu-0.2.13': - 'dc843c32e51ee3fb46381699bffbc4b6040c51083a1dc7d6c597582b84956aa7', - 'x86_64-apple-darwin-0.2.13': - '6262eba42ebb9035a574b74c5ea253a41353fb4b6b264600e3b05b1a7f4cabc0', - 'x86_64-pc-windows-msvc-0.2.13': - '898ce45b3767ea97429426a7bd0ec54d070eb9e29ff2b072bdcf288bf6ddc9a1', - 'x86_64-unknown-linux-gnu-0.2.13': - '3f96048fa1b82eca14d45bbcc86714cd0dee19a73ef9311da6707faa308ec25f', - 'x86_64-unknown-linux-musl-0.2.13': - '2121a2184aaa0e4c7ef599358dc2bfd20e5a07a1373c302b6fedf79f2ba0778d', - 'undefined-0.2.12': - '322c672b515d240ae4a588dbf18086f0b5cdbc288335668c32cb6554cb3551bb', - 'aarch64-apple-darwin-0.2.12': - 'cd9ca2c17a32f08dc03a6430fb99c16cb2eec1350a4857292df6a600d71a1467', - 'aarch64-unknown-linux-gnu-0.2.12': - '8e57c9baf43f80a4b0eca7d5fd0de9152b99ec22809ecfd8350ab4317ae1d629', - 'aarch64-unknown-linux-musl-0.2.12': - '74981df43332e9ca6abd2855d73e0d1f5565d3f724c60f4a67bf0c09d84902a9', - 'arm-unknown-linux-musleabihf-0.2.12': - '50c8f8178978679455da0b14e5b03039001c39270d8fd1e51dde9addd45f3cb6', - 'armv7-unknown-linux-gnueabihf-0.2.12': - 'cdcda5bef68ecb96c593a1389349b19d6a52a2c235308e6aaade522f67def730', - 'armv7-unknown-linux-musleabihf-0.2.12': - 'b1c55e5e3b1cd5310318572d5243d7ba725c413e0a20d6a77987ea00dcfafbe4', - 'i686-pc-windows-msvc-0.2.12': - '4bd4c4fbe449799d0ffd179b6432712c4843d1b802ea79b582989d3cd9eda6e8', - 'i686-unknown-linux-gnu-0.2.12': - '301351fa77cf03bb0584c45deb36f0049223f404250ba31d69ebdf689ffae9cb', - 'i686-unknown-linux-musl-0.2.12': - '379de8132478143542aeac0a4b4310eb2ed172927561ec9cdf11cda2ccd87a2b', - 'powerpc64-unknown-linux-gnu-0.2.12': - '9dd50c32d2c3a41a43e5f08fb34cdf829bba0d2222abffcd20429f2dd19cc6a4', - 'powerpc64le-unknown-linux-gnu-0.2.12': - '53b30539dcb80d074e8d33eae582745a155ff0c3291d816c0596332a980e6389', - 'powerpc64le-unknown-linux-musl-0.2.12': - '9d9af6a119f15cec26e90e18dbdbf004a8ddfe9078e1877bb43a7ba87172150b', - 's390x-unknown-linux-gnu-0.2.12': - 'df8a4b496f5307a27c4a8b90e356d4b508b3aab24ddfc5904f7ec53bc3bc5cb8', - 'x86_64-apple-darwin-0.2.12': - '71f6c77cf22b8cdd04aa561fe4bd1da8720351359a7c04740bce6a68fdf582a4', - 'x86_64-pc-windows-msvc-0.2.12': - '5a1b374ac29e1b65ca581573f175ec3c8071cd09eb73f127d9081d37a0ac21cc', - 'x86_64-unknown-linux-gnu-0.2.12': - '7a0c67d32844afadd2d964d9d6ecb769a56e122e1423efce53e7554a33fb5c6f', - 'x86_64-unknown-linux-musl-0.2.12': - 'a617fdeb285e0dbb13a0f37f802b80be1fe5272a44f752d62d1425ea56428170', - 'undefined-0.2.11': - '75555dfd78bfd30f0b32e7515413319920bd1fcc88c4130c4fe02516dbd2bc58', - 'aarch64-apple-darwin-0.2.11': - 'abcc9dd4234623defca3ee8c1b36d2b3662d5fd12c90727e1111b8e1592fb9ba', - 'aarch64-unknown-linux-gnu-0.2.11': - 'ccdf23e44d3479ffe61bb68b61af5a014bcb76397f19b2a85587f55a6cc7a98e', - 'aarch64-unknown-linux-musl-0.2.11': - 'f4f5b8f496d655206a4bfd28c54192a225da1274d04fa3ff6ff74df1e756c400', - 'arm-unknown-linux-musleabihf-0.2.11': - '2579a68e7e434f0c47d3af460bf6c0570759761dcf1fa834f2df87abcfa0ee18', - 'armv7-unknown-linux-gnueabihf-0.2.11': - 'f76c811a073bd0feea69555270fd0437e7b4c085d604a3949d2dd98b418b1597', - 'armv7-unknown-linux-musleabihf-0.2.11': - '45463088ca59aadb7cd0343f98e1892198799e24b19873c8885433d72673c6c3', - 'i686-pc-windows-msvc-0.2.11': - 'fb7e8b6647fca55e627a2df40c811e2d1af8a5f9bd802122b5b93edcbb605aaf', - 'i686-unknown-linux-gnu-0.2.11': - '13e7682d48e802c16e41ca97c0b137eed9302caff943464f9ef43dc1de2dc8e8', - 'i686-unknown-linux-musl-0.2.11': - '64f849ed7de03cd4ae08759224a3065677a4164f42318c8e6c883f28c443e698', - 'powerpc64-unknown-linux-gnu-0.2.11': - '5cf33f99dc3318989c8e14697677ee5bb9029c38c60b44c69e9f58d8e8cd8417', - 'powerpc64le-unknown-linux-gnu-0.2.11': - '70a3c979624bc22307708d84ef9dda1739672606804b68badd6a01b88ec5d4e9', - 'powerpc64le-unknown-linux-musl-0.2.11': - 'a3ec1fdfbe0551d9ddd522eec0040a13eabeb8081d8114a8bbe3ea6b1efc5df5', - 's390x-unknown-linux-gnu-0.2.11': - '57ac8fcb1880cda4551bad47065e434ed020b6b2a401fb655861813bec1de223', - 'x86_64-apple-darwin-0.2.11': - 'b0c3cf377363bb0bc0917bcf8efa08590e3ec86a3713debb51b0a5efe7a48e9a', - 'x86_64-pc-windows-msvc-0.2.11': - '07ee4e64fe871de647f0580348f317475906162398604b96bd5c52d99fd2778a', - 'x86_64-unknown-linux-gnu-0.2.11': - '4a6188b172cb8d43e59c91dad8cdc4418ed0b395b09e4198ba4661cbcdbb40eb', - 'x86_64-unknown-linux-musl-0.2.11': - '063afd8753870e147cf5d7c6273748d585f758d43d8df4bc04121667b7d5a6fe', - 'undefined-0.2.10': - 'faf7b657b53a31d8d47cca58b33379d14f4701165a1867e61039a961274a45ff', - 'aarch64-apple-darwin-0.2.10': - 'a099cd4dc28f879e023ce221697e07a2089b12dc42099dd240a2e64d5cf428be', - 'aarch64-unknown-linux-musl-0.2.10': - 'fffdf595dd2a231b372b685a2e25589bd8d537fea252b28678565f01e5b8bddc', - 'arm-unknown-linux-musleabihf-0.2.10': - 'c1ccd50c4f3a18dcdd46d44d285313a84a9a2b36e8a676e4935e339362794489', - 'armv7-unknown-linux-gnueabihf-0.2.10': - '38c30fa3c5e3c97db50396609619c17741c860c36e13ee210e387c94c59ce1ff', - 'armv7-unknown-linux-musleabihf-0.2.10': - '36b38e5124202686aa79ee7d872419746aa3675e34fa7782be489fe310cd4440', - 'i686-pc-windows-msvc-0.2.10': - 'e4130ec5fd7af4d52ecf39144a15ff7926e7994a14a1c2e75f66d8c352f74bda', - 'i686-unknown-linux-gnu-0.2.10': - '0ceaf9b11a1173497e96c5f74b2d13a8cecd9d794eb4096b8eb21537aefc0a6f', - 'i686-unknown-linux-musl-0.2.10': - '078a21bfdd32363b989e28903d37d9a3114e5ec76683339abedaaebe2b78e57c', - 'powerpc64-unknown-linux-gnu-0.2.10': - '5ea1aa731bfafe544b754daf06b987d50a569944ffebb856512bf016ae747b68', - 'powerpc64le-unknown-linux-gnu-0.2.10': - 'd9122acabde5b4bca92fecb83abdb4eb9e2310b8985ea0c02028d6605dcb7d9f', - 'powerpc64le-unknown-linux-musl-0.2.10': - 'cba75fdad8751c443db162af15a0ba730ceda6f0a32d58d0f794be906e518a69', - 's390x-unknown-linux-gnu-0.2.10': - 'eac781c177f900b3175e24b38da8d20d2a985e7e1b7cb8a2506a663ba930ae94', - 'x86_64-apple-darwin-0.2.10': - 'd81a89883ea4ed47a115f4b4947cfe20db26b91d28a08287554eb594efc20cab', - 'x86_64-pc-windows-msvc-0.2.10': - 'f1df811e31940bb50c7f07a1e94eea0b7e3344f0e5ebed9e57a61f7c7857deef', - 'x86_64-unknown-linux-gnu-0.2.10': - '99b25a80e170fde54b299c05f4c071c7130ed85db45fe8e7663cef44f09aac5f', - 'x86_64-unknown-linux-musl-0.2.10': - '5ab4daa64daad2fc53624c1e88dca7166424526713e6fcbe8e34e80f23ee612d', - 'undefined-0.2.9': - 'd1c2b96c86aa8f928d8f49c3addcbab35bc6c1a6609ae7ed64bfccc3135ec448', - 'aarch64-apple-darwin-0.2.9': - 'ebcbfb397dc045356e1b758176b83fe192bf6cede3ac307e30e6934c54ef45a5', - 'aarch64-unknown-linux-musl-0.2.9': - 'b8d055a0279c52021238a92e41bd6076813fac3ae77f4a3235b8aa4e2d398c0a', - 'arm-unknown-linux-musleabihf-0.2.9': - 'f21a687de862282ed42f8f515a9221ef2d4b4e831a634c83837eba5ade3bed35', - 'armv7-unknown-linux-gnueabihf-0.2.9': - '9c43a432b9e02b126e2a1e42262b8ecc7d5715e9183c0fdccfdb6a98911067ae', - 'armv7-unknown-linux-musleabihf-0.2.9': - 'fa57fc9740b58b7db4cecbbb3e93a92f73dd30267965097504736ea6982e67b0', - 'i686-pc-windows-msvc-0.2.9': - 'c68cbadfe1242f8f47469481773b9b7ec09b0b1bfa99cd545a170a3c4a3d294a', - 'i686-unknown-linux-gnu-0.2.9': - '530a4070e2fe5733a0f1ea262033e83638f283fd80fccf81c0e445a68bf47f60', - 'i686-unknown-linux-musl-0.2.9': - '68410fd939715734af7d0d7f2a770cb786996604af688f260db94e17f2aeb8e9', - 'powerpc64-unknown-linux-gnu-0.2.9': - '04c59c34f3895e9484f40c05fe6fdd2bb1e17a919d4b9cdfd99633a2f52d2ef6', - 'powerpc64le-unknown-linux-gnu-0.2.9': - '15a1902193c2654031fd7fafc416f434c36524d86a827e085b35580f83ced93a', - 'powerpc64le-unknown-linux-musl-0.2.9': - '9c1ae1bbb60b334d3249e4fbfb6ee2c3b52854764a3e4f6e6a612c4b96542826', - 's390x-unknown-linux-gnu-0.2.9': - '444f7bc74488219e6157136638696fdf6bad37f3090e324e6e843318ff09abb6', - 'x86_64-apple-darwin-0.2.9': - '30f22cbe600b657cf6e987a05740194c2f1822f394b1c60e15621989b28b6591', - 'x86_64-pc-windows-msvc-0.2.9': - '32057b35feb2dbdb8de32bda75c8621a00f2aa619cfcc6d4cb5506b3b6ba6d63', - 'x86_64-unknown-linux-gnu-0.2.9': - '83438964a0be35ddded2099ea64599706e7c7a7de575429ce4df78e20d57774d', - 'x86_64-unknown-linux-musl-0.2.9': - '28e583284cdbbd5e3796c4db2c94997f805b5c632d73dcd9a25ddb3dfa9453b7', - 'undefined-0.2.8': - 'dad41d5189d272b0cca9a87b3bb16c7a74241b9051ebf2b6fd5e94a0659a35fb', - 'aarch64-apple-darwin-0.2.8': - 'ce64cb16c5e0dd567ba926926a67c569d9138c5162685ed5a40639b2c9163275', - 'aarch64-unknown-linux-musl-0.2.8': - '8f4bc88fbb7c498224122047f3f559b93e145753032d59782037ccf2969360b0', - 'arm-unknown-linux-musleabihf-0.2.8': - '095db570c8c5d0b8033d605984d2a0513585232b6c44f0255365c1bc016a12c6', - 'armv7-unknown-linux-gnueabihf-0.2.8': - 'c88b3f63ea7b3727500545edf0a6c1581a34ab5328fa2503e7c40911dce9e26d', - 'armv7-unknown-linux-musleabihf-0.2.8': - '0063e160561a5928d73a8d89714aff77c51adbb62f4f1f4f0f438d7d3a03b4ec', - 'i686-pc-windows-msvc-0.2.8': - 'dd3bcf604e2538625affbcda1e4e61ef1b27aa4515081ac13afaba92ed7ded02', - 'i686-unknown-linux-gnu-0.2.8': - '7643a101a02befca1cc3a5c830fc51a157f54bee2afc1eb098686972a9079810', - 'i686-unknown-linux-musl-0.2.8': - '71a792c953f782efb1648170abef72ce4ac0ca4dafa101719d87798dca5e7833', - 'powerpc64-unknown-linux-gnu-0.2.8': - 'fa4afad36eb706bebea001d335aeab753b164ac6870267a6f6dc1f7dd70c03db', - 'powerpc64le-unknown-linux-gnu-0.2.8': - '43bf0cd00751c0332c9016c7b30dd2a6c753f0922dc5a1ccaba45e8b6afa4621', - 'powerpc64le-unknown-linux-musl-0.2.8': - 'a0f15bd3e80e8b97affda7d24e2143c7dd99fcb7c8c8e948bad849d4a3658e52', - 's390x-unknown-linux-gnu-0.2.8': - '106264c325eeeb17e7d8ec5f1b30a31129d4ebe2c97f54dc88fde16be7177a11', - 'x86_64-apple-darwin-0.2.8': - '8eafabb094127b35d472e8219047d4596652a9a645189f829f6bdb1b4786f282', - 'x86_64-pc-windows-msvc-0.2.8': - '1ee50b71511cf7007b07843562fc2467dee81cb8baf488e8cc0ea0b58ee12ebc', - 'x86_64-unknown-linux-gnu-0.2.8': - 'ce9f8fca5faef55af4fb83343143bb403ecef518f9118e97a37ccfbf1ccadfc3', - 'x86_64-unknown-linux-musl-0.2.8': - '6f155b9b9d2b1baba811bd0c1aba0306a39ac547dd6eeb3906f692d3cec86984', - 'undefined-0.2.7': - 'dafefc3926d85052bd3dc07e28ebd8ecde0ae575bbf80b5c5bab80fdc3a3ba84', - 'aarch64-apple-darwin-0.2.7': - 'b9a0e6c501afbc4b47f07a199927d0783857013736c1c8c2d173201175139e45', - 'aarch64-unknown-linux-musl-0.2.7': - '40e4fba3abcc76d5f69dc420cbc457ccc7bd7003a07e6caa0a2a8a803b339e31', - 'arm-unknown-linux-musleabihf-0.2.7': - '5ec601accbc0b3a3cae4c8223dae977c4233313a246888ee5bf2adf381e07910', - 'armv7-unknown-linux-gnueabihf-0.2.7': - 'a960192da71ba05438d1ab3632ee5a22c8b02dea087f9c054c224803870c9571', - 'armv7-unknown-linux-musleabihf-0.2.7': - '62bd71eb14a9e6149e7277a7cc3f5ab61e291a861d2cb252544353972183427e', - 'i686-pc-windows-msvc-0.2.7': - '51144d9d46629f0c260988ff486fe1720ad049fce7cbea201fa861752172d26f', - 'i686-unknown-linux-gnu-0.2.7': - 'f35314685a233ee0b769cbac99d552f2feb21dcdf5f24bbf069b34dc5a26edf0', - 'i686-unknown-linux-musl-0.2.7': - '41afe171469eb811b50fbc6f45c97db842019f3c8707fbf992335eecd78125d6', - 'powerpc64-unknown-linux-gnu-0.2.7': - 'd84c24bc570589cbf61b35bff7b3b2b7a56fdcd5ba64f53602a0ab8009e07bd7', - 'powerpc64le-unknown-linux-gnu-0.2.7': - 'f9ed8c319e5dc5920f5cc4455e088ac7768a858bed95eecec330f1e99e47d903', - 'powerpc64le-unknown-linux-musl-0.2.7': - '8fbc6d52c63680cc6857b55cf8f025740a807a58c59ccadba87300f7103e0551', - 's390x-unknown-linux-gnu-0.2.7': - 'e1d74dce851c3ef82e347221b36247f649d12e5bdfba5c91b211caee7de004b9', - 'x86_64-apple-darwin-0.2.7': - 'fa3f52a05222d4cefba742e2db029f85c41b7e539c1f748b2583be42b806de91', - 'x86_64-pc-windows-msvc-0.2.7': - '5a9b7053ae9d25cd28abdd8fb10a8c5353dc0212594013216da5905eb7515360', - 'x86_64-unknown-linux-gnu-0.2.7': - '080bedb35224afca73cb424629e3512b529398f96353c4cdf59fe6cdceac5034', - 'x86_64-unknown-linux-musl-0.2.7': - 'ebc3de0f88e8cdc211fa914124f201b91037c0ba5f30f2614e630295a147c833', - 'undefined-0.2.6': - 'c822fc118367829825775874c19d14bb9415804a2c5efa6dfbb302b1fb18ae0e', - 'aarch64-apple-darwin-0.2.6': - 'f985057f3ef9a101ca4d485337f8b5800d894277f4dbbda50dfef5e0e1d352e4', - 'aarch64-unknown-linux-musl-0.2.6': - '41606b5c24e40ae2bcf71d9f8fc28b1f3e1399950ee324aa9925621d5bf1bc0e', - 'arm-unknown-linux-musleabihf-0.2.6': - '854f619dfcc52b26e89189b8c8fce3a5041bdd1408cd867d87c9e4751caff6de', - 'armv7-unknown-linux-gnueabihf-0.2.6': - 'f1194ec0b18cda58537698c5b417f9464d8258334d69049fc32c40c3b8dd173c', - 'armv7-unknown-linux-musleabihf-0.2.6': - '5ec8d44a6ef6c732a91463a2c4f6817a71efa0838db6924e2bc889a48118f493', - 'i686-pc-windows-msvc-0.2.6': - 'abff721157dcf759582735e4c9b366cbde1487d6d8a7d1fb50e1a20fd37d6b4e', - 'i686-unknown-linux-gnu-0.2.6': - 'e1868d5f0e345d454a8895b09d2e62dd1886bdf01cbeb6d494be9e24a2717b1f', - 'i686-unknown-linux-musl-0.2.6': - 'abd36ef7319182876fa2bde268f378cf3351036158c6ca9e45996b58f4e54ef6', - 'powerpc64-unknown-linux-gnu-0.2.6': - '55b6480dcea50327c20b835fe81a30d685224c5022cabadf364b59a258967e8b', - 'powerpc64le-unknown-linux-gnu-0.2.6': - 'e8de807c6b42e602b8aa05885627225a33b65d4155c514b58b7bc853d02b792e', - 'powerpc64le-unknown-linux-musl-0.2.6': - '6ddc687f19bbb1f9279cf36d3ac05d8ccb7bde1c7b19f1787cd5ac427943fd17', - 's390x-unknown-linux-gnu-0.2.6': - 'f596c5420cfc7eb608cc7c560d57047985ff1882d2e95c681e42ce85213adb3e', - 'x86_64-apple-darwin-0.2.6': - '8e3a83165f751174041fbe0063cc063f4206270c0a187b55941f52e8a9f132cb', - 'x86_64-pc-windows-msvc-0.2.6': - 'b359026e348df4e3cc12fc8411992ade3fc5bb5debe334669515383681088a18', - 'x86_64-unknown-linux-gnu-0.2.6': - '02c7803b6209a80cdc8a4867a02ca6cb6a622f0d83f5276770a8d5636a89a396', - 'x86_64-unknown-linux-musl-0.2.6': - '5efba2047b1e72dbecd64e707d0063f6dc49c22f8ba467480e665534c5f6a17d', - 'undefined-0.2.5': - '798f49225017610715474781467463a0dc48be1708973b0001e547c98c7c5f58', - 'aarch64-apple-darwin-0.2.5': - 'a827cb84658d321de0a029b7207b99fa6e20b99f0c1ab8d24484497b3b87c0e2', - 'aarch64-unknown-linux-musl-0.2.5': - 'f465b75f0129bfb1e47902a14731460aec5cc71d9586a19ad19a644fd2fa7a5e', - 'arm-unknown-linux-musleabihf-0.2.5': - 'd630b4b3716d4c4da9118d2d5c083e2fe6b7c769dcae39d4c8546ee3709aa0bb', - 'armv7-unknown-linux-gnueabihf-0.2.5': - '3341aa26179eb68f6b6c7bcdf44a0c3f5dbea3f43905920f4c018410fb3d46eb', - 'armv7-unknown-linux-musleabihf-0.2.5': - '8be8dacd13b0ea18720b818e536bd80d83ac30eba4d37e8913aeaecf9e2feeb7', - 'i686-pc-windows-msvc-0.2.5': - '13cb20dcf23792bc7ad8d73c2e4f003702606f6e9821c1ac8eaf089f6e98f57f', - 'i686-unknown-linux-gnu-0.2.5': - '8432f9d68840fe56a21a8542681045447dcab18b75f43a073bc28c4d5c1b8157', - 'i686-unknown-linux-musl-0.2.5': - '52540ed8ddf78ec80db95cf54618e6e4fd4cdceab860cbea9a8fafa957c98983', - 'powerpc64-unknown-linux-gnu-0.2.5': - '0a4891a6e8fe2ccd4c17196fad8215fe6611d74a89a7b2569d3fca3546103300', - 'powerpc64le-unknown-linux-gnu-0.2.5': - '8717ac07d0684b618f112bfb9a7926490511cecebeed8f125b25f4969dba663b', - 'powerpc64le-unknown-linux-musl-0.2.5': - 'c9811d9a90b3babf6c384d0a10d38f38e5109b604dcc68564f2c1216a3afb21f', - 's390x-unknown-linux-gnu-0.2.5': - '70bbb790f817b1e0d930bea18bfa688d8177362aee8a49b83f1fe88d9123f86d', - 'x86_64-apple-darwin-0.2.5': - '8e5808450482b5533c6b33096952b0cfca0a7020d7524c0132616926a9f58878', - 'x86_64-pc-windows-msvc-0.2.5': - 'bd6c8e30fad5bb2207c2f7248c375034a9becc3ce905bd94322f9d70e9cc6b20', - 'x86_64-unknown-linux-gnu-0.2.5': - '5eb13622b4450b3756f2395c261315562c48f405208cd1a160fe47e43fc85da1', - 'x86_64-unknown-linux-musl-0.2.5': - 'dc591b1322d0ad2d3561c6d18657c5c5c34ff9addaa588645a062cd60d14f0dd', - 'undefined-0.2.4': - '073532db6eaf44da32d9a9536f6c48f1c8d450340969234a1b6ac322811758d4', - 'aarch64-apple-darwin-0.2.4': - '2edcd05f37e6f1c44aba1388086768dbc53777473c354feef3033fcb5cc3434a', - 'aarch64-unknown-linux-musl-0.2.4': - '8bec0692741573c6f150321cdb9be14b1dd22f91fbdb1a87c9b94a184a6ef753', - 'arm-unknown-linux-musleabihf-0.2.4': - 'c86f3a90d91fbe659708928493a69e35b1a79b2b4bf47d5941a5230ed9412462', - 'armv7-unknown-linux-gnueabihf-0.2.4': - '59e781c25a16e667b57f76b8b99bfc31b85ca94811ddd95c549045928f80c3cb', - 'armv7-unknown-linux-musleabihf-0.2.4': - '5a89f32071ace6e5d0501fdf7fe787f2739f89df862dfe1d1d48eaef09abc0ae', - 'i686-pc-windows-msvc-0.2.4': - '4e6255288f9041070bb0736b4626ddbe9b8933ff5e067224584c9ca14867902f', - 'i686-unknown-linux-gnu-0.2.4': - '7f78cc0b7f0316500539f8c9e4f4077c2a94d015673c1aa6ac9402dc8f35ebd4', - 'i686-unknown-linux-musl-0.2.4': - '97df66100411c14f30639b8cb97b42365422f462e0a5d1acc0770f1d468cf258', - 'powerpc64-unknown-linux-gnu-0.2.4': - '52b2c0dde7367c0424363092f276dc07d4fafa7a5696fc34849975717c53b5f0', - 'powerpc64le-unknown-linux-gnu-0.2.4': - '14c765959084196deba0e4f858fec071b03fd70ec9176e7414e7cee88d6d8e0d', - 'powerpc64le-unknown-linux-musl-0.2.4': - '118d70b310f2a4029bf15146d5e574c8b987144b13e235b76bb909654bbf8881', - 's390x-unknown-linux-gnu-0.2.4': - '175c5c05689bb332f74927c4001d1a72866bcf8f5b7fd4f2ac766eb30119882b', - 'x86_64-apple-darwin-0.2.4': - 'a5bd83234920728797fc523e2aa3605c45c7c3ca760e611c4071943cf109e58d', - 'x86_64-pc-windows-msvc-0.2.4': - '60599a616c7ea04b2c6a4baac30de0b70e3d934795b672eef73298fdf187656a', - 'x86_64-unknown-linux-gnu-0.2.4': - '2c470b016f749063080fefc5dd19176bd25b9761033df9df7b5ab914eba1a8e5', - 'x86_64-unknown-linux-musl-0.2.4': - 'd795a27ccc2a47e8939b02296780c58377342ca35b51a518e36fa6b62291eabc', - 'undefined-0.2.3': - 'aa6349670507cf6ce80d832d488391b82b48a9f4511c868886758349d62664de', - 'aarch64-apple-darwin-0.2.3': - '20e466f87ebeda26da0fff5306ad998375fe1e27d2514e4b4f5711f9fad6bcee', - 'aarch64-unknown-linux-musl-0.2.3': - '8574f4d4c56b87eb0e9041f984d8e79d98c53d2183533c2196f8a6dd16944929', - 'arm-unknown-linux-musleabihf-0.2.3': - '092dd369d4336989dffc7114006c069c851a0a09b463e0522e06704fe002d149', - 'armv7-unknown-linux-gnueabihf-0.2.3': - 'cf2925523919708024d7a99a24318faa252a5fd1264e19aad936295ba65ab97e', - 'armv7-unknown-linux-musleabihf-0.2.3': - '04512d5e3d68a6b4f8bcaa8e94d0e196ca0f525a387c45272d3efbcf87ad846e', - 'i686-pc-windows-msvc-0.2.3': - '4f9c95a4f10ca3a35ef3d7c84b02ee473826ca3089c0e701c84efaf9bc5dd1dc', - 'i686-unknown-linux-gnu-0.2.3': - '1e9a60953f4c7910bc2a28e1b131cad975c4e0b8e4c1616a2c494160badfd330', - 'i686-unknown-linux-musl-0.2.3': - 'fc5e7a35c7b229eb8be9c38901ffd29ecdbc7bcf4a54cca21c477f8d10f8cdb0', - 'powerpc64-unknown-linux-gnu-0.2.3': - '079dd937d5c71ae1ec72ed47a3d78afbe73a1281094f4fb49884758752d28f06', - 'powerpc64le-unknown-linux-gnu-0.2.3': - 'a6ceeeae7a98c410b97d72a26a6ce5d53115c4883672008a5c614fdf3519e18e', - 'powerpc64le-unknown-linux-musl-0.2.3': - 'c093aad7e88ce3edd7a971b6921e3365c017cebdda704366249db13b143d8cb0', - 's390x-unknown-linux-gnu-0.2.3': - '0f817aac0d53f0d362b23399d49c5c113c9cd1a7c60cc0d1677dd4306d3c2858', - 'x86_64-apple-darwin-0.2.3': - '79c28e2121d4299a2190ab0c8f149d676a6d623a4396c86cda947a9280f494a8', - 'x86_64-pc-windows-msvc-0.2.3': - 'c02509cee8e75ac1e17ea0101c4e0d624a8e4e033eb74d3fd50d7f06d30ff949', - 'x86_64-unknown-linux-gnu-0.2.3': - 'd94b9f679b3718ed0f62eee1126f02f1552301b7dc473a7dc3727f20b889e057', - 'x86_64-unknown-linux-musl-0.2.3': - '872113d59455f86700d23b4589bd2767491fb7ee4e21c0a62a9f2555c631045b', - 'undefined-0.2.2': - 'e7ca19e90cc640ac96756b52cdae640d03e427fbce92643a00883cc530487ffd', - 'aarch64-apple-darwin-0.2.2': - '4533c5a3f81f64dbcf9fd154cfa5e1cf904e4d9698eca63ec6a209f554a0beb9', - 'aarch64-unknown-linux-gnu-0.2.2': - 'fa01c8584e6dbea991e9f14e50ad33e51c1a321cabedae738075fe58ee5a3ab7', - 'aarch64-unknown-linux-musl-0.2.2': - '2f004af91dc4e5e18074724e3f6ddf074026e264a2ecd27fad067d152e739893', - 'arm-unknown-linux-musleabihf-0.2.2': - '3d6038f9d043209c9b135743e766ea11ddd26d25721a21b2494d72233f470090', - 'armv7-unknown-linux-gnueabihf-0.2.2': - '2e680d9b99deae3939da2d5bab5997e12713a2991a326a412c117c3471d41d32', - 'armv7-unknown-linux-musleabihf-0.2.2': - '9363ea6707d8451b78980cc2a4baef357d9f86ed2e1bc877f68140c5ec47aa3f', - 'i686-pc-windows-msvc-0.2.2': - 'e3c321c02572db320f1f6555da93fa0a2550cee84be49df8890f45dba49cc31c', - 'i686-unknown-linux-gnu-0.2.2': - 'e81b97d0dc2756b7ca632d1344d9dcdf0dd3d127f1c4b134c338a05b28454e8a', - 'i686-unknown-linux-musl-0.2.2': - '54d79ac9d9f04637176f1eca20917c27993f1cc5040e9f73d2672ba5f414d044', - 'powerpc64-unknown-linux-gnu-0.2.2': - '9811a9021a302229a487bb717f643d96c2746691773c552f0c43294b0935a78b', - 'powerpc64le-unknown-linux-gnu-0.2.2': - '386bb032c291e0f2c24fa6866588e632eeb999ebac6ab20ce7aaee97f046ba4b', - 'powerpc64le-unknown-linux-musl-0.2.2': - '28540d8ca31c5d7568bfb361d7a28a0b5f20ef9f08086d5cc70fda07ad9fb250', - 's390x-unknown-linux-gnu-0.2.2': - '237b3a93ac0d9ccf7d841f89ee0e7b122ae21a0e637ff8149e1faf7a4f55550a', - 'x86_64-apple-darwin-0.2.2': - '4c0acbde53ce0fec440379c112bcc6beafd924dbbd6717d97e92245473d1e51a', - 'x86_64-pc-windows-msvc-0.2.2': - 'fdfede202032b74e3a3e94034c26e23607b4a4326625953f48eae74c1f7d4d0b', - 'x86_64-unknown-linux-gnu-0.2.2': - 'd19904a4eb2dca1b654639e82fc0327957c73427e504492005645f62d2205a3b', - 'x86_64-unknown-linux-musl-0.2.2': - '82c4759fd56e932fd94642172ebea98cb55f4fbaafc4d00038ce425b08a5547f', - 'undefined-0.2.1': - '2b7e04835f90d280458fbc473a2d4f47cf960d97769764deb059d0e85a978c45', - 'aarch64-apple-darwin-0.2.1': - 'bb50bd8c7844ecc366c6dd99205d8cadefaae3a8bc10ea03d51e3e3634426b45', - 'aarch64-unknown-linux-gnu-0.2.1': - 'e26270d4d3a2f0273ed40e1a237e085500f4db85255ed7d17ebaaa48123a0122', - 'aarch64-unknown-linux-musl-0.2.1': - '6ab4c698ee4d2efc2ad9db2d832d47b77feaa4944e8ac90bedb78eae76c0ad76', - 'arm-unknown-linux-musleabihf-0.2.1': - '0f58165c9947ea4a2178076fcf31f28186185f73537ff7e77aadcc04225cca0d', - 'armv7-unknown-linux-gnueabihf-0.2.1': - '8d36878c23be2c560bb2a14d9fb8e4d418dc14593bd2d7b4ad93aef82eed6d6a', - 'armv7-unknown-linux-musleabihf-0.2.1': - 'f714dc140fd40d149659ced54ac2d5e9532957afc4d66c3071131b648e417f3e', - 'i686-pc-windows-msvc-0.2.1': - '65e6f8c12bd9feb46b0d415d2af9fb4bf018756c1158931a1e8adaa075ad41cb', - 'i686-unknown-linux-gnu-0.2.1': - 'ce3973a4f332ef0ff996e1dcd7cfcbbcde977a5eb5febe118c4bd1387da66ee2', - 'i686-unknown-linux-musl-0.2.1': - 'de3a0be9533980e74f1f6d834960cb3cda326a9aa33f86de18238ec9eca148c9', - 'powerpc64-unknown-linux-gnu-0.2.1': - 'f60a5e600c56cac45289d738264ba99c27c1e345c7e75f41a01d65a3f78d4098', - 'powerpc64le-unknown-linux-gnu-0.2.1': - 'b49dd3b2e9691daaa9793f1fced2b32edf0998ef55c630b5dcf18670005bdb73', - 'powerpc64le-unknown-linux-musl-0.2.1': - '068a869b16d7a1310d895c6bca1b6a6dd6c6b6b5d2c7998433d10b59aee0ff11', - 's390x-unknown-linux-gnu-0.2.1': - '0d79f0c4ad50f6c397889723c22db136d7f819c21576d0a40fb8b762d136b80e', - 'x86_64-apple-darwin-0.2.1': - '438b30b81e86b95118ceeee0f8e2a2e018dccb22a5ef83985728610715336d62', - 'x86_64-pc-windows-msvc-0.2.1': - '959a818ecf5869d69a4689c3984c5c87c915d898d8327ced120806e0b2f0f699', - 'x86_64-unknown-linux-gnu-0.2.1': - '623069deb38e4f2d47054388fdf1e4f9a676853fa42080d3b9bf52cd812c75b5', - 'x86_64-unknown-linux-musl-0.2.1': - 'd8af260263364fed8f2d4ba7c1c404bbf30f587cbc2a97807b6f8d5a1feb4cab', - 'undefined-0.2.0': - '352d767c63e4b8ad10d30f705b62121291c2492e1df3eab26ef6dc94948fe090', - 'aarch64-apple-darwin-0.2.0': - 'fc2c917a8c2b1567b1d035f4a8122750f900cd813409f9d80bbd287e2597dfae', - 'aarch64-unknown-linux-musl-0.2.0': - '3504273e59259c6307446a2c7c1f49f194e8c7d8b79474cdfac97696a655fc34', - 'arm-unknown-linux-musleabihf-0.2.0': - 'b4664ef3e726bd5569912e4ebab338263b5da150985513fcace4481b8422a09f', - 'armv7-unknown-linux-gnueabihf-0.2.0': - '202f293aee0e156611898ef95313be812f9de6273412a27a530370763c5a5daf', - 'armv7-unknown-linux-musleabihf-0.2.0': - 'afa807e1ce8fdaed8fcb372a0ca46cacd39572d1e87613d4df583936bd8bbfdb', - 'i686-pc-windows-msvc-0.2.0': - 'd65d94ade914f7507dc93122561e47996c5e0861bdcccdabe794bcd5c9185f82', - 'i686-unknown-linux-gnu-0.2.0': - 'ac307c2cc67d81c3e22b0cb9af0e808551df4c1b50d1f92ee41bf6f07523ab3e', - 'i686-unknown-linux-musl-0.2.0': - 'f81963f737b1398d4c3c5ee0d370e7c4706936949e82ae42b52e54fbcc1840fd', - 'powerpc64-unknown-linux-gnu-0.2.0': - '5bfcd8a0061edde591868437fe061728c4ae0fcedbe5a2671628eeda35b444ba', - 'powerpc64le-unknown-linux-gnu-0.2.0': - 'd1338054af7e09ea91016fb0e3656646774e0223859498d814c7495b8a008c94', - 'powerpc64le-unknown-linux-musl-0.2.0': - '90fce3a907c1124391408bb5f71a795264a226c8fe31b58ae1808fbe802de043', - 's390x-unknown-linux-gnu-0.2.0': - 'e9554cd1d54f00675f768a47b7d68cf541214256d4db9b7d2c60ddab3e85bcd5', - 'x86_64-apple-darwin-0.2.0': - '5ac4c95dee24980ced348a86cfe4e114cfcef442ca3cc11046cf8b6edc65f58b', - 'x86_64-pc-windows-msvc-0.2.0': - 'd716371c39d9075f664f9c30697fe0987fcad79a3d403f79b87f30e1022656e7', - 'x86_64-unknown-linux-gnu-0.2.0': - 'a14c9317e2c000475851100c83c20ae725e998511b1ff890006d70532567a822', - 'x86_64-unknown-linux-musl-0.2.0': - '44a6168281d2fe1226f4af6c94b068006dc458a7b98ff4d4dac1991e161eb678', - 'undefined-0.1.45': - '79fee4ffca82be961a2cf79b024506a672a4e5ea1f924c1174ce3a2e5bfee54f', - 'aarch64-apple-darwin-0.1.45': - '4990c1ca07e87ea215085c798294205057efd7ed97d7d5f4c76e840fc366753c', - 'aarch64-unknown-linux-gnu-0.1.45': - '71ff02cac3e257e12d35fe9bbd6dc096858ec23e218b069b5ec6e5157db39e1b', - 'aarch64-unknown-linux-musl-0.1.45': - '7ca9c40f40b1b9f9673f78475a08e45b5c367bf3d73052896ee57a5f434872a6', - 'arm-unknown-linux-musleabihf-0.1.45': - '64526323d11e496ff7012821424be3bb102ca2b74bf47392fbdac4991674a650', - 'armv7-unknown-linux-gnueabihf-0.1.45': - 'c26b07ccb7e35595addc328bfcb99356343b12d59c4d3f9676aebd7aec24163d', - 'armv7-unknown-linux-musleabihf-0.1.45': - 'dd2fa3ecfaf7a73e86fcb7f3945873b242a3f863742530afc98921cc0daf30b1', - 'i686-pc-windows-msvc-0.1.45': - 'b010c1ddf3c0de9ec25068e1f7026b369df453b78c6619634da9cdd14aa9d810', - 'i686-unknown-linux-gnu-0.1.45': - '2f14d4d41617b0358aadbf1bc8d77db60ca27200a8bdf66b8fd87fe66a18575a', - 'i686-unknown-linux-musl-0.1.45': - 'bca68fe4228aebd2f5f9572a6cc70fe4a1d0c146a2d64135f264e4ae355bc3d4', - 'powerpc64-unknown-linux-gnu-0.1.45': - 'f62159477309071a00fef10f0f0305e527bb6ffa1dac99650de365ba4ad6a2bd', - 'powerpc64le-unknown-linux-gnu-0.1.45': - 'b67882e3778107610793c64048d07ad0d8e9ac627ef215f43ea45cbe074e25fd', - 'powerpc64le-unknown-linux-musl-0.1.45': - '1c19bf1fad5e032c812fb084826ce5630081a2863a4aa529f1689e091f340499', - 's390x-unknown-linux-gnu-0.1.45': - '85f6ee976f34bca558da5117613a16dde793e3b05395463cff0f3d3547ca309e', - 'x86_64-apple-darwin-0.1.45': - 'b820364764eb628a89e11b25acd3fe19dfce436546f4f7c8dc38ede3f7d939df', - 'x86_64-pc-windows-msvc-0.1.45': - '3de68132a6316e346f2ae3847dcedaa13ee89a8672b91544bc7d31f49362f20e', - 'x86_64-unknown-linux-gnu-0.1.45': - '11341c386088233e197707a30fd9b13233deb222fd366cd39f9daf8e5924c7db', - 'x86_64-unknown-linux-musl-0.1.45': - 'ceac15973402e27c6c9b1077e35249437b2cbc26f60fc90be31114c47631884b', - 'undefined-0.1.44': - '295c120a2b63297d929ee9592c9b1993435a0c6907436d14f8bb93cff5ac4800', - 'aarch64-apple-darwin-0.1.44': - '154d45db602d5c4f8dbffb0e038fee581f161963f5562568be565625ac7bc753', - 'aarch64-unknown-linux-gnu-0.1.44': - 'afb7039f033546d55730dae38a106dd56b358117a565a42bf3ebda9c48db53c6', - 'aarch64-unknown-linux-musl-0.1.44': - '3a461fb08697104ac5ff9749a6b370af87b95ad83008978ceffa7d0564fdc8c7', - 'arm-unknown-linux-musleabihf-0.1.44': - 'db0371a9995d3d6c9ec9a7528ca535d0a5def1177127032360b374817030a71d', - 'armv7-unknown-linux-gnueabihf-0.1.44': - 'a89e4114aa9855c9070e74c06f663213da614dc145ad21c0ec1aa5f0fa294c30', - 'armv7-unknown-linux-musleabihf-0.1.44': - 'eeff1ff78345df0e86dc8f3144ea7af47d50ce9400f0d73798964a399167b250', - 'i686-pc-windows-msvc-0.1.44': - 'c0f74ab851a704b8dfe6afd6bc7fad9d23947561d6c2da1a6cd5274a762c6c4f', - 'i686-unknown-linux-gnu-0.1.44': - '6e68901f49540494274fbccb83feda57bef7ef137443228669c790f5f1a14fc9', - 'i686-unknown-linux-musl-0.1.44': - '592020dd3bbe026d657341b0a7b28daaa57a68626585491a70863ae9f63a4769', - 'powerpc64-unknown-linux-gnu-0.1.44': - '1af1b7839ff2a5cfebc7997fc579cc61a34c8ac4c838edfc07cae7318f1c3ed9', - 'powerpc64le-unknown-linux-gnu-0.1.44': - 'cdd52a058a4243f9e3c5a4c2ba8edacb969df09623344e45a7adfe5e61e83cfc', - 's390x-unknown-linux-gnu-0.1.44': - '3022aa438b64de7e75c8adea6b1e9650874f63d6e317e4c294d24e41e53d1621', - 'x86_64-apple-darwin-0.1.44': - '0c2deb646f49ad7dbf8db9a9a7fa839b76654569d97b1ccd9d18bea89a34b3e0', - 'x86_64-pc-windows-msvc-0.1.44': - 'f876f8c0867707db2d653973caf9ea306d65503ec772d0df9c02b6d0973fc7df', - 'x86_64-unknown-linux-gnu-0.1.44': - '68e8fda65c987cc104bdf7ae1eb332477733d44a27823032826f9370928568b2', - 'x86_64-unknown-linux-musl-0.1.44': - '1df53dac9e3a81df6fbbef36e23cd932b1cf0fad9016d943fef63d2ca284bd02', - 'undefined-0.1.43': - '0d57d370baf24dcb00ce59f6ab0d3dc2ceee41bd2c870a73fa517d3747d34a4b', - 'aarch64-apple-darwin-0.1.43': - 'e52c5f38cbcbd238fc40382252e2d40df3df1bbcc1302da86c19324285e9d27c', - 'aarch64-unknown-linux-gnu-0.1.43': - '9dd96e89be41fa12b1101ac921265538871d99947ca3b31c87713f3edc6140ea', - 'aarch64-unknown-linux-musl-0.1.43': - 'f0667c6d7e412ad40e5bbe5964e7448afefaa07d1d9c1a820090f3d555f9184d', - 'arm-unknown-linux-musleabihf-0.1.43': - '940a297a5ee1833239632c28c5570e661ff7281607e6c6da003167b70ac28d27', - 'armv7-unknown-linux-gnueabihf-0.1.43': - '1adc03865b683480c454994fd6a679607de2843e96a94d470c1e89abced8105a', - 'armv7-unknown-linux-musleabihf-0.1.43': - '84010f6b5010caba4186c7824004000687d326f91a9570e176a23ec627d5a83d', - 'i686-pc-windows-msvc-0.1.43': - '5e1896d8d83a58c8b02c328c1bcd852515ff760253622b9508228a062120f9c7', - 'i686-unknown-linux-gnu-0.1.43': - 'ce026f056c1d4cbab5bfef762d1d08f8833191d595151550419d45e4b3a5303f', - 'i686-unknown-linux-musl-0.1.43': - 'da54678dc50154ed8254308cf6f0c51c6e3fd34cf1f74f418dbdade980705fea', - 'powerpc64-unknown-linux-gnu-0.1.43': - '2bc10fa243971de5c7aa2ca1d993b431dbd191ffc0858071c4418f08983f642d', - 'powerpc64le-unknown-linux-gnu-0.1.43': - 'b624d9c4ebe991f52452b038848e3d23eba9aaa790ff1727520d21f9efa876a8', - 's390x-unknown-linux-gnu-0.1.43': - 'd3f707cf4547669431eeb557b097682265c1534e8745a029ad48fd9eacc1c11e', - 'x86_64-apple-darwin-0.1.43': - 'cf86ff709df440f3bf745af81217484d49fb9d5d6d896f3a9e1b9fd7956cc643', - 'x86_64-pc-windows-msvc-0.1.43': - '5765acc5bd938e3dd9e47b2807e9552129de466f31cb835b3c0da3029c46def7', - 'x86_64-unknown-linux-gnu-0.1.43': - '62217d8a269cd8901e84e3e197133cdb719a1fa37cd6f4afb07fab001163d247', - 'x86_64-unknown-linux-musl-0.1.43': - 'c27d81bd87b60ca7bd0119316f0026b231c0418638255400b54e1094140367b0', - 'undefined-0.1.42': - '70ad9addeb1259afe4077ed6266c1d9359929cc5fe0311463e52275600814564', - 'aarch64-apple-darwin-0.1.42': - 'd49e7dea59668962765b8aa2f3a4512b03c166042e380e7a6fec971146ce11e4', - 'aarch64-unknown-linux-gnu-0.1.42': - 'd4f1192eb260fb67a7b2f69313474c5a08bb3feb777b6ce6e9a74b3c12d22374', - 'aarch64-unknown-linux-musl-0.1.42': - '3836a7a5147f6e8826ccfe7b0a081b16b26922ef8359c26b5d678fb50c36ad21', - 'arm-unknown-linux-musleabihf-0.1.42': - '354f1d937911f9683dc5f249a4bdd09c637f34b078cd7a2ab0df1133126066b7', - 'armv7-unknown-linux-gnueabihf-0.1.42': - '7ef29721204772ab0584acf4d98a43f7a7c54a3beae090b4c443128336492bcd', - 'armv7-unknown-linux-musleabihf-0.1.42': - 'bada2af1a5cd37573ad88271e8ad6cdd8e038aa88335d667180d91cee4728445', - 'i686-pc-windows-msvc-0.1.42': - '7c31034d3869d0b38c64c3b5c066676e0f0e03b1598bc51d931d958bce4ef214', - 'i686-unknown-linux-gnu-0.1.42': - 'cd7395cb8bf4380f895d88912d872470eae7656e549fec1c2fcf404ab84018d1', - 'i686-unknown-linux-musl-0.1.42': - '0eacdfc8d3fe450fa8203797ce1cacc9a6b43e9e4bcabf2901ddd5804b1f84cb', - 'powerpc64-unknown-linux-gnu-0.1.42': - 'e7b900e759cc429baea47c6f200bf70517207388392c268bdf3dcea98727d271', - 'powerpc64le-unknown-linux-gnu-0.1.42': - '03da000f9ca22693e45b729d90eac800014d5dcefec22b74553ea6bebc0b3790', - 's390x-unknown-linux-gnu-0.1.42': - 'c9d6d0ead67084fde129e1672d14b56507cd4bc6bb96aef6b0ba6ed0ce085da4', - 'x86_64-apple-darwin-0.1.42': - 'b510fb1ba6b039acac0e1b4278ef0b8e935feea4dc8006c68e3ac4cf793a0876', - 'x86_64-pc-windows-msvc-0.1.42': - '57d82e1b0507aa7b4f2259e411dde942876888265aff04ae1eaa3575ab53fced', - 'x86_64-unknown-linux-gnu-0.1.42': - 'cf3ca3ffbd1971ccef9b4d6cf703c8cf1730b824888bf63a7f1ede13943ddf7d', - 'x86_64-unknown-linux-musl-0.1.42': - 'ba96ab47ec0366abc78f8f91613d9fed314da8ff414262535a7dc605caea5a9c', - 'undefined-0.1.41': - '8aff538cd8cb640bb12b669a6e4a09f5c077c4d39d22be1245bb93965b5a249b', - 'aarch64-apple-darwin-0.1.41': - 'c493ac2c5170d656499b7aa4a06d0c20d1c42b8b3b006b72661c747626cb7133', - 'aarch64-unknown-linux-gnu-0.1.41': - '84c7427e700888ed4fd8ccd368c69cf28212eac4a81ead1ce376631e51127a1f', - 'aarch64-unknown-linux-musl-0.1.41': - 'a334362acc469af8928df113e881638e23582d0b86eef133a58c047e904a3974', - 'arm-unknown-linux-musleabihf-0.1.41': - '8348e5cf28b04ca15e8f2d04a38ffd43daccfa3b1dd82cefafcdca8b692fcf9a', - 'armv7-unknown-linux-gnueabihf-0.1.41': - 'e0e5b30a899924516c574d9159fadcce008f5f11a5dccbdf95eaa35c24b28c67', - 'armv7-unknown-linux-musleabihf-0.1.41': - 'b4ea7eee3c6b2ed72d0f0602304f64d405ed4dc600c8879309c9876818c5e5ce', - 'i686-pc-windows-msvc-0.1.41': - 'd090a0e918b889e963f681322a3f0901d2dae78be15afc2907ded13a8534c815', - 'i686-unknown-linux-gnu-0.1.41': - '21b6ad517cf12b5ff2eb030b0dd523ca49e16d9d99136328f1e8197ec50d981c', - 'i686-unknown-linux-musl-0.1.41': - '40ed1d7ee942d25458e9d59a27a261cbaaa3433a966aadc141e48deeaa58b243', - 'powerpc64-unknown-linux-gnu-0.1.41': - '799f5a7e1ad802a8e5a7dcf3f340bbaf3ea74cc330cd0294cd9787064cd271a0', - 'powerpc64le-unknown-linux-gnu-0.1.41': - '1d80e8205503dab569b7d5d4f833a32b7163bd7770917321185e078e84f64298', - 's390x-unknown-linux-gnu-0.1.41': - 'd8ee3120408bff3313832d623debb8d2dea79ce05427daf534ee5f54e9360d81', - 'x86_64-apple-darwin-0.1.41': - 'af544d0fb0d902b5e4ad1ce574b9bcd1ced6718ede9f7a2c2c163c531b10c602', - 'x86_64-pc-windows-msvc-0.1.41': - '0d9567b67a6cc6404c4163f8b661561502440eb68698ad7be1197276717f8d75', - 'x86_64-unknown-linux-gnu-0.1.41': - '8d4782acbea2c04f34d90df25c8a7cce62e3673949d3be4a2baaf610385d5db4', - 'x86_64-unknown-linux-musl-0.1.41': - '9b0058e9fc92c96e3530ec4e1a998e435214cb3905e7284e09cf7c68f1c33c01', - 'undefined-0.1.40': - 'c842a83107554c3a90451e7e6d935aa9d3d066bc25e1cba5c66b80c10754384f', - 'aarch64-apple-darwin-0.1.40': - '28e92ed4534fa5085050fe51db0a641c319377e6498e5ee98d892ae91139f603', - 'aarch64-unknown-linux-gnu-0.1.40': - '452cd7ec339345d4067f27b6db672f02db942bb525c80c510bc3bdd7596d74b3', - 'aarch64-unknown-linux-musl-0.1.40': - 'b2fcf9819a5fb53aa98a0fc19ecee6bcd862969886de9d63fffe9b3270d284d6', - 'arm-unknown-linux-musleabihf-0.1.40': - 'cbeada3fbd6c380aa5524e8e963558da11a214d9c416da64428d92af555567f6', - 'armv7-unknown-linux-gnueabihf-0.1.40': - '7ae8180326f005e12dfc8be04c2f88c54efba020d5bdfe49608e1b3407956e55', - 'armv7-unknown-linux-musleabihf-0.1.40': - '0c1aa0c94457412d466798e565aefbd11e9de4e1b2d4dc9ac0ae45c91d01857f', - 'i686-pc-windows-msvc-0.1.40': - 'c985f0339bc7375fab00b4a06d1e215017516188040202dae9d6147196a4bd60', - 'i686-unknown-linux-gnu-0.1.40': - 'e1e5c191d4b5634be80a7f4e79484d58190848253a43c678b8c9a8811483fe93', - 'i686-unknown-linux-musl-0.1.40': - '2b6cc95ea515a50d8da69536eb68478009ec7ae0fc94a13f584be11eedc4a4f9', - 'powerpc64-unknown-linux-gnu-0.1.40': - 'e7d56ee62672e809ddcc7f90b863d5f1a0d314fb613647abc830526b0161b975', - 'powerpc64le-unknown-linux-gnu-0.1.40': - '8c5217c8b58824f1939748818fbd0eb57d35196b361c1dad774bbb2ff0b38869', - 's390x-unknown-linux-gnu-0.1.40': - '60689531d1a4308396dfacc16a466749730fdcc9c5fced509172349a2f5d9b58', - 'x86_64-apple-darwin-0.1.40': - '9b29374bc79dc4cca9b6e82e420867a06806651f814081987927fec5bc3ea85a', - 'x86_64-pc-windows-msvc-0.1.40': - 'bf3845b59aaf6bb383c6caf89eae949a18106387be154fb5b2ae9a4e4ed646a4', - 'x86_64-unknown-linux-gnu-0.1.40': - 'd9175308fcd2bd4b953b05cee66a022380ba493c01b2d35884684719d599299c', - 'x86_64-unknown-linux-musl-0.1.40': - '7a5a1173ba3319f176167bd32544ad5d8edf0f38c753820b5627b036c74aabad', - 'undefined-0.1.39': - '56e3247a49c76a42c7f686292d8f706110a308c45153913b165657f8db8bcbf7', - 'aarch64-apple-darwin-0.1.39': - '35e320cfa41c8902d66e2c491b5b2d2414e1c6443177c660736de657c66fb2c2', - 'aarch64-unknown-linux-gnu-0.1.39': - '62b24363f21c07e02f62cf8e298ee6ec30e844006f3a52ac55c02903c755586d', - 'aarch64-unknown-linux-musl-0.1.39': - '1a77b4cd4bf6ab52efc780fb252097184c23f81233a8f508e49939eb2e6e690b', - 'arm-unknown-linux-musleabihf-0.1.39': - 'c8f628862e665199b82826db24db3007c16c361c8d0f31d8dfbd4be2d7aefdfb', - 'armv7-unknown-linux-gnueabihf-0.1.39': - '63342dac1cac572f8f12b179d91fcb0527f115f6a7ef17ba7aa24b699854cf39', - 'armv7-unknown-linux-musleabihf-0.1.39': - 'a9013c428f1505e21e56715e6c91a4e45367b7eb341a14a51663e61305cf7162', - 'i686-pc-windows-msvc-0.1.39': - '53e4c2ae32318699a5f6c4c7f19f1dd114b39b15e63704be902ff894b428dfed', - 'i686-unknown-linux-gnu-0.1.39': - 'f0280538ed9bc68283606e4db031f9cc4c4c8404dc5719e9d1f03f705762966c', - 'i686-unknown-linux-musl-0.1.39': - 'baa9ef041ed3834d7e5869b10945bb804449e23ea0ffbe91a9475bc4c4e83fe2', - 'powerpc64-unknown-linux-gnu-0.1.39': - '5d0312a1ee77d652115a21021f47e374886e84e8d986f3a1bcaa7e5851cd2767', - 'powerpc64le-unknown-linux-gnu-0.1.39': - '07b1856e71c35f93ef5359c54f63d819841762316bf4d7c2774e178412d9090c', - 's390x-unknown-linux-gnu-0.1.39': - '773725ad1e02d6f4c90494fad5309a7cb4ce03b2e377fad336fecd895bc42dd2', - 'x86_64-apple-darwin-0.1.39': - 'cf5393f17de6961c7140d68f80e09c1f43ef47f8fac923ccd41896cce698f296', - 'x86_64-pc-windows-msvc-0.1.39': - 'a44eb417b0c1e1c7cffd7349b8019d684f6200d0b5cfaef7dc322e8312bb254c', - 'x86_64-unknown-linux-gnu-0.1.39': - 'e748caea4ddafd3aebba771f4e8f51fe5aa517b71151a648269b3be982a349a1', - 'x86_64-unknown-linux-musl-0.1.39': - 'dc57b6f64ae82fe604390e05cf66092fe598ae0fd0fdea9d568f6c4874fb3fe2', - 'undefined-0.1.38': - '1fde633a2c16b51e43f346681471b3daf26e2b918a6d13de170eada19945774a', - 'aarch64-apple-darwin-0.1.38': - '9ed4dee0e0f3da47fc85264fed79ea118f66043481ad71182c21e838f4f207dc', - 'aarch64-unknown-linux-gnu-0.1.38': - '8d5afd982060a11748a46b4ca8ef9a2aec52ea4736419dc7c0dc53ad98843454', - 'aarch64-unknown-linux-musl-0.1.38': - 'b15f7f84f0975825f6f0e2f10ec0ad49ad3bb48d6b7bd89f058e578a939cf383', - 'arm-unknown-linux-musleabihf-0.1.38': - 'df7fd36d0de1d751f091c431d955b9d0a5cdcc74f446bdd65b91aad97cd016d2', - 'armv7-unknown-linux-gnueabihf-0.1.38': - 'e0a55e1dde1d1421a10d4706a8e79f37039fd57026f02e629e93b6feea504cfe', - 'armv7-unknown-linux-musleabihf-0.1.38': - 'b1371b764e2840e5a4ef3567a36626b4aaac2ede2165d42e5ac19683ae4beaf1', - 'i686-pc-windows-msvc-0.1.38': - '4acad6296bb67eb9900fefd0ccca8af7d770f485f40c0545120e7b452ef7a0dc', - 'i686-unknown-linux-gnu-0.1.38': - 'c7065c75b52ba3b9eabb69378e01a1a5d4ca0f80545dcb8a027080fdfcb112a3', - 'i686-unknown-linux-musl-0.1.38': - 'b65b24356366655aa112c18205d3214fd5fd3eca80888392f7b1e25d215f70e5', - 'powerpc64-unknown-linux-gnu-0.1.38': - '2eaad33bb7d742498aec2dc6ff52ebc82103347db74ccdf202e0dbe2047815a9', - 'powerpc64le-unknown-linux-gnu-0.1.38': - 'a1110c55b4383fb0dc967ae0ee3950499915d34d69d10c08c39d66340f28651a', - 's390x-unknown-linux-gnu-0.1.38': - '537202439156061acea27ef3be90c524368ceffa642f43333dbce223c35be866', - 'x86_64-apple-darwin-0.1.38': - 'f35f8e07f66109867f10bce591188e5a54a822344517bf5150fcd28c616b744e', - 'x86_64-pc-windows-msvc-0.1.38': - 'decfffd2e6e707b7b51b0981a51d6d277e8c15aa904be3c820dbd46b35a35a95', - 'x86_64-unknown-linux-gnu-0.1.38': - '9b19bf6067ebb2e200211a300f0721e35144424f8f0f703dfc50c0bc745f69df', - 'x86_64-unknown-linux-musl-0.1.38': - '29635ef915c1bb4048720e6b5e19f424a5a5f3934adef5a0e036295256c098df', - 'undefined-0.1.37': - '158c7d7a9bfe2dc8430eeaa1e985a883d241745fba1acfb75e8d2242169983bf', - 'aarch64-apple-darwin-0.1.37': - '1a160798d79a626a06e16634d77315e9dbe363ab6bfdaef424f7b5bffd30cab7', - 'aarch64-unknown-linux-gnu-0.1.37': - 'd59ed726780815d48f95bf4f7a2d9c41aaa05fc746d5a8af49ae11d7e1f3f34b', - 'aarch64-unknown-linux-musl-0.1.37': - 'd86cc49c68c9efd1116fe164f4be14d096d20f846ea50fb02148cb44ed3d920f', - 'arm-unknown-linux-musleabihf-0.1.37': - '2ad8488bbc2f519bcd2a4435aea33ba79c0dc71fd61f90d898964a02068b8aab', - 'armv7-unknown-linux-gnueabihf-0.1.37': - '86441af7ba294abf25ffd60a452955db4e8610490bdaf8c054976bb31d96baa3', - 'armv7-unknown-linux-musleabihf-0.1.37': - '7b813fdcadffd54e629dc65541edf2d90d043083e32def8332bf87ce2443f583', - 'i686-pc-windows-msvc-0.1.37': - 'e676cacfd871e33e7c4972ae241ed6362e20159261f9da8545a3816e436b59b0', - 'i686-unknown-linux-gnu-0.1.37': - 'bf4c37a3aa6ee61a409c89261593909756dbbd86b0819d5003dc3ac83aa081e1', - 'i686-unknown-linux-musl-0.1.37': - 'ecf205ac1196602877ad24d1c5fef5c8688d66262d358fe818155190ff0ad8a0', - 'powerpc64-unknown-linux-gnu-0.1.37': - '4a0cc47732dada5ee1e1392fe6ddf6e2947a6bcb0b61e83936eaf1ebd363b5e7', - 'powerpc64le-unknown-linux-gnu-0.1.37': - '70764f4145e931dfbc195b4f6c2ac592a776b34402480de8dc6145cf2196b7e2', - 's390x-unknown-linux-gnu-0.1.37': - '222b3567a5ce77b4ee0b8732cd18a34a88e31e0c5230c652609da922b83d7d36', - 'x86_64-apple-darwin-0.1.37': - '61502d8054f12aafd56ff193abca0606f688fb7d84cea40e94ff3de5a0cc950f', - 'x86_64-pc-windows-msvc-0.1.37': - '6bc00aec8b4731a7883b88d27450c959055a24a1f5858777313addbe850a7cad', - 'x86_64-unknown-linux-gnu-0.1.37': - '33cb815958a3e84b929dc06d42bf5170a5a5eb60b413f2243b4e62e75edc3e49', - 'x86_64-unknown-linux-musl-0.1.37': - '2c591eaa0be3711dce1ad6d07a7564c8738b5c16b009c84037727f94c073a962', - 'undefined-0.1.36': - '1d7cf52af7406ddabc4feb66dee5c4573f7b22a5ff73fd8a5b47dec7897c8e7e', - 'aarch64-apple-darwin-0.1.36': - 'd37641e38512b7e55b9eda7f8a6cb831375b5f1e86f0f326dfe0e6a8602ca7b6', - 'aarch64-unknown-linux-gnu-0.1.36': - 'c64b7d23c3e27346a5b31a95fc16663407bc72aee0b17eb0aa9d069e312e606e', - 'aarch64-unknown-linux-musl-0.1.36': - '89740c2cb16bb57dfb125764fb889f86b225cba0b8691b2bbf30baf96d2348c9', - 'arm-unknown-linux-musleabihf-0.1.36': - 'a802fd2c6ccd2ca8dcfe85fd2c5fb58689c5c082e6ce8e3aa1b1436031c70879', - 'armv7-unknown-linux-gnueabihf-0.1.36': - '07b8fcdcde9f43c94ab4d5296c1e8c86f41589f4d8d15f124311bd3c1f019777', - 'armv7-unknown-linux-musleabihf-0.1.36': - '78026455886e3c264eb952c92d2795d19cffddf529651a2d8f20cadac4ad31f8', - 'i686-pc-windows-msvc-0.1.36': - 'e945b6a176ee08d7440703eb4a975a8b7d383b8e9b480f724dc5d614a90a080a', - 'i686-unknown-linux-gnu-0.1.36': - 'b1ef60a4b5b153a3c11e9177e2d72f334e1c7d9311bea75d42faa8ac8c9d4e42', - 'i686-unknown-linux-musl-0.1.36': - '7fbc9f02618d22f54644c29c65cf6d5ff3cd813f1fcc26cdeaf3ae393057f604', - 'powerpc64-unknown-linux-gnu-0.1.36': - '678a5fba4ec6b6d52d6de833a447b288869df501ba33399ddb437977bac14efc', - 'powerpc64le-unknown-linux-gnu-0.1.36': - '873a0531ba05ff56ee452365e4ef9c40acd4c4e6225c250e6a6c4c65d728ef70', - 's390x-unknown-linux-gnu-0.1.36': - '14b4956ea11f85a43031509c6d01e8bb941d946f974d405f3cf5dc65500f47fe', - 'x86_64-apple-darwin-0.1.36': - '30e3e1156c38e335b969d999b83d9e9f6fa5d497c80e5cdf1c43339cdbbd02bd', - 'x86_64-pc-windows-msvc-0.1.36': - 'fd43e117e08414970f84cddc6300c5fbd5096be8f9c981d5b3464c28720ddcfb', - 'x86_64-unknown-linux-gnu-0.1.36': - '7108a5709273156a176394d6da4b64f63b3c658e350657978eb1ba4c9e287e02', - 'x86_64-unknown-linux-musl-0.1.36': - '3c95bc263adcab13ae5c7e9a0c97e9de5037f8926294cf22902d04eb99f951ef', - 'undefined-0.1.35': - '033df44758caf9a2d81675419c9ba3bfd9a15255e670078b236b373a6ca8cef9', - 'aarch64-apple-darwin-0.1.35': - 'd5c0740e4a64c5d79150f1e819d903ec6281906bfce433bfe599312de7994435', - 'aarch64-unknown-linux-gnu-0.1.35': - '70721a0535ab34354b2fab1461c6ccfc5949943ad34bfec179f4558aa331635c', - 'aarch64-unknown-linux-musl-0.1.35': - '59e4100cdad71bcbf4618516ba860b1829c3b2f255bee00794b5ae1823cd1388', - 'arm-unknown-linux-musleabihf-0.1.35': - '4832abf5ab1c3d238e35a1634c6cb62148f5fb722e48d498c1cb10876efaecb5', - 'armv7-unknown-linux-gnueabihf-0.1.35': - 'ebdda308333bf6ee351f0f225d7076697c316e6f671a23caa8922f876ba2627c', - 'armv7-unknown-linux-musleabihf-0.1.35': - '6ea7e2e6953bf3afcc973fea7aaf12ada410407432d86e7665ccd641c503d739', - 'i686-pc-windows-msvc-0.1.35': - 'af6066ee9197a675a6138a118d3125890468ea036c81d3d3327329830ad3d587', - 'i686-unknown-linux-gnu-0.1.35': - '9ad7c1b2a4555b37e54f3e999482d0301e8d030ce3e99627b0fcb1435e853203', - 'i686-unknown-linux-musl-0.1.35': - '41be10fbc59cbd7a059f0fbd33440c7b034086d36395546856f2076cb562b4c4', - 'powerpc64-unknown-linux-gnu-0.1.35': - 'df17a85fb14b5e295bf45a2e371ca0f78463ac66b5fa6d1c1f51f22f3eed592c', - 'powerpc64le-unknown-linux-gnu-0.1.35': - 'd6300efc3079c3d7fbc861a1907c76c9e9f79bb0b3b6effd39bfeefb38bc9bc3', - 's390x-unknown-linux-gnu-0.1.35': - '6fcece3d517c4a47e4dd40ef8cf40c18bafa88c22f7846abe80f10ae494260a9', - 'x86_64-apple-darwin-0.1.35': - '9de159d413f235d791377ecc7266b6c1b076c8a638772f04e6dc05fca32b6b4a', - 'x86_64-pc-windows-msvc-0.1.35': - '543ed32847307ef50b5d21c1f9f4968e1e8c97e75a5899f80de5a6c26cd61888', - 'x86_64-unknown-linux-gnu-0.1.35': - 'ae2081221ea244e4998b89c408421e9922499fecf371c7310cfa0e951bff2a9e', - 'x86_64-unknown-linux-musl-0.1.35': - '9abd44dfd8958e251a3b29a1eb95f152fef94f38fcef8bf534b86fd94ef89e35', - 'undefined-0.1.34': - 'ff93be812726a344252374ba1751b0089237439077a30c9214fb9a44bc32582b', - 'aarch64-apple-darwin-0.1.34': - '40233daeac0eca7ea233b79a8f312fb9d85913fc74547031c81f2ec7c3f3aae0', - 'aarch64-unknown-linux-gnu-0.1.34': - 'e4fac2f30a2c8e1773b08d4f50994c484a8166f64fc2cf0ed19ccac62f5d01a9', - 'aarch64-unknown-linux-musl-0.1.34': - 'e13bc0a5fa7aebdb83627cccb95d50d202d6c1d08ec3bc8ff035abc6c5438edf', - 'arm-unknown-linux-musleabihf-0.1.34': - 'ad0fb8ab07cf301192a829684c8f3b0fc3d024d7e75297c2ed4dddd8d249fc89', - 'armv7-unknown-linux-gnueabihf-0.1.34': - '48b5588ad3ff90944a13c24744a14964b68a99fac7694d9a79f4cf38aa38b386', - 'armv7-unknown-linux-musleabihf-0.1.34': - '7591b8ee28f1c79b9fa35a32a3f3af32012a221f01851a9747e2686dffe735d6', - 'i686-pc-windows-msvc-0.1.34': - '1dd6e548b6f3f661152fed143257184439b819334d7f1124aab015a4919dd4e6', - 'i686-unknown-linux-gnu-0.1.34': - 'e5b8ac197e33d4884cdeaedf48a90bda44dabff330c194ca55ceff769dd8dcb9', - 'i686-unknown-linux-musl-0.1.34': - '2d43d99471b8dc32f6776559769d9dca1c9b587445f9be12ae751d7c58947f06', - 'powerpc64-unknown-linux-gnu-0.1.34': - 'a6774692b35f66f871c537e0133d4e1ea629862c73dccd6221307a609f7b4cf8', - 'powerpc64le-unknown-linux-gnu-0.1.34': - '8ac52b6ad77eb013fa289b42f465b9ab8ba5f861cd76c828c69aca6121682cd8', - 's390x-unknown-linux-gnu-0.1.34': - '2d394cf56c1f81b434e45aa0df61b48241675a5b5c97b91b6d511827aa0f2ea4', - 'x86_64-apple-darwin-0.1.34': - '2f6933cf0e10e99cb3575deebcad5cc143961a3da167c4b21eff4d600ef872ec', - 'x86_64-pc-windows-msvc-0.1.34': - '98c824618c808cf4ae1af16c5341086f0038e0dc1ae7e0a805c872d6fcc033b7', - 'x86_64-unknown-linux-gnu-0.1.34': - '1d3b075c89e5763ddbd19efdaf03d6ad96a753db889a28f5127227c40bb9f0bc', - 'x86_64-unknown-linux-musl-0.1.34': - 'bd162c354d0406c5ce91c0b16d130a62edbac6528ecd90a7f5b3f2d315f12df3', - 'undefined-0.1.33': - '54a67168f4c5cdf44f4197e948cf4ecb65e71001f49584d79eab82358bbda813', - 'aarch64-apple-darwin-0.1.33': - '6e6af126bfc34a9d0e02641bd99fda1201a81356455ee4f196b760b3d995cb7a', - 'aarch64-unknown-linux-gnu-0.1.33': - '12f04ed3437f06ce6fc0384958e4dbb74c441bd9b46d5f83b8342c6c9247da97', - 'aarch64-unknown-linux-musl-0.1.33': - '580542f3997a10191091cbc1f142e1526afb9e98aa6ba0a709245cfde2d99d99', - 'arm-unknown-linux-musleabihf-0.1.33': - 'febb8276163a99d18fadb04f9dbe298e613b1716c5721a3e2433c2da0fd9b69e', - 'armv7-unknown-linux-gnueabihf-0.1.33': - '0302de0a1f48ae05a3a0f7d7924f8845012628fbc55da590037d433bc5977e8f', - 'armv7-unknown-linux-musleabihf-0.1.33': - 'db82699a990ab3f37709dd0108a336d1cf3e9d3d0f5cd906795eb1a1d0758714', - 'i686-pc-windows-msvc-0.1.33': - '753a1ef176fc87846a48eafdda3b0b5e0a3e0e70a746f6868e6c8c097c6322c3', - 'i686-unknown-linux-gnu-0.1.33': - '7b55900bfb6423541fdb129ca34396efb614ebfcb8e40027d7861907278f9258', - 'i686-unknown-linux-musl-0.1.33': - '302f5755e99fe449664135069e60be7bfbd931d09e22f6447fc0f64c82a464bd', - 'powerpc64-unknown-linux-gnu-0.1.33': - '8b007854d21401c41cf2084e21664981aaaa7cbfa5df71365858d12470323823', - 'powerpc64le-unknown-linux-gnu-0.1.33': - '02ed93b767b1d4a2d69c61932366104bd016417980cf71c1f898fcd93ec74232', - 's390x-unknown-linux-gnu-0.1.33': - '4341f067c105607d971dca3d9c79cac59b3e8cf4f8f61a50fe87b6236d97cc44', - 'x86_64-apple-darwin-0.1.33': - '3e32e8242b32c1231a45888134b5615f45bfd938fc865d82f270a9ca76ab1a90', - 'x86_64-pc-windows-msvc-0.1.33': - 'b5adf2b7abdd72ab763a1a65624bdbde178797387c461a6e12803157dbf62fee', - 'x86_64-unknown-linux-gnu-0.1.33': - 'c582cf587db50ae4dd50360c5bc5dffce110c7e457f1dc1955fc6ad447bdfcce', - 'x86_64-unknown-linux-musl-0.1.33': - '6a9877d92235c225ba82d18a6960489a8463716ce1f858f793b971f4aa2f7abb', - 'undefined-0.1.32': - 'c0fad19c5c03cfbf104ccb8e21c510aa556f5d296ad83a5faa737b4dc763a932', - 'aarch64-apple-darwin-0.1.32': - '2f33ca87c17c27d6c2e7ac45b26e19de1a07fcd5e9312670a7bbb90634278414', - 'aarch64-unknown-linux-gnu-0.1.32': - 'ffd433c6508a165f29688694b436289214c5f4569ee62e4b8b00a95dcd661cee', - 'aarch64-unknown-linux-musl-0.1.32': - '5b19aeef841ad88313afa80dd56198af6a33c3be2f890936e88e5ee197b914f9', - 'arm-unknown-linux-musleabihf-0.1.32': - 'ee9a2df7647689dac93f7e98f0f71ea04977b9cbf899a56b061aca594542a8c0', - 'armv7-unknown-linux-gnueabihf-0.1.32': - 'ec316ac2dc8d5b8ba81e3f19f4550bbdefa5c36ef2a8a7bc90afcc82f37e3f96', - 'armv7-unknown-linux-musleabihf-0.1.32': - '43c0dce83f4450ee6442ad768071f834e0d4dadedf333e3d6ff9d2e9b23f0487', - 'i686-pc-windows-msvc-0.1.32': - 'df848217d4ef5f7a0d55572ac307bccd0052d97c5be21437ec717bb9e461d85e', - 'i686-unknown-linux-gnu-0.1.32': - '93c79fa1bfc8d558176cdb5a457c106e3327a5a00c01127d099310fcf312c8d7', - 'i686-unknown-linux-musl-0.1.32': - 'c6804b16c453d08acfb0a62a9e537d526447df06bf6eba2e70b407dd620ccecc', - 'powerpc64-unknown-linux-gnu-0.1.32': - '2b69efb247e543134ac2a5cc662b90f73ed1a2f23eb0a09475db16a82ba7bfa7', - 'powerpc64le-unknown-linux-gnu-0.1.32': - 'a421a69614e9600df89761193f947f8a1411636dd676a7eaef2f8a38e30d6a51', - 's390x-unknown-linux-gnu-0.1.32': - '4a6e350dfe0b13b56a0877ec033f97c6e24283dd99c9664c755a9ff79a97fd06', - 'x86_64-apple-darwin-0.1.32': - 'd3450c42b890767f2bad09e496f35f392e0d52f502a0d12b207371852b013a44', - 'x86_64-pc-windows-msvc-0.1.32': - '4df4192f5c7824bdfaecd4d3d8fb6310ced6e0980592d5d44b7afed88ef89ff0', - 'x86_64-unknown-linux-gnu-0.1.32': - '281204339346c00f395332cec43de65bcdd3675a7dbe17b5d8d1292d7854679a', - 'x86_64-unknown-linux-musl-0.1.32': - 'a9dc63f9f48a1964340488e4d139d64b59fc14b06733a165af06d1857980dc97', - 'undefined-0.1.31': - 'b5b97391649fb35d588a7f741339e8862b731d2d31448462758428cbd8c51536', - 'aarch64-apple-darwin-0.1.31': - 'b00f0d2fbeb2806790b18294c0bf82ae8e69043a7da29d456b369202b261aef1', - 'aarch64-unknown-linux-gnu-0.1.31': - '9de4de11f1297a96aa731cf2f8ed7bc2e85405692dd3216d50685062b877ec75', - 'aarch64-unknown-linux-musl-0.1.31': - 'fc4127da459a7f7264662faca4c697c71ac5c5a13dc92354520453e1f62426fd', - 'arm-unknown-linux-musleabihf-0.1.31': - 'b2781e289f12f47e7f6af9e908c404e9fb47c74935f3c5d71f6bd34e68c2f88d', - 'armv7-unknown-linux-gnueabihf-0.1.31': - '3ef451b3f6dd065a17b3f25d945e3ff0084e2d29c2487ba2cac01f55caa19368', - 'armv7-unknown-linux-musleabihf-0.1.31': - 'ed6888e8c090593857b9112af8cdf918053e09cf26cb960af73c66f2fe708e1c', - 'i686-pc-windows-msvc-0.1.31': - '84b3a4480643c722d7b5a53b219d9e4546b428b9acd5bf003584e3d458b61a4a', - 'i686-unknown-linux-gnu-0.1.31': - '01e6a76d251f692fa18630b99b0dc941b11ac9d08cd01622272892f6a75708a6', - 'i686-unknown-linux-musl-0.1.31': - '8e3a1312a7d54dc05e661c2af91164b27ec6ba992d37af7c32611c83d970b00e', - 'powerpc64-unknown-linux-gnu-0.1.31': - '74ec1054cde973ee495dddc95026f12fa7cf584c1b67b728cdcad118d6524b33', - 'powerpc64le-unknown-linux-gnu-0.1.31': - 'cdb328074d4f795fee91fbe7e6930149f8b7b5a7921d96e5d7c00b574a4583bf', - 's390x-unknown-linux-gnu-0.1.31': - '90fc1a8614195626642470d4e31b52fd3ac27d5d12df4fe81e008568822c5017', - 'x86_64-apple-darwin-0.1.31': - 'c10ba963e651ab09a5b1cbb8ac1d0ee74c8f7dca99eab7d41cb9a35b5b7c06b7', - 'x86_64-pc-windows-msvc-0.1.31': - '980833bbbbcffb3cf0e2abaf8963cdccfcb4cd378ed980a4168be124efda5c0a', - 'x86_64-unknown-linux-gnu-0.1.31': - 'f5b4508eb49d8d65fdc712267d18312f4e3d67f168a8d9b4bb24a28bafdaa831', - 'x86_64-unknown-linux-musl-0.1.31': - '02ba313bd081d2a99137f123e30692c991d0c6d9e190bdf403fe5b1a53c2bc2e', - 'undefined-0.1.30': - '72c816316dc84a6daceadfb856b70f046db7d1a473a16a8bdea5041c786c1693', - 'aarch64-apple-darwin-0.1.30': - '2efee289f003bf2033a44396886836dbff9d4e76ad2e0ef6d81d7a39a1068c49', - 'aarch64-unknown-linux-gnu-0.1.30': - '169e02774fed015ee7e780b614548f2c0aa9041a6cfb99b7f57cd9bfdebcb367', - 'aarch64-unknown-linux-musl-0.1.30': - '35883d461fa233b076a9643e4ca5b0f61ddf0dfc46d545156793beec673acac6', - 'arm-unknown-linux-musleabihf-0.1.30': - '673f9a4297e555507cc3e0228693b94d0e2f689022cd04076c49df2b0e84b6ea', - 'armv7-unknown-linux-gnueabihf-0.1.30': - '79475a7560e463c484acee1f0da822c32316bc08086445717b5cbb813821593e', - 'armv7-unknown-linux-musleabihf-0.1.30': - '168ddee00a64eef97a709084ebafb822bf47ac1fc4962cf44d60a64fb5b8d4c5', - 'i686-pc-windows-msvc-0.1.30': - '9c057e5bb6e86da7477fddea1f942cc605c7b780071875fb9b4c3b1931083199', - 'i686-unknown-linux-gnu-0.1.30': - '2e3e0925aead2a8e6e2a5dbaa36ac8c292758398d412eab6b01c0651d956df1d', - 'i686-unknown-linux-musl-0.1.30': - '6df4acabcc41139433f24d37e4acceeb576826f651b815f3f363afe467e5c5ae', - 'powerpc64-unknown-linux-gnu-0.1.30': - '57b9885562cc038d0e784c5875e9e03c7dd13f0b6b3f5fceffb573891ed1b68f', - 'powerpc64le-unknown-linux-gnu-0.1.30': - '02f5f9e086980b4429d51c8e73ee5098f69f00edd0684465cc15ee7e2d5eeac0', - 's390x-unknown-linux-gnu-0.1.30': - 'e16fdb1ca6941eafdc4ff992ce8e7905c493da3a64000dd7bd362bfc75766627', - 'x86_64-apple-darwin-0.1.30': - 'a99071ba49044263a24be61aa8341bed035d15f3f1023e3e29eb4522d978a485', - 'x86_64-pc-windows-msvc-0.1.30': - '0f8a4b6d093a91b638ac1c9683ed484c491e19911249ce64c26cd31501a90206', - 'x86_64-unknown-linux-gnu-0.1.30': - 'bf102d20cf00bd2c001610570b6cd1409b63db3f5cef6b55e386d64f3d4724a5', - 'x86_64-unknown-linux-musl-0.1.30': - 'ff073ae9fce030fab64d1b93fc7a4688a0495eecac7316d55e4dc08a9283a326', - 'undefined-0.1.29': - 'dad20061d2e13b281925c26f6e1f0872852d095774b241ca8d963a13da4f4249', - 'aarch64-apple-darwin-0.1.29': - 'a5f4cf59f873ea6ffb8d1c11468936f508e444dba0c8278b8f550e811bcfe77f', - 'aarch64-unknown-linux-gnu-0.1.29': - 'f4227d02eecfe3f2a7cfb42b25630dd5a4e5f5144231b84b5acdf6be0158a468', - 'aarch64-unknown-linux-musl-0.1.29': - '22bf69e1cef9958774751b2770278a0aebaf132c51c04cc6800f0884a18273c3', - 'arm-unknown-linux-musleabihf-0.1.29': - '54b34a71c3d3f011f9920caf0b8a9081a62ec16c77e0c69e947c888782f5f6e6', - 'armv7-unknown-linux-gnueabihf-0.1.29': - '86c73423657e91cc4e5e1d541f6a061678bb098bb23b74fc44d79524523031af', - 'armv7-unknown-linux-musleabihf-0.1.29': - '76108491438a15f9acae142afdec5ca0ea31437ea909240a2534bd7aa45ac96e', - 'i686-pc-windows-msvc-0.1.29': - '3dac7e8f710f723accadaf876b7034cd1108509e95fb1ad7fff3a8bf579bda3e', - 'i686-unknown-linux-gnu-0.1.29': - 'e117aa0b4b1f588699a4259d4e7485938b6aa00d2ab21093ab0047304450fdf1', - 'i686-unknown-linux-musl-0.1.29': - '690682d5103b907e43c9704fdd26e5f09ad68894b8135db823b391adef654a91', - 'powerpc64-unknown-linux-gnu-0.1.29': - '27aa0b5c7e2278ad74afb27f1f2843ccd6bc0c1c8674e6a10e0bcec73e660012', - 'powerpc64le-unknown-linux-gnu-0.1.29': - '90cf042117be9de01e9e2348a7200954fc25c6989b41b4d5e995b8f42dfa5fcc', - 's390x-unknown-linux-gnu-0.1.29': - '4242e2cf825ca433947d44d985eecb11460638f1a8427cc9fe6fa6b70de86c6f', - 'x86_64-apple-darwin-0.1.29': - 'cb51b2f22f06e99f79ee85f3d353a93a9c25ad674f150490e391166a97fa6db8', - 'x86_64-pc-windows-msvc-0.1.29': - '7926be66598e6c0f2b07c6db72a1d9c61f7b1cce72663266dcdcbf4055e1c9a3', - 'x86_64-unknown-linux-gnu-0.1.29': - '59e9df30439a01e6852da3f62615d6e6fb8fd79029ee86c7ffdd3fc06c76a84e', - 'x86_64-unknown-linux-musl-0.1.29': - '72b43a0e804d033d4064b57acfbd95671abfb0d2c0ddf11bfaf779efdad03e94', - 'undefined-0.1.28': - 'd6d23768a49cc7ba3a67cded5e826370c6f9e7f5ce6aa69743c5a5deb2f7e08e', - 'aarch64-apple-darwin-0.1.28': - '3892e0a04ced4e8a1c900a7577a0c0805f362c5cbe13abc9c822215cb8f2317c', - 'aarch64-unknown-linux-gnu-0.1.28': - '6615631b7f8eab6841de405f1978114bba290540fc8b581d4581133dd43d3635', - 'aarch64-unknown-linux-musl-0.1.28': - 'e6b3421876506904f6aee949303403f5065b00a3be3b799fc921c88e9652bacf', - 'arm-unknown-linux-musleabihf-0.1.28': - '23ae513903449d357a452553b9f4f59d7b852507615ddc79136a3c1cec48e5d0', - 'armv7-unknown-linux-gnueabihf-0.1.28': - 'e6595be0cc281eda4833ea6d398d030a0f8a4f23634004b83a6c0e52805cce78', - 'armv7-unknown-linux-musleabihf-0.1.28': - 'f24ddffcb5270cb297a5ecdc6a4c59f8be74e47772ddefa26ab2f36339be53bd', - 'i686-pc-windows-msvc-0.1.28': - '1eddf62f14320c1049294d2aa3ddefc10f8d309a64735e9b06b1a02e587bc134', - 'i686-unknown-linux-gnu-0.1.28': - '6f5627bce734f3a4d3fecb20a047346158d166970e38600eb4c2e4381a3749d6', - 'i686-unknown-linux-musl-0.1.28': - '411d3c65c0fe26abc5d6fdc81b3fa5b8a9baf4b431897a52c840779ff1483cd4', - 'powerpc64-unknown-linux-gnu-0.1.28': - '39cbd9850e5f40eee31d72403321e00faea9179406d6a670db79b3698eaadf8f', - 'powerpc64le-unknown-linux-gnu-0.1.28': - '5a32ff73dbbb335a4b30326ff40b731ce91118d8c792967e274bf43c8811ddc9', - 's390x-unknown-linux-gnu-0.1.28': - '09b41889c9a2c6735f8e8106c31570840ada321c7e574c4e9180ef8e4670f6bc', - 'x86_64-apple-darwin-0.1.28': - 'a126c460b6cb471c5a9df400773a1e918fdb481db13ce56d072feb5487cb13e8', - 'x86_64-pc-windows-msvc-0.1.28': - '5ef7961cf2f35e6df6029c7c83ca3fd08042c9c8b2c692cdeccb19c2a19eb7a6', - 'x86_64-unknown-linux-gnu-0.1.28': - '8047abff126ceb1a0e6c3e4f7a6420568e3421b485533f22f30767302ebae235', - 'x86_64-unknown-linux-musl-0.1.28': - '2c50282284cf8fdbfa605f6c7c7f2c407be858cc1d36c545571d302da24480c8', - 'undefined-0.1.27': - 'ca9be4a2ba3ed1bbe4f91530fd65f44e704f968f12c80728d755712f7e5c9d18', - 'aarch64-apple-darwin-0.1.27': - 'c805ff702e7b5557277154e5d97b0456c811475a704590de8f4e14679efd276b', - 'aarch64-unknown-linux-gnu-0.1.27': - 'ab1eb8b6e1f7ff05083a03811e33dac1324b20d109747be2aa8f8503800a949b', - 'aarch64-unknown-linux-musl-0.1.27': - '7c07173dede199d35061e53827901808dd3cee423ff983e16cc6f5af3343b145', - 'arm-unknown-linux-musleabihf-0.1.27': - 'ee63d702ddba49e41ecb4073c1ccb75199d61f805b749b9c240c7ae706e641b6', - 'armv7-unknown-linux-gnueabihf-0.1.27': - '8a0d62408d061c240fd2db5a50424eae1b37868dbfef9693d8aac2604755a327', - 'armv7-unknown-linux-musleabihf-0.1.27': - '3082a815c196f75d80b7104268d6d0c7eb188445fbf5a556d744fd07c371ff94', - 'i686-pc-windows-msvc-0.1.27': - '159ae0ab972533827a8a1374145506dc7c761e41f932318b90c5f704d04b6579', - 'i686-unknown-linux-gnu-0.1.27': - '1e44735218fec4f95abe3b113c1f7001255a8867166bb007b051f2c930fe0ed3', - 'i686-unknown-linux-musl-0.1.27': - '7cc8aab8f6893736847a39075986ed35acc30f75c943202381e287dc3d5a78da', - 'powerpc64-unknown-linux-gnu-0.1.27': - 'e12e774e4caee36410362bce92ce57f08d438a29178152bc03d097809941b733', - 'powerpc64le-unknown-linux-gnu-0.1.27': - '721b6e0dafdd8465d19a22104fc500eb81e9dee1792faba032eec0cea2a9fbca', - 's390x-unknown-linux-gnu-0.1.27': - '4e0697704f335912178816063cec97a5d43da5723e029559ffa245ed6fb73b27', - 'x86_64-apple-darwin-0.1.27': - 'd2382aa0fa9e42be04bb04132b94765d3f69aeac79c9d4ad3b6066269d0195be', - 'x86_64-pc-windows-msvc-0.1.27': - '7e045d7976419e954d8e527f42c27b1726a81ef835747b2b1e4440eb05312b06', - 'x86_64-unknown-linux-gnu-0.1.27': - 'ffdea092d716bcce4483b29b52c8a14645f4c12c5aa4c012249963d333a0ca7a', - 'x86_64-unknown-linux-musl-0.1.27': - '573115039c44ab9c83990bfe9cffdec0ed3d2ee03ad81bb4c391b5e95dbea50b', - 'undefined-0.1.26': - 'b1187944b39dc0426397b1554fb5c6a862fffdcf4ae46254835b6b286e42b4ab', - 'aarch64-apple-darwin-0.1.26': - '37e5e9359c6eb943d31ff0082b0ec5327c93b572a2eafedc8266963181dbb1d0', - 'aarch64-unknown-linux-gnu-0.1.26': - '17ebc81973124e4c1c0958ce0eeabb541553d74bccad5a055ab2d33dddd4051b', - 'aarch64-unknown-linux-musl-0.1.26': - '9bcedf6847f85a687806a63af1c78d81ad86136074519a2de41120cea1d59ba1', - 'arm-unknown-linux-musleabihf-0.1.26': - 'b4c4f3acbb11a61074b17c2c3cc18dba861da23cc2f2f512104d4c2710261111', - 'armv7-unknown-linux-gnueabihf-0.1.26': - '7c310d13ba517a5cb1e7210b2969a224490d099d2da0012b02613f8448aa7428', - 'armv7-unknown-linux-musleabihf-0.1.26': - '1c5900b15c11483d6cc1ecf6aa5c49f5807c2280c8a0333bcd7e47db75635ce0', - 'i686-pc-windows-msvc-0.1.26': - '45ad6ac84cf7d4a4195fa96011fb902c7c05221cb65dcb0b84aeeb0194125c76', - 'i686-unknown-linux-gnu-0.1.26': - '5f30097ff062c718c40178b904cd654f1259f7ee012db7c102d31af650047602', - 'i686-unknown-linux-musl-0.1.26': - '0beb787beb1b8491248977a6407231462b27e47a7678027b3a540bf5f08076b9', - 'powerpc64-unknown-linux-gnu-0.1.26': - '576afce4b7a8b8f51b7ac4adb7c93525f6fdf6527e0bbd7a2f0329f3cfb73f89', - 'powerpc64le-unknown-linux-gnu-0.1.26': - '98654b9dbf6696391d7362fcf8bb7604afef8e999ffcb645694350e77eb064d8', - 's390x-unknown-linux-gnu-0.1.26': - '7ff5028b7939b346ec195443df9f18155501a1829800d70d9b0face999a4db09', - 'x86_64-apple-darwin-0.1.26': - '431a180adf346d96b39f3477a4f26b53741819e0fe411c276c2aa07b90b0a4f5', - 'x86_64-pc-windows-msvc-0.1.26': - '874ce589229f3423cd2824dbc4fc1af7c933d0dde544d5883fd68012aaa44f7d', - 'x86_64-unknown-linux-gnu-0.1.26': - '27e4edfa8f12986430c2f6265653b7fca3dec9cd8709692b7fb353c5c0f4db82', - 'x86_64-unknown-linux-musl-0.1.26': - '39738b23bcedb73e51f2010aac87e759d6b31463af40fba27b5e72cfdb42dd95', - 'undefined-0.1.25': - 'a5f31208af15c9a4c739abdb04a8daaf4a791c905ec8b95ef4402e7af8d3ccf9', - 'aarch64-apple-darwin-0.1.25': - '4971997b9e3abe7fcb6635676db8f3e1d94c4e1939a21024639e6ed08129e512', - 'aarch64-unknown-linux-gnu-0.1.25': - '5ab29171ee0b08f2eb3c53416857c4e4737b23fc43ca1e5ec6647e8cd15f94f6', - 'aarch64-unknown-linux-musl-0.1.25': - '00b8aa7808e99bb6e8ae07a125f171a4235e3e3f50eb4ac5754bb065ee89df3c', - 'arm-unknown-linux-musleabihf-0.1.25': - '24ff2311900171455e909e369e071b419dba3554fa45c01c61e14731f81c936c', - 'armv7-unknown-linux-gnueabihf-0.1.25': - 'adf4f27836d7dd8e5fbe243eeb15088a47d0aff30e4ed8f0dee5e098e790efd4', - 'armv7-unknown-linux-musleabihf-0.1.25': - 'b4c36a4eec6fb6f03ef3f7df1b19384d8b0132563e28f67422c557c66a0975f7', - 'i686-pc-windows-msvc-0.1.25': - 'd647fc906d07c080743b0b0b5eec4e8b40258016b79cff042c47e0ef84464d60', - 'i686-unknown-linux-gnu-0.1.25': - '73376185add2a603281bd8d01cca84b9a432228e81d8ab3d801a7493a82d991d', - 'i686-unknown-linux-musl-0.1.25': - 'ddf82492c02474371c5cae6bc1dabd6f78c307264a8b494300d9eeda443921c0', - 'powerpc64-unknown-linux-gnu-0.1.25': - '730ffc370137f938e3dcfd4a3e93ee3824f159aef94d9e992a4791f485501a86', - 'powerpc64le-unknown-linux-gnu-0.1.25': - 'e8a57fcf40cb53dce733fb9d04f0e0284861992a33b92dec057147ef93bbe857', - 's390x-unknown-linux-gnu-0.1.25': - 'a8045c20f903ec32fbbecf63555379b36b7ce1f4b678912c251a501fc2690603', - 'x86_64-apple-darwin-0.1.25': - '658de1759adad8218253f142959fba74b1857a3b77fe5e9c75497bea6ab61277', - 'x86_64-pc-windows-msvc-0.1.25': - '101807a6fa761be68d02849c648007dbc2575c86014dc5b1cc6e3273a1e51440', - 'x86_64-unknown-linux-gnu-0.1.25': - '8bcac2c9d93cf39d248e5284a2dce442a239f69923f999bf87ed39ec010e204a', - 'x86_64-unknown-linux-musl-0.1.25': - 'd42a18274d064eeb5bc9a14f48b175c7b5d814effd12cd5a32e8c37c1846cda0', - 'undefined-0.1.24': - '9a9d91d1a5dcfecf5029931530d417fc3febf4c469d7d7b9567845c4210bb59b', - 'aarch64-apple-darwin-0.1.24': - 'e87bdea0fdd29327cc94f4be23e75e1894692423f714ef9afd544c3cef53ebea', - 'aarch64-unknown-linux-gnu-0.1.24': - '1799b9fdca185a7efb3abdccdee1a6923c233642d2e84413e1e25bfbdf375db0', - 'aarch64-unknown-linux-musl-0.1.24': - 'c22b8089a79ca82897e5eeca2cd8a9122ef1423c9b73bf1a12e46895beb01106', - 'arm-unknown-linux-musleabihf-0.1.24': - 'c90fd4f848f5e87de6117c4f2d1ffe32e5b6347c6ba848427f6557451f117e86', - 'armv7-unknown-linux-gnueabihf-0.1.24': - '5b729378de4018d9d722bd3daf60c8e0168ebcfbe6ca2a2eb12fb409c8b0979e', - 'armv7-unknown-linux-musleabihf-0.1.24': - '8b3184c5339ac0a1221b1c2b43a1a788bcfa483cf99741257be3e54913aaadfe', - 'i686-pc-windows-msvc-0.1.24': - '5fd539c4a8b4838e7ccbdc83270e654cf9dc695f6f70063646f7857c05d558fa', - 'i686-unknown-linux-gnu-0.1.24': - 'cb8fb04212fab42a5c0886f79d75d578d500676aadfe4549a47b3a880072efb4', - 'i686-unknown-linux-musl-0.1.24': - '26c5e68560ee87a017f7ff304da8e38a5b81c8eb6c7c4e866167c14fbdba6421', - 'powerpc64-unknown-linux-gnu-0.1.24': - 'dc8af9b4d77af8a2f7969ea717f855733bd33179aa134cfafa8cf53399cbfe58', - 'powerpc64le-unknown-linux-gnu-0.1.24': - '216cd6ddbad3d6249e516562df59d786cb98640cfa6e19a62043b86192afa97a', - 's390x-unknown-linux-gnu-0.1.24': - '45d2fc92dbbcceb2c64176f5d795bb8259cb3f84b5e5f3b2f3d3809ff4e22531', - 'x86_64-apple-darwin-0.1.24': - 'f2cf50777bf50f004271be23d74b29fcefe80b98f0c5c3026c003df33cb3467d', - 'x86_64-pc-windows-msvc-0.1.24': - 'c2ac19c64314f45349c1db423b2b246800d9080f023c231a875de1e084e226eb', - 'x86_64-unknown-linux-gnu-0.1.24': - '128c23c81dd74f9fa8fe18844b649c0060322ac13e0e1b3a9ceba259b0c10dc6', - 'x86_64-unknown-linux-musl-0.1.24': - '8d2eb876a50c8bfd187fbf166dbadd2790ff41cd351a2e9667e43c97567bfdb0', - 'undefined-0.1.23': - '5024e379b0f8cdd32a3682dda3bfe228e03876fadc51105af164b7d5f20590c9', - 'aarch64-apple-darwin-0.1.23': - '5851419401ceaae8f902cf9f439409e7216abdad4f708fbaedd3d229041aff7c', - 'aarch64-unknown-linux-gnu-0.1.23': - 'fd322ad0454ad76ba642fecda02d4e2c12971c6c82affdb36f604b1fc9f3481a', - 'aarch64-unknown-linux-musl-0.1.23': - '08bd62cafb09d2aea69baf144eb3d4417c9ec2119f02a69103322def653c6ad6', - 'arm-unknown-linux-musleabihf-0.1.23': - '0215ea54d551052e90fe6062e574f6fc3888e57a07b5fd790d48750cae037033', - 'armv7-unknown-linux-gnueabihf-0.1.23': - 'fdb7687c0c3a0cd06c1364379f98641fc58481f05edc32f59dc679abbcab79bc', - 'armv7-unknown-linux-musleabihf-0.1.23': - '17972bc9dc7d0d987dd9cb05f7be72dfa8f86c1835b9ccd483e762da20e0dc88', - 'i686-pc-windows-msvc-0.1.23': - '8a03b0c564c9b7a82e7811b913b6db0502a05a59baffbc7a5453259f5527dd32', - 'i686-unknown-linux-gnu-0.1.23': - '4c65c0772e1f6dbf99923c0564314638df36476c43f2cb394092c72cc79e6c65', - 'i686-unknown-linux-musl-0.1.23': - '690afb97130c2d916ddb083c2c853765f6cdb477f28c3cc9e197a2ceae2622d2', - 'powerpc64-unknown-linux-gnu-0.1.23': - '0a4bb782d4792b0f1f77249f08841ad82a33f9d46d9bc3f76b330bdcf6cf4726', - 'powerpc64le-unknown-linux-gnu-0.1.23': - 'bb5cc89be676f9c4e76fa2fc99fbcb9cb9d243f4f27050c115e84ef0824735ff', - 's390x-unknown-linux-gnu-0.1.23': - '0e0f8d08ba4378184819bc02b11e52ceea1bb7aadcf5f70c7c4c01b598c9fd3f', - 'x86_64-apple-darwin-0.1.23': - '172e1499a0a02770e7b2544921745596d5c3e7b650043460eda0758249342051', - 'x86_64-pc-windows-msvc-0.1.23': - 'ad1e99dffc902a3d58589e74180ed4399e59c144bef80cae2027414188f66892', - 'x86_64-unknown-linux-gnu-0.1.23': - '81909f58ec476a40998e5ff2b81f8704195140305c8dea58aa041ec1a8e5aa06', - 'x86_64-unknown-linux-musl-0.1.23': - '7748461ee4d8922b93843e1850e4dd2defbb1c0b3db8b3c062977637a9d6ffdf', - 'undefined-0.1.22': - '20856f7aec12b8c576a8de8a3528de3cdb35789cc3609be580133b59942256c3', - 'aarch64-apple-darwin-0.1.22': - '4768499576438c1d7c741b5dc907a5778fd7f52c88555c1eda7288c7c501a0bb', - 'aarch64-unknown-linux-gnu-0.1.22': - 'bec340cdf59d2451bb22189289e1cfc799c40073a3b40eea62c1efb69c4f13fd', - 'aarch64-unknown-linux-musl-0.1.22': - 'f8e56575b94adfd190807e248eedac0d4ea5298881e67c00c90f9f7b1940393b', - 'arm-unknown-linux-musleabihf-0.1.22': - 'e212ab59866890a08f6df8f744e64091609aecbc09eaaa407e70298f0c9fccee', - 'armv7-unknown-linux-gnueabihf-0.1.22': - '631d1f8908570a4d0a158de5502f6822ecd80b090f1d71a4642432c988f03097', - 'armv7-unknown-linux-musleabihf-0.1.22': - 'bc10728ced9bbd5e95b7b55e87e7bdd5c3ed5784ce15350edc99638e9a4220f4', - 'i686-pc-windows-msvc-0.1.22': - 'e2620f54e81e89071c9bec1bb3ee2c20856a47290b940965a1c2a8f172a44e69', - 'i686-unknown-linux-gnu-0.1.22': - '869b6b8587f5fde32dade9ecc1eabbf0a2c41395d0d5936ad7e0ac3d5d3539db', - 'i686-unknown-linux-musl-0.1.22': - '7453ffa73990121103a0cec73ba1cfdb16141276c13925a6e043dd70f35381c1', - 'powerpc64-unknown-linux-gnu-0.1.22': - '859f3bef8acadaa80c653748dfcb71bae18cc00024c4b74b28a6a3a9b8e058d1', - 'powerpc64le-unknown-linux-gnu-0.1.22': - 'd39570a41d46206ef04eb2e258e6d005db9cfb797f44cc810001341eb5d46076', - 's390x-unknown-linux-gnu-0.1.22': - '46a306e508b48b3ba404ea10cf13ec18a44caa8851d1ef8e7cad90ac0d665d03', - 'x86_64-apple-darwin-0.1.22': - 'a46107c1844b21b96b6ed4c222925bcd8b1429ad24d56a3cf41ecb9732554a5a', - 'x86_64-pc-windows-msvc-0.1.22': - '7c597a925a893d6e326d3dbb2971883728968ef815168048896ede472563bc35', - 'x86_64-unknown-linux-gnu-0.1.22': - '9c17b11bd3991ae98b5333378127aba0ba51888b6969427259b51fbda6bbf955', - 'x86_64-unknown-linux-musl-0.1.22': - '6f80cd8ad79c119ed6882bc9c5b8f860f7e554f87b97830a4ebf1e5b746d5e70', - 'undefined-0.1.21': - 'eae4d4641e57ef2eec75d9f76653b8a3a0dc0b91b3dcc8fbbb2ce4456a08fcfe', - 'aarch64-apple-darwin-0.1.21': - '1e7788eb132a6e8b1c81829d81cdbb8ba0b26fe098320217284d4af4332fe606', - 'aarch64-unknown-linux-gnu-0.1.21': - 'a749bb07a4fb16dfc1942868544043483a233956a882af2944036cd081e54280', - 'aarch64-unknown-linux-musl-0.1.21': - '2386ec124440ae73d3a74af4f80685210b2dc7a06266546f21987db557186242', - 'armv7-unknown-linux-gnueabihf-0.1.21': - '0a6978192ca8a1a3c0ba9981a946a876c2ab6f06f6e223e79fe77d786b786e67', - 'armv7-unknown-linux-musleabihf-0.1.21': - '53ceb4be6f4f036e482c22189c3198f755055725864c38df4cb5928b0e08b0de', - 'i686-pc-windows-msvc-0.1.21': - '8713eda354e6dfe9b5d4802c3da111c76210dd7dc671df62fe2fbbfa50522ab8', - 'i686-unknown-linux-gnu-0.1.21': - '667846071d7b7dc76d2425270ef569774d18defa59c6ea335c53cca27e1cd3ed', - 'i686-unknown-linux-musl-0.1.21': - '531750c37b6aa1694f3e3999dedbe504dd9178196af66db8d9e9412136761143', - 'powerpc64-unknown-linux-gnu-0.1.21': - '62713acd9cad5cefc99637f81d995b7d61a900f5a0a15d454ca30ceebd79bae1', - 'powerpc64le-unknown-linux-gnu-0.1.21': - '95aad3d08499e9e369d49a02e70ec5ad3502cceedcc08d5de04c490406b1ed90', - 's390x-unknown-linux-gnu-0.1.21': - 'f781f57cd8976449e83f7233271021e57646eac516f81c61b284db54759545ab', - 'x86_64-apple-darwin-0.1.21': - '02bf25cc3f25c6a70d4c7f40a23c1122aecb0191824e9fedea4814e8295d09e6', - 'x86_64-pc-windows-msvc-0.1.21': - 'd453b672f4db4a5fed1d7cefec2696b7c6e534f340da22f2d275b0e093c29e60', - 'x86_64-unknown-linux-gnu-0.1.21': - '1926f6112b03934f9e4b5caf14f15dc284e5129d1f8572ec55269afb798ed3a7', - 'x86_64-unknown-linux-musl-0.1.21': - '999773834330b6b20174f4486d2ddb19e51dc812291189cfb509aa1e1a3d6b6c', - 'undefined-0.1.20': - 'e0ae591d4c14f0cb6b67ca4d64183fec0130e08a623fdaa991ef707f10908865', - 'aarch64-apple-darwin-0.1.20': - '7d6b1bb7e4e044a1f04a541703ea9de0df57111dab57863d82602d848556bc23', - 'aarch64-unknown-linux-gnu-0.1.20': - '8dc61e683cbcfda8f3584cf3c58a70fb8f574e1b882e5c94c6b6bc3c00eff44f', - 'aarch64-unknown-linux-musl-0.1.20': - '9a4337d01191a16cdc875ee8ee19f884e948a2b5ce8b07f8a7ec1672292cc63a', - 'armv7-unknown-linux-gnueabihf-0.1.20': - 'aa3ec54087cf351d2016f61ef327eb85117d005b1b6e21027996b7b12e9ce08f', - 'armv7-unknown-linux-musleabihf-0.1.20': - '692c438a97afadf193c03ce2de4aee1dc5714ebdb3f8de6a52ed93411927eee4', - 'i686-pc-windows-msvc-0.1.20': - 'b20110c34f308608d2061786c334e6004e2e91ec165232689fb6c2a4209889c9', - 'i686-unknown-linux-gnu-0.1.20': - 'e1c1d3947fb72d83a6dc1498c0cebf6ec3be4c963543636ce8fe476731ced694', - 'i686-unknown-linux-musl-0.1.20': - '035bfabc092e230a89fcacfd7e0e77ce7e70f03c4e76307cbaa80f2036a38829', - 'powerpc64-unknown-linux-gnu-0.1.20': - '49ea75ecbcf149991ddb7ccb9401be88852ff0475e60d55d54bcd4abccf6181e', - 'powerpc64le-unknown-linux-gnu-0.1.20': - 'a40ccdc8dd695e5b3d767ecec98875615e94ac8cb4c3f81f990c7a619e85fc5d', - 's390x-unknown-linux-gnu-0.1.20': - 'b8afa3df67516e9ed86bfd6caf889a21337e20f03f356079e85546ac1912d731', - 'x86_64-apple-darwin-0.1.20': - 'baff815f3fe568af2440ae4da23b8a1a97c00c6c2710c980f0b0eaff22002ffd', - 'x86_64-pc-windows-msvc-0.1.20': - '9be323847cfab082cb2dfa75a5f42631efcd7c1ffbab96d0f36cd7afef4a0c9a', - 'x86_64-unknown-linux-gnu-0.1.20': - '88cc7354f27134acf45df679bd6e529191409183a936a974ead9ff2714c3e6ce', - 'x86_64-unknown-linux-musl-0.1.20': - 'db28ca169154ce55ea7356071dbbed94fc5cc94b3564cd58bb458342788ac45e', - 'undefined-0.1.19': - 'a0e28df167a8184016b0b8e571eed6d1aeac2cfe63b34e1a26bbb611ebe67657', - 'aarch64-apple-darwin-0.1.19': - '1ac97b4bedad801cd5860a83e92e092e9e04246fd7028393ba6b5c2f76fc1dff', - 'aarch64-unknown-linux-gnu-0.1.19': - 'c9371f7189f129b01bce0a9923d6067ecd77de57860ec3071f163d7ee247fe45', - 'aarch64-unknown-linux-musl-0.1.19': - 'aa56f9002481cc5e3994d1afd61c03b766967946ceafb95d460203369f262eec', - 'armv7-unknown-linux-gnueabihf-0.1.19': - '2d832319b08d16df798accec166f257afb5d308f17a93927f1f2e4b9f9b52e92', - 'armv7-unknown-linux-musleabihf-0.1.19': - 'bd404945a5f8a46b5b88c2a0fa1f23394cb02cc22c523fb6b248e77c629e6982', - 'i686-pc-windows-msvc-0.1.19': - '0c22efc82e8aafd73b1183bebc36f5712df260df6b42b1b4649a16143c1a47bc', - 'i686-unknown-linux-gnu-0.1.19': - 'fb85b8910523422ccc81822614dac97cf8f2de258b535c7d177fc5932e64a766', - 'i686-unknown-linux-musl-0.1.19': - '559720353183dbcb4c29ed359988159369660b80b41e6bc60b47ee48d74caeec', - 'powerpc64-unknown-linux-gnu-0.1.19': - '9bb39a224f870c168a1fe5568a9bb16aa358899fe2a74c8870545c058270cf87', - 'powerpc64le-unknown-linux-gnu-0.1.19': - '2c131f1139079ab740f8ab9b24865df3fa1d64d8a2f6608a331915e8ecf071ec', - 's390x-unknown-linux-gnu-0.1.19': - 'a8cd88c4a007e7bb6260f8b3a226611a3a509fc37d924af651e41ae9302a41fc', - 'x86_64-apple-darwin-0.1.19': - '35a276f51381ba7497a3e1d7fec3c47688f485045d65d8922d7ec30f1da489cb', - 'x86_64-pc-windows-msvc-0.1.19': - '41f9663eb2407ad661d0f204dcf479a93257a72be06d36e787b0dea93fcc2e0e', - 'x86_64-unknown-linux-gnu-0.1.19': - 'ab187b253f9f7ffb0063e827cf5efbedb0482d013ac619f6b28158941ca8d5f7', - 'x86_64-unknown-linux-musl-0.1.19': - '10e5e7f2007f363717a69393c7c4fee3b7ca8f16d1ae7a4e2cbfa67f7bc41bc7', - 'undefined-0.1.18': - '87d953dc58d3936c299609b1697b6d17ca85407edc177d293c98bb9451f8e5ff', - 'aarch64-apple-darwin-0.1.18': - '1806f3ada6ab943d86aa45a336e690f66b160145fe85f2adb82f3fcaf4eef925', - 'aarch64-unknown-linux-gnu-0.1.18': - 'db4eaf43f593b4b7ae8bbd0235e850aa7a18b7e8d8a20141e99866d43967f868', - 'aarch64-unknown-linux-musl-0.1.18': - 'bd15842c9b530b544b21597cc2212e2e28b1e18b83a27d344482c9df6800c604', - 'armv7-unknown-linux-gnueabihf-0.1.18': - 'c2971d604eea6d3869bab0d7a292d16f5c8167d48f85b22f6c16fe27e947e26f', - 'armv7-unknown-linux-musleabihf-0.1.18': - '4875b208471317c9a7212bb4cdab14b0b350ab35a9c21c7481ebbdf09b4983e9', - 'i686-pc-windows-msvc-0.1.18': - 'f4e17a94f14bc775dbef4fffc59ce6290e05806e93c348d60e82adc4d9850d51', - 'i686-unknown-linux-gnu-0.1.18': - '6a06f1dddfe7dbfe8a09ff2c1d2971204095300edb5bd39ba3b6b289220d52b0', - 'i686-unknown-linux-musl-0.1.18': - '12300f65ab5d023e3708327b826de20d7a0451539379fcbf223c6125d221a159', - 'powerpc64-unknown-linux-gnu-0.1.18': - 'fd8262bc61f6ca8f051b3f5abe0e5d5f5fb25002d0940760a949d5ed61838a97', - 'powerpc64le-unknown-linux-gnu-0.1.18': - '557f836ed5c52678db56a90db9b5ce91396d80ce14ac94141a10eea57c44e693', - 's390x-unknown-linux-gnu-0.1.18': - '651f6a6e81939f5e9ed781111f581b71a9ccd3f9dfd269a7d72ffd860d852e58', - 'x86_64-apple-darwin-0.1.18': - 'a54f1b97fef0d94834e77bb5c013b26be6e94ce888172c80d671453aa12e3cbd', - 'x86_64-pc-windows-msvc-0.1.18': - 'c34cf263728d784ec98eb6bfda4adb2d7e9ab5f649af8e22a05b60253f919668', - 'x86_64-unknown-linux-gnu-0.1.18': - '605e49d8dc48081ef8ba32212df2f17f02e531c02de36b5caf417bd97818fc3a', - 'x86_64-unknown-linux-musl-0.1.18': - 'ed1e5264e84246f91e1f2dbb642eff24fbce273ded3bac337930a0c6ef9ad6b3', - 'undefined-0.1.17': - '7ecfb6fc6c19e3c85cc2ecae0271da16b43bead58b2f0d91fd1c24d1c0f1ae0e', - 'aarch64-apple-darwin-0.1.17': - '8f6d1b142dfc4d2040b86a94956eb3c2f5436fd0e889e0d0d1c59dbb8fbbf9de', - 'aarch64-unknown-linux-gnu-0.1.17': - 'f2aa28f1f9e35c67eb1f4e20d372eca5474c7421b0f1f416210f6542942c5a26', - 'aarch64-unknown-linux-musl-0.1.17': - '34fd79808e301a31b884fe98ef2da209883d00f6253cd75df8966744075599ca', - 'armv7-unknown-linux-gnueabihf-0.1.17': - '06ae3888af28eab2827e836acde849b4caa993c302a296e35b7275d16346ecba', - 'armv7-unknown-linux-musleabihf-0.1.17': - '95bbff6685491e1c9768bb68e35e8a9973abfa65218fc36404f0ad03ddb9dd06', - 'i686-pc-windows-msvc-0.1.17': - '7d90730e88affcc9ef564e75d477fa03d341d6bd0473b7ed8060bd5845a73548', - 'i686-unknown-linux-gnu-0.1.17': - '7cb5dc29a6bc9d46758f121007d6ed9bedd0969db30214205a298c2b70805605', - 'i686-unknown-linux-musl-0.1.17': - '70167e21f118995d5d64ad653eb17430bda962806b6d2df767773db6b33ba444', - 'powerpc64-unknown-linux-gnu-0.1.17': - '40f920c10951a89a967b7d6722c74c88038b8c978e3651d5e99b9a1145604df4', - 'powerpc64le-unknown-linux-gnu-0.1.17': - 'e76e43e9eda10c3730e1b36856a510458a708cfab150a888c8a96ca21234de7f', - 's390x-unknown-linux-gnu-0.1.17': - 'de8ae6042474e876d1235a09a771a274f848db13c82229bc9d7d63d5c89f8ce6', - 'x86_64-apple-darwin-0.1.17': - '957fbe84e1fb1a7e8b43ed4db7bd5ef5ea3b3f996c92144d5eaf6b3e259859cd', - 'x86_64-pc-windows-msvc-0.1.17': - 'bd7c736a62f8a102e31a425f4a614de586be30a7c5dbe782bec99c838edd8cdd', - 'x86_64-unknown-linux-gnu-0.1.17': - 'add91a881b3de0a2defa6cf363bbbbfb5dc58e85cff52e8164052e86fee73809', - 'x86_64-unknown-linux-musl-0.1.17': - 'd793d93fa5eac748c1ca84ae28f1ba3fbe6d0ec4093818f960e8378d3c012c3f', - 'undefined-0.1.16': - '8cffa14f967e4900606afb952a1f5efe92e93a550792cd7ba77784fd7a149d0f', - 'aarch64-apple-darwin-0.1.16': - '915b89c135b3890f086149cc50019fb6b243a26311dfe69d7f00204fb6035c87', - 'aarch64-unknown-linux-gnu-0.1.16': - 'ca18e5b1c9d776130d67e6b7a4f22d14e6abd65c84106fb8b3b2c097bff18f90', - 'aarch64-unknown-linux-musl-0.1.16': - '64d8c04ce2b251e34f38f14eeca5d126a05a97bd5734ea77dab2c48a7923921f', - 'armv7-unknown-linux-gnueabihf-0.1.16': - '216e542e2c7a22b2325ed7b0f94c1b6491c4dd3297fb595e166f7cce2ea6a0fa', - 'armv7-unknown-linux-musleabihf-0.1.16': - 'f886aba91e4a79f07899eb97dbde5ffcbcff93b750fff9ccd6a0361fc97c3fab', - 'i686-pc-windows-msvc-0.1.16': - '6dbcc9df5402155a8514b60b07b48d09cb402ee34ed07a2450298d5e75b2ce11', - 'i686-unknown-linux-gnu-0.1.16': - 'ea109c8a25ff78e99318af5c0e8ef9348ff64af2ee718345a4a1e87d0e1e4820', - 'i686-unknown-linux-musl-0.1.16': - '48f35670fffab656a342201eca3b6c1c0279cab52fc11b5b42fb87df8fff5297', - 'powerpc64-unknown-linux-gnu-0.1.16': - '636ecb9fcf40a7e0d970ec0526cbc7803de8800d8f6945fa0005add0334c7770', - 'powerpc64le-unknown-linux-gnu-0.1.16': - '2b07b26602e6d39481e3db5cebe3456190d281327590ef03279357d8b05305ee', - 's390x-unknown-linux-gnu-0.1.16': - '9db4724da884ff01b394c7499b0520f977d10f20f697f6bb5e9b2e01d50470e2', - 'x86_64-apple-darwin-0.1.16': - 'daf6316c3e5e610ed99c1eb054bcf9dcc66f970b96a334f7bf6d4eb0d211736d', - 'x86_64-pc-windows-msvc-0.1.16': - '73659c150df62c0c42d8f195763fc270a213383fbcf413f746bb026878fa1d93', - 'x86_64-unknown-linux-gnu-0.1.16': - '84b15dbd298969ecf2bffb22a3e1003df085579d53d39a6bb87d5813a14e10f2', - 'x86_64-unknown-linux-musl-0.1.16': - '1d76289dea83224d61eb84284f00136a1275234e7537baba44ca3c9e696dab05', - 'undefined-0.1.15': - '55d165ea2c9ab28351c0f5f680c21a66bc8b8c7799ac39162ca5044d0e23a3f4', - 'aarch64-apple-darwin-0.1.15': - 'df9bab49d9a171bfafb619422ec8c88c0bea930fb69ddd6c8884420b9cf7a13d', - 'aarch64-unknown-linux-gnu-0.1.15': - '33c5c5340b0c29381b0dcfc0458194800a74866301fd6f64efb1e77e4491beba', - 'aarch64-unknown-linux-musl-0.1.15': - 'ae21b106eb5dd26f76d163613746ae869ff5c6f111aad2a7b482f906a8de81f0', - 'armv7-unknown-linux-gnueabihf-0.1.15': - '9bc6769404a17f24340ae39c1b23a495c405644d3c003719145d92596b1559f5', - 'armv7-unknown-linux-musleabihf-0.1.15': - '5d678a5a06561c01e8052528186394a45eabcb37595c4540205c292d8d9f2f82', - 'i686-pc-windows-msvc-0.1.15': - '84cfd219b31f5cde825d212012652ab326a81d621faf86c08b03b0b85e72ae4c', - 'i686-unknown-linux-gnu-0.1.15': - '56ceeb2d72f0ae1fa2852b4951bb0c64c5502472a867532ca157c89e93ade4c2', - 'i686-unknown-linux-musl-0.1.15': - '62b821fd3e94190b2f7427a6a805b0b9308e21383a8c3161bc4ab7d777ef40b0', - 'powerpc64-unknown-linux-gnu-0.1.15': - 'f06fbd8a50544d9e76d1e0a984a5fc17fcaddf237e28f2874d8a6f01ea5034a0', - 'powerpc64le-unknown-linux-gnu-0.1.15': - '14f177d8e9c83356e57f7f3f54c1dcca28f47bd784278436207c6149244ee1d5', - 's390x-unknown-linux-gnu-0.1.15': - 'cb714eab80809c6b921c2b4f7b81e2c166c07a75c990032ee6d5e939986beabe', - 'x86_64-apple-darwin-0.1.15': - '8cb18f0aa3d61dea3b3d8dc98aaea6b9f1f8677d43db89a0c69b53c86ad6a9c5', - 'x86_64-pc-windows-msvc-0.1.15': - 'dfe55955cc7ab137b0dfb186f0e6108f320d79383761d62415ea554167cecb42', - 'x86_64-unknown-linux-gnu-0.1.15': - '00a37907aa7985e88584ab4765905b720fa8b9088d1bcae7611c10f398299c5d', - 'x86_64-unknown-linux-musl-0.1.15': - '5f7378a55671fa53e32cf5cc8beaf2cca40db95a579faaaa1310399f9329d27c', - 'undefined-0.1.14': - '19be86f31cbf3d4c5f7094fc77652c57cd05f70876d22df469d85c52b2108047', - 'aarch64-apple-darwin-0.1.14': - '793d267ae803c4c59b9d825bbacd09d4f1a06579567a7ea9aa458e2986b5b778', - 'aarch64-unknown-linux-gnu-0.1.14': - 'fd82838503cd540c5a2aebb38b0c539912c858ff6b8e6c4b74b90a190442a0db', - 'aarch64-unknown-linux-musl-0.1.14': - 'ef9e8a2cb2a440d8b6b8fddd00f7d7d91b5f060ac8e2142b6ad778a85f00fda5', - 'armv7-unknown-linux-gnueabihf-0.1.14': - '03ad6b59053a933de33a4779484ea275fa7e885a8dfe833153eb1cc24b3009ff', - 'armv7-unknown-linux-musleabihf-0.1.14': - 'ddebfea1674aeb6534181d034477c39d7ccc15065e34e7c9c4abe1333f5f0890', - 'i686-pc-windows-msvc-0.1.14': - '365b29899ee7e83057850fc25e231a33f27671785724b0718bda07fce311de1a', - 'i686-unknown-linux-gnu-0.1.14': - 'f3983d685e27a55554b6107d59db017addebacf143daeceaf15f7a81a0286006', - 'i686-unknown-linux-musl-0.1.14': - '84f6644fb06ef46478c68e55b367ecfceebbed80c7e3b5e2b8af70d7fdee6c87', - 'powerpc64-unknown-linux-gnu-0.1.14': - 'bd21243c9d1679e27ce5d0651cac380521743d20bf996ba146b7a98c9c975dd2', - 'powerpc64le-unknown-linux-gnu-0.1.14': - '25f42e9e3fd230e7cc9f416143dd0aa6a5806f306a1abb4d02989edcf938000c', - 's390x-unknown-linux-gnu-0.1.14': - '15ce4609be46217639b0b589398bbc6ead801cb42c750b0c734d51e2384e9be1', - 'x86_64-apple-darwin-0.1.14': - 'c8d471a0c6f5a710508284cc260005e2d535ecb255b5f2ddc8b362057d8cd80d', - 'x86_64-pc-windows-msvc-0.1.14': - 'eba641a900d26feb5158fb131a80bb7bbb4ce4bec71284753345f23f885414f9', - 'x86_64-unknown-linux-gnu-0.1.14': - '394c421302ba972fffdd674a0a57f7189d8cc5a728fac8a175027abf833eee59', - 'x86_64-unknown-linux-musl-0.1.14': - '3c26c7a3e236d9f5d10aa6f32a8751322e8719812424b0b05ede1023f16dbd52', - 'undefined-0.1.13': - '859b13879d2a6f97c3c4d8928cb6a81b067b022b4e5b6c8e75bba099570bd0fe', - 'aarch64-apple-darwin-0.1.13': - '9d7a71dbb75dbabcbaace98d06517caa691ec8dab8ecbda3afee44ac9cb1e1c3', - 'aarch64-unknown-linux-gnu-0.1.13': - '16429c1a00b0a1fb653ae8a104d5af121bc765f047a7b750f356515c50c226c7', - 'aarch64-unknown-linux-musl-0.1.13': - 'c07044d21142e308961c1509975b71f52bc2f298497869ba40aa84fefa3807cd', - 'armv7-unknown-linux-gnueabihf-0.1.13': - '7a62ee6b4e669ea1aec3ab05da021e59ae8b226f524fdc610e14cfafc5b513d7', - 'armv7-unknown-linux-musleabihf-0.1.13': - '24c717aa7d4b8cc2e0b2378d2b6097adc376cb8422733a0478f0696ef4f2b5a9', - 'i686-pc-windows-msvc-0.1.13': - '5e75f004ece194c6c0bbec894f229bae440556c3c43df6d6a33a93b287a6ef96', - 'i686-unknown-linux-gnu-0.1.13': - '3a74bace4da3dbdc3f36e7720d7f6bc56098716e7c3e949664b301136fdf3dee', - 'i686-unknown-linux-musl-0.1.13': - 'd9c18676b96654a7133cf9a9f1dbfc47b37bf02ba8f7ab9f5f0307a3d6483311', - 'powerpc64-unknown-linux-gnu-0.1.13': - '2ffd41af6962f46807f64a44e30c7d5faac3fa8faa1bb1dd65f03cd49e61f66c', - 'powerpc64le-unknown-linux-gnu-0.1.13': - '9fcb334fa7d99f732628214f2af386183fccaa7abbf9157df0966b619f741131', - 's390x-unknown-linux-gnu-0.1.13': - 'e575fd873988078a20d99346ba0c4964e6fbc322700c8d2541e9fe9e07eee113', - 'x86_64-apple-darwin-0.1.13': - 'ad133fc0c67cbe2d578631d77d2f6442626c77a1e144bbda2912b7af9085e91a', - 'x86_64-pc-windows-msvc-0.1.13': - 'f61cc5c329abc535248cce0912fe01c20e7c99ae9bead6015842f8c5fd3cdfeb', - 'x86_64-unknown-linux-gnu-0.1.13': - '2bfc6a542a3df6af6f56ccd8ec9f1b0596fff62b11650b0bdb830f10ee4e2d64', - 'x86_64-unknown-linux-musl-0.1.13': - '5e771e72b3dd42d99a354fc4ce9be047e4d9fc1a653b2f551128a3b4fd533d28', - 'undefined-0.1.12': - 'e16d94a2d6365a99d88168175325bc1f9f7e9f72eadb136691150e3fdad4491b', - 'aarch64-apple-darwin-0.1.12': - 'c27629967760a84caeae66a130bb4c53dc1da0386122a4e67eeb19a0a163311e', - 'aarch64-unknown-linux-gnu-0.1.12': - '84b611afe5b7234585999a9ed2e24b542b8d3cb438595f9564629cae6d6a7580', - 'aarch64-unknown-linux-musl-0.1.12': - 'c9abbf7d6c9ebe737e3b881243297eeb6d67b5a8fd458b9d55deb80b29b45fb8', - 'armv7-unknown-linux-gnueabihf-0.1.12': - '1b3bd6f3e8d8080481af2c231fb72defd0d0c63eab2e28528ca420cfbc1b71cf', - 'armv7-unknown-linux-musleabihf-0.1.12': - 'd74b4a43ddd2601b18e2f4bedd9bcdd84bbd64fba2e4bfb169cda95bbabc88b4', - 'i686-pc-windows-msvc-0.1.12': - '6424486541fbdb17c3dd9144e690e3e86c318374342f02db94fc2a369ba31a14', - 'i686-unknown-linux-gnu-0.1.12': - '84caece3b6498801a9fca6ae91c341c4287a6f16d3a089199636259b00217bef', - 'i686-unknown-linux-musl-0.1.12': - '3daee4d2580054255a78d73eba040a247b1bc1db559726a4be0a4029b9bd1006', - 'powerpc64-unknown-linux-gnu-0.1.12': - '588ea9f541451f435eca5811d970e528cf599fc7054d258821f96a87af51eadc', - 'powerpc64le-unknown-linux-gnu-0.1.12': - '91c60c49b0309f2f51919a6603eeb03ae32dd7ead8f9f3f390929703577a1ac6', - 's390x-unknown-linux-gnu-0.1.12': - '54334b0bf35ef275a092f4567539066d4a25c59de08bee9dcfa1bb3eaa2348b8', - 'x86_64-apple-darwin-0.1.12': - '5ce7d6c25e68cb96ed21773fba9bb9cebca81dac70ab7dce86e620eacf547f24', - 'x86_64-pc-windows-msvc-0.1.12': - 'c458aa2416bde29315d73356ac34f6639cf55305018bec226c0e310343d6af07', - 'x86_64-unknown-linux-gnu-0.1.12': - 'fb1f56e7485b6c94364d11f227107fdc74799e8c91ca5321c35e8a19828d7a72', - 'x86_64-unknown-linux-musl-0.1.12': - '3d4fe441702e719156c373caffbfccd75254594113d8e3ef5e43d871fad7c722', - 'undefined-0.1.11': - 'ce4fd6fad4986f5ee738455e251825de4094f48c86555e9b4b3adafc1a88ed27', - 'aarch64-apple-darwin-0.1.11': - '64e0aeae1d5135684c65e5d41741f1b2eba5c60e574dfef7386712b259066d95', - 'aarch64-unknown-linux-gnu-0.1.11': - '56a7edd9bfadab67100bde6aca3012c9d7d8619405ebb360eae50b88ba2c6dff', - 'aarch64-unknown-linux-musl-0.1.11': - '0c890bb996c6431149583a402d5bfc3124da92b6e65ec3ee3a961935b06f8cfd', - 'armv7-unknown-linux-gnueabihf-0.1.11': - 'd26ac8502154f45e080c8330c58842e33e2330a73937a8f8be0d02f0d20391ee', - 'armv7-unknown-linux-musleabihf-0.1.11': - 'b7b3e0ba037f28994bbe99abba47ca2fe651e451c533fa54927ab61d21bacb9f', - 'i686-pc-windows-msvc-0.1.11': - '75e74c43bf6aeb3cd83a7b7a1f578c2247c48a03fa421317ca7f27f881c0890e', - 'i686-unknown-linux-gnu-0.1.11': - 'f8d63781a8a0d3452f7322268a4bfb3a6e06816b76deafde660d53bbc2d790d9', - 'i686-unknown-linux-musl-0.1.11': - 'fef030f0adb05a19072a8a4f042a5e8f55102633653cc092841ab5ea6fef342d', - 'powerpc64-unknown-linux-gnu-0.1.11': - 'de28ad908376178c3a66bb71a1e882bca9d30964c068c2d84e26982da5fa12b4', - 'powerpc64le-unknown-linux-gnu-0.1.11': - '62454fa7c614b129bfdfebd8ed1928b66e379ba4f3da14750255fcd936890256', - 's390x-unknown-linux-gnu-0.1.11': - '75915f9b4efb686247e6524cc467f7d498054915c1aa9888eafc5d3385c3e904', - 'x86_64-apple-darwin-0.1.11': - '62f2c6696fdf8bf394662cad54244411b9e96908de9e52b3743955b0d94bd8d4', - 'x86_64-pc-windows-msvc-0.1.11': - 'e3e49f27f032c195f01d33df30dff16c9ce7d6ac60512c1af117fc4597d0e632', - 'x86_64-unknown-linux-gnu-0.1.11': - '8b1d098549f46814ed40975db6e88aba2eb541196bea54753b08f789b6db8384', - 'x86_64-unknown-linux-musl-0.1.11': - 'a74b6e51ccf087f78814eecd449ad759f55a633015d9762f06d134394e6122fa', - 'undefined-0.1.10': - 'cf57c25c9b806efdc8f81ff1e66df985513caf28a4508b6399d1e125fabbe359', - 'aarch64-apple-darwin-0.1.10': - '1febf66f3377f28d59cedaf16ca08fdf0b18a19dff201ee29cfd4c09b5672a7e', - 'aarch64-unknown-linux-gnu-0.1.10': - '88d6b781dfaef6676eb1aae170a8dd18dc0935bb49e6ef4fff0cb33733d3b7ac', - 'aarch64-unknown-linux-musl-0.1.10': - 'bc7b0d6bbd58eb6eb00ef0fa3bc4ef2fb54c693c0027bcfec8787259de6ab9e3', - 'armv7-unknown-linux-gnueabihf-0.1.10': - 'c3a6624ce92cce721d32327b7354b656272ee593b1fe97ed8221b429b103a353', - 'armv7-unknown-linux-musleabihf-0.1.10': - 'b3ac69be2544c280acf6ef4aef660bbc78b000bfe08d46156833031359a3fe8f', - 'i686-pc-windows-msvc-0.1.10': - '354b9be42669c2b3e90a3d0e900264fdab89212c0159551a4ef3d2bb273a84a4', - 'i686-unknown-linux-gnu-0.1.10': - '665208a455b369b36af3558a2bc75248eb357d54eeaf84b6aa06673c69b7e5ee', - 'i686-unknown-linux-musl-0.1.10': - 'd2c152c9192eb565917089a2c5d0b5462d01a3e6799ae9e37fc11f4b32e97291', - 'powerpc64-unknown-linux-gnu-0.1.10': - '69ab3b4a36ee75892e4a242fd030dbbe11f8028c84b318196496d8ce2e368fc3', - 'powerpc64le-unknown-linux-gnu-0.1.10': - '6d037c45c46ceb8b760c8c80e37b0f9cb5cb194ec0ed152ee6b43b3700a1bd37', - 's390x-unknown-linux-gnu-0.1.10': - 'bd2bb41a6efb3df0f8336685708963d37cc019ab6782af2d9f5a0e8e08e5f199', - 'x86_64-apple-darwin-0.1.10': - '349e36a0b1806d6760b7529384b94b450dffb0284bf541f50f1b9880a4c40667', - 'x86_64-pc-windows-msvc-0.1.10': - 'd2842d27994304c8613a1ef366386f1cc7d15c05fba3c48b5b115ccb4b59a88a', - 'x86_64-unknown-linux-gnu-0.1.10': - '94c6a8bdde7151ea9587f866f47f5d376acedd90606c546bac9585d3ad5b4426', - 'x86_64-unknown-linux-musl-0.1.10': - 'ff6b01c23bab0333dc258d9decaeddd500d7bcfb3bd6a1c47c12b449e9430bfa', - 'undefined-0.1.9': - '5ac47ac172b0d451bb9820174d2b1ddbf1f99a257d512f065735d3a0dec44854', - 'aarch64-apple-darwin-0.1.9': - '0b92f201c4f48a54a23074001e490722d8a532043566f3b24fdfddcee5dbbb81', - 'aarch64-unknown-linux-gnu-0.1.9': - '51e3791eff68824daf1360631aa2f11f98f3728d5d342cadef191f53e9321c61', - 'aarch64-unknown-linux-musl-0.1.9': - '9b00d23f7d7267af182641df08c2c120271164c803f31e9cfb6de62ef1facb87', - 'armv7-unknown-linux-gnueabihf-0.1.9': - '8e0c5b9838daf8403dbfc5f6befa54440afbbecc54eddb446265c6db3b3e91ba', - 'armv7-unknown-linux-musleabihf-0.1.9': - '0569e3dd62ed50478f1b546d7c32bdfbbf8fc7a9bfd5331794733f89bc1ea114', - 'i686-pc-windows-msvc-0.1.9': - '1b6bf7348f81c34912bdf7bf5ff57911849820f198dce12e737f635f87b79cda', - 'i686-unknown-linux-gnu-0.1.9': - '3fed572fce343c86737e3912f86dce47a26611b07c86b2ff3be0f4936861a1d3', - 'i686-unknown-linux-musl-0.1.9': - 'e3f71bc7566e407c88caa0acf98fd2d7267a0e88ba53ca8d8ebd0018ef1a0ede', - 'powerpc64-unknown-linux-gnu-0.1.9': - 'c2918765883475223e63f9281fc43695f311162a5583e21bc20f86dc5bd124d8', - 'powerpc64le-unknown-linux-gnu-0.1.9': - '6571b7c86c31db0e0bca2a002566c94a557968fd58b8f9c7d38539b89cac47ce', - 's390x-unknown-linux-gnu-0.1.9': - '2c7c5a7409a6ecf47062b29342f4a792c689170d9bea4ae9e3db81c6a134bfd3', - 'x86_64-apple-darwin-0.1.9': - 'a2cbd617b00e26d633ce0622b97ef96282e4924d0aef222754412d2c2ab7e625', - 'x86_64-pc-windows-msvc-0.1.9': - '0de903c0c36b91dd1d734d61a1677afbd80e6c0db3c91d775ba011d710866c60', - 'x86_64-unknown-linux-gnu-0.1.9': - '4c6305655fba53bd68dcecebc622e172c9de369543539428a5449b4c6ee53ec0', - 'x86_64-unknown-linux-musl-0.1.9': - '93f43d609bc6298af89519fc2a8ddcdc3a494110f64e7238c6f19639b3a45755', - 'undefined-0.1.8': - '6ba549d17d0b699fa4c955cdc482bfd5a89d6ec4c382119ab1937f6d75c6770e', - 'aarch64-apple-darwin-0.1.8': - '0993fce3759983899a83d6c2727576a4b35176d97c13d1bcbabd41e91f6147fb', - 'aarch64-unknown-linux-gnu-0.1.8': - '6a8a4ffa1e7157563706e1fbb5b42936d94bbe57effab8b62aef06c69234558d', - 'aarch64-unknown-linux-musl-0.1.8': - 'f4ae032d4484c5493584b2effc5936627065440eb4c7fa1265b0f5da904f9538', - 'armv7-unknown-linux-gnueabihf-0.1.8': - 'eb223bf424c28f7d60f24b1a51a8903746c9020d94fb51c91a62024b5463bf2d', - 'armv7-unknown-linux-musleabihf-0.1.8': - 'eb060441259b20e77b6115a483d8505ff44cb358449dbcb3d72b9ae561ff7c11', - 'i686-pc-windows-msvc-0.1.8': - '71d40d232f81acac3ec4ffeb9a732ec231945093867eae3b1008ed516f588c3c', - 'i686-unknown-linux-gnu-0.1.8': - 'aaf5320b5305621b5ef850e5dcda5e65946443980147015bdf19472ae3ea5360', - 'i686-unknown-linux-musl-0.1.8': - 'e68cd09932d18ccde2e48830eb068b5ac01f93d06b0c690f8035b9f3dcf07cd1', - 'powerpc64-unknown-linux-gnu-0.1.8': - '3980df97930b76b5b93975321f8662db7f8518229079b383df667e88616afdff', - 'powerpc64le-unknown-linux-gnu-0.1.8': - 'c76e9a5e285c8f728853749c2cc0f39480d0b59c4215437df5055ae73a7659fc', - 's390x-unknown-linux-gnu-0.1.8': - 'ec5ed3af4632c6c8a23364bc88b2f9f2266602219be0eada354d4ad1d2496067', - 'x86_64-apple-darwin-0.1.8': - 'a6f9188e79a95f5220ce27185283d9aba2fc3ea8cdd2abb9d41eda08a9416fb2', - 'x86_64-pc-windows-msvc-0.1.8': - 'f7fa2a6ff10c3a0281014acabb463ac5b1ff7b3599b6f91e6f507c0fd52483ea', - 'x86_64-unknown-linux-gnu-0.1.8': - '074267e2a2eaed2eb87c3ffc71eb1ce1c21c5594e079ec2f2d5d5ff6815cbdf4', - 'x86_64-unknown-linux-musl-0.1.8': - '3d8d92513f85811d1383d74c2b5eeef75002b33f1dfcf48cb46c253c31297cc8', - 'undefined-0.1.7': - '9729f66c74df1341f05b8e3ef4b02598caa234c1fdfd834adb7435b3ad7107a9', - 'aarch64-apple-darwin-0.1.7': - '020cd34efacc144b7dcd0bd1813ca1e8153cbb281b6fb4506be80714ad2322da', - 'aarch64-unknown-linux-gnu-0.1.7': - 'e349b8e6959ec7840178e48bc06be3a6c41c35dabb7243bd7627ad0c8b9b962b', - 'aarch64-unknown-linux-musl-0.1.7': - '8fec50377df06f83dab2248f7397de8250e531e24ef2d2f840e74b55469e4d64', - 'armv7-unknown-linux-gnueabihf-0.1.7': - 'd07ee44215d486aab894a054576f45efa65cbc45d026785187053aa33f8e195e', - 'armv7-unknown-linux-musleabihf-0.1.7': - 'f795784c9d352afbf3b7fdbe2109bbd664c65217e6cdbd55efa00f8c383ed2cd', - 'i686-pc-windows-msvc-0.1.7': - '6acf1caed9ebc233a3de1cb9fe2ebf20253e4fa915cda65fa53a53a13c860f13', - 'i686-unknown-linux-gnu-0.1.7': - 'a7022f599dfa97fe21c0926c95b24d04379ec364c8210516525c837e7d19ec9d', - 'i686-unknown-linux-musl-0.1.7': - '8045ed3acbf3190daebd5acd62e8707add1b0dd40b138cf9e49934eecb8622d8', - 'powerpc64-unknown-linux-gnu-0.1.7': - '52245ab38a7f443e2951814ccb253e4aa11d7c183bbe3ffbd352d5afd6b8bd0a', - 'powerpc64le-unknown-linux-gnu-0.1.7': - '1ee56598340ea158ffbfcd3b9ae50e30f3802df5554b1537971531a5b4c8fe23', - 's390x-unknown-linux-gnu-0.1.7': - '179840bf7c06d0d99dbaca52b02a7d697bc43fb48fdf7327b1f4733511d1dc1d', - 'x86_64-apple-darwin-0.1.7': - '4a98413d5edae3117d0c0960be2f91dedd88ca0975583819eb520279bcfae55c', - 'x86_64-pc-windows-msvc-0.1.7': - 'aa20b99f4d687fe95e0ad952300648bad9bc581d034f8fe9952bb1ce3272cc6d', - 'x86_64-unknown-linux-gnu-0.1.7': - '60175158c359cf247e67b6499feca8d0848c75d95061b7552dd3c5500938ef63', - 'x86_64-unknown-linux-musl-0.1.7': - 'd0777ccaf989172b821f7c1a6d2f94b327e527a01ffbd3d5cec1d9d2321ca5db', - 'undefined-0.1.6': - '0b1086d16d4fbba5dccb1aed7e8774fbb6d4feccd5cd42efd4509dce521ff698', - 'aarch64-apple-darwin-0.1.6': - '3c6f147f2f45d0327803a690722d25ba4c23c4145cf08df971cba161567e448b', - 'aarch64-unknown-linux-gnu-0.1.6': - 'de9f62f4fbad55c6b8918006e02c65e9cb871d017263f4f1ec3ebb7b6ca87247', - 'aarch64-unknown-linux-musl-0.1.6': - 'e8a5e657a2837c5522a9f6d5c7b20384cdc53f8841c9190d34cfd251a0087385', - 'armv7-unknown-linux-gnueabihf-0.1.6': - '324b4645fe37b68a33fdcd292ba026201c3321882f16ca8293decf943c360426', - 'armv7-unknown-linux-musleabihf-0.1.6': - 'e4ebba2ab004ea22aa59829bb774230b58e9c750b277a995c3247dcede63ad6f', - 'i686-pc-windows-msvc-0.1.6': - '8e6d2180a42c468d72b1ac4bd2b16adfc16021286fe1aae34c27248158fbf25f', - 'i686-unknown-linux-gnu-0.1.6': - '332a3a588e95ba99eddbe059d7cf330d98a5d11db4b7d24ef3e9472e046d944b', - 'i686-unknown-linux-musl-0.1.6': - '32bd89273ce21fdc064c6bdebcbacc07e74d9ffcd237a2cbdabb522aa5952f7a', - 'powerpc64-unknown-linux-gnu-0.1.6': - '7dff85ff980f80915247674288020b9e7050fb42286b73bfa8ea09c6def6aa96', - 'powerpc64le-unknown-linux-gnu-0.1.6': - 'ad3c76383c5c61e6510057658d013594bf9c34e0d80484de18b8f864ec4dc752', - 's390x-unknown-linux-gnu-0.1.6': - 'b58a9ff37ca400c22844e0e0d4aa691b11417b98afe4077a8f2b468aaadd602a', - 'x86_64-apple-darwin-0.1.6': - 'ac26fa53a156385781959487abe5112d5154bc395eaacbdb21e3ceb20ab5b835', - 'x86_64-pc-windows-msvc-0.1.6': - '864a4142b671b1f67fa7e853094e83af8a71445463886f74552636ac7aaac985', - 'x86_64-unknown-linux-gnu-0.1.6': - '7dc7a615ed6d613ad49d77c0e4a39361a97f43b842e8b14536a00db9671ce5ab', - 'x86_64-unknown-linux-musl-0.1.6': - '4d956f457e0f5a2116d4138082f030488865c0c04aa7389a54f4f80ad0868119', - 'undefined-0.1.5': - '90eeea76c1c1de3343f97be1f270c990c10193cdea7925a80913cd31aae71d45', - 'aarch64-apple-darwin-0.1.5': - 'dc62f02d9684e3453ef62d2b8775323a54d89a446e3dbbd94115e809dbd0aa56', - 'aarch64-unknown-linux-gnu-0.1.5': - '23d4ac8e358ef51e436e0dc66f120cf5acb86c1cede69d8ee3bed0864a44efdf', - 'aarch64-unknown-linux-musl-0.1.5': - '0b4f963239a69e03ea856e52b474c05be06417961ff7003e06bc0f0db1025f1b', - 'armv7-unknown-linux-gnueabihf-0.1.5': - '53778c45a8d95bab74b096bad6e5071b45f7b9d379438c770dbebe119bbf55a6', - 'armv7-unknown-linux-musleabihf-0.1.5': - '09a37f4749d1efe473aabe8bf7de3429a92456703741eaa5a41aa85eb3a08f51', - 'i686-pc-windows-msvc-0.1.5': - 'a50ef8b67c8f50e73a080dcf8e1b928c266a6c08d5c5ee8485b2b9e5a0cc57d3', - 'i686-unknown-linux-gnu-0.1.5': - '8a9b3fa8c50ab85767db7c633589ce8aae6440ce615e3984c96aa2885b97d949', - 'i686-unknown-linux-musl-0.1.5': - '16f37509d028e7dcd28679f9b24cfd5a21751531a05c8f79fefdbd385b81403f', - 'powerpc64-unknown-linux-gnu-0.1.5': - '2788c0444cb62cf6536f3cec9996ec1eeba9daf9f039176920e5f55e1ee30e8f', - 'powerpc64le-unknown-linux-gnu-0.1.5': - '08a4022f73326145ce468cac03169e1970685f0eb9bdb053bf61ec53f6f769ed', - 's390x-unknown-linux-gnu-0.1.5': - '3763dd278fe3df1e911cb11fd104327a07dead0e642550ee817e956937da61e2', - 'x86_64-apple-darwin-0.1.5': - '3559b67be0cc77a944323bafd5e70de8bd2933613f1825d7980fa0b22ba5f465', - 'x86_64-pc-windows-msvc-0.1.5': - '5f3f000d8405d0f93756cefeccca7cf529effc0353d2c694a4b05d79be677ead', - 'x86_64-unknown-linux-gnu-0.1.5': - '06e1530ca6dd161d7052a26cd08716276d8d6aee90d6e164cf4e05d4f5694312', - 'x86_64-unknown-linux-musl-0.1.5': - '6d290240419ba81e789b458b3d0685bb3cf8c61d725fb43949b554c64a50ce9b', - 'undefined-0.1.4': - '1fffbd35b2b8feb57d320b5032cd3972b6dbf99606929dc30b8959aaab1e97cd', - 'aarch64-apple-darwin-0.1.4': - '20ddf1a3919664d427d2d5ebb9875d9fef39a9ffd6850c036591235678e42609', - 'aarch64-unknown-linux-gnu-0.1.4': - 'd0341732b39688b2464cceecaf617af40898eb80b1093ced778e91d13837e057', - 'aarch64-unknown-linux-musl-0.1.4': - 'f05108b90840554a42b3486c1779c283348131093ee459883e3af73c6bff9cd5', - 'armv7-unknown-linux-gnueabihf-0.1.4': - '57fd95339e096d1f59641083bc58b42cd8e4b49ac355a40aed2613fbdaf5bafc', - 'armv7-unknown-linux-musleabihf-0.1.4': - '9f0a39ce106970b437ab36cd7f04ed9e5790c79632a44c62e7eee3e97fb89fee', - 'i686-pc-windows-msvc-0.1.4': - '55619ce61c7b1788cf6c490f45491a11656c1067e2e6e53a759e9eef338538b2', - 'i686-unknown-linux-gnu-0.1.4': - 'a3d55664de30d58ba26d34106fea81f2532d73afb47d6812efa884d0726dae39', - 'i686-unknown-linux-musl-0.1.4': - 'c08cdb5232797e88c3bcf817ff1d8c47c2096275574391e30417fd2cc3f7976f', - 'powerpc64-unknown-linux-gnu-0.1.4': - '80ac83cbe2ee1b3c8632988d45d1e9873bd665d8ce03275f8c67cb8a5c4ffc6d', - 'powerpc64le-unknown-linux-gnu-0.1.4': - '35fa6f4234785dd0a7362fe3e4521caddb8aec3645cc6b55fc196f0e22756019', - 's390x-unknown-linux-gnu-0.1.4': - '9cfe751e4c0d0db2d3693f777966e2e4b9d01f3651314df87871d5807aa1fd7d', - 'x86_64-apple-darwin-0.1.4': - '3b0648dffde1337a592963da1cf1e6167d54cb832128bba2a151b23b260decbc', - 'x86_64-pc-windows-msvc-0.1.4': - '0e52e5e2f92599f839d2a69739343d80044fe3593f807c9415729f56cdf59673', - 'x86_64-unknown-linux-gnu-0.1.4': - '1eb2f8ba39c231a310e41784980c8085eb747711ad59e430e75975a61a0a7fbf', - 'x86_64-unknown-linux-musl-0.1.4': - '04789d4a7f5a50524679b0d7f440566cfe69873448f4128815fab1354d3a0bb0', - 'undefined-0.1.3': - '0eeba5a57732dc3b0b81fe0b67f01986aac2580ef27275292b97bc1c48837014', - 'aarch64-apple-darwin-0.1.3': - 'f15e35d795cb370f6ae9d4107961acb3e7ab190196d6f6e1243ed8941947dcff', - 'aarch64-unknown-linux-gnu-0.1.3': - '51d4d1c9fcd4db37535b8aa75698efcb38aeaf29a35ad969c2b17d099e7b9b89', - 'aarch64-unknown-linux-musl-0.1.3': - '3e15d92c271a426b7bd3fa65e5947aa7d91c97202645eb8269fa483d58d49167', - 'armv7-unknown-linux-gnueabihf-0.1.3': - '391828d0f9916852650de441d947e059a6a1c47eb2a96fcb4e3fecde385a6878', - 'armv7-unknown-linux-musleabihf-0.1.3': - '7361f722e2cf3e8c16017778140be3f27f3a4a4f0167c1f25682a35dc374e8d4', - 'i686-pc-windows-msvc-0.1.3': - '50370c13b2b841c9f48d66ee056caf369ed70ccfe465f1a7caa44457af494cdd', - 'i686-unknown-linux-gnu-0.1.3': - '3516336206e39ced43d534e7319ed01722af68cba0b7d110921eb62e1db991cf', - 'i686-unknown-linux-musl-0.1.3': - '0738d7d3a2e9bb13fcaa4c1001c2af00295f3e2f76441fb34edbb83a6ba0f433', - 'powerpc64-unknown-linux-gnu-0.1.3': - 'f5cc9474f9b19d0ad210454eb779b85e2cd3089f0f509da0995f1c90f86ec9cf', - 'powerpc64le-unknown-linux-gnu-0.1.3': - '8bd935aa9c9f894e145de738cdd11b97ee8164ac6fee4915d3b5a5d3ac37d121', - 's390x-unknown-linux-gnu-0.1.3': - 'c044ef56eb600fff4c734da9912deaf3b20d962679fde9a88eb7de4cc3d77ad5', - 'x86_64-apple-darwin-0.1.3': - 'e08524327a9c3ca3f087dcec5fa6ab20c35f3714051034a97ea04eda19e7dc04', - 'x86_64-pc-windows-msvc-0.1.3': - 'c37479397b96f1576b08a2bb82d94fb5228918633b4605e0b580feefc5794467', - 'x86_64-unknown-linux-gnu-0.1.3': - '785f82659bb563553adc08608abd65475bce99f080fd01e9f5a358d2e8ddb2a6', - 'x86_64-unknown-linux-musl-0.1.3': - 'f7355abd4f4013c573d7ae64c0a42986ffc6b08a73ee24e8bff74ee6335136df', - 'undefined-0.1.2': - 'ba37d11fcbf801bdacdbffac31817f6be7dc4b11155957e98ed94f65e171c436', - 'aarch64-apple-darwin-0.1.2': - '13289f543d96c2506f7c3319e8bbc5fb944c8109374b61188593567dc2dae454', - 'aarch64-unknown-linux-gnu-0.1.2': - '5d4a1e82e78080ba308a06ecc408b3f17a13077dd35174031ed37646a4c24bfd', - 'aarch64-unknown-linux-musl-0.1.2': - 'c869e839347f2fd9e0302d25470659df99918ad8bdfad2477a61393a32d1a361', - 'armv7-unknown-linux-gnueabihf-0.1.2': - '67f6d19583bb24d628c6d3a97fd412a81b0f15f88491b6b244cda2832365d3a3', - 'armv7-unknown-linux-musleabihf-0.1.2': - '7acbfaef69adffb9591766c1e6b25b5750ddac8c43bded8b8b6301852b3bb436', - 'i686-pc-windows-msvc-0.1.2': - '7c923a8c0198da91094c96fe9bf9f737e09aa67f569b5c0f76b5f492b9394190', - 'i686-unknown-linux-gnu-0.1.2': - 'd5462c8746aaf8f36ca43829c6bc71f8ad303bec83d9173f44e1a3ad36d83871', - 'i686-unknown-linux-musl-0.1.2': - 'aa85ccbac61b7e8153dd7239f9757ca3a95fb01d0782949f554fd88a396edb29', - 'powerpc64-unknown-linux-gnu-0.1.2': - '4055b1ce30f7786fa49fcc9dd7eb3b818aa8903930fc49a42dd11ce99507f8d9', - 'powerpc64le-unknown-linux-gnu-0.1.2': - 'd36b4d8c78ad8816a760f2d888d52c732b2eae5d62fc0830e6918a0732361c96', - 's390x-unknown-linux-gnu-0.1.2': - '5829510eb1684d2f0f58ddab2e80313e5858d5e5be6e315b9b9a74c9742f6fac', - 'x86_64-apple-darwin-0.1.2': - '20777b7f904ec9cf7e4f7ee19fe8a0b64afada1a7168908c14557130768f46b7', - 'x86_64-pc-windows-msvc-0.1.2': - '35b7fdb10fad5e644125bfb3d7f5aff83d9aca24268701359e9fef767b8a4a15', - 'x86_64-unknown-linux-gnu-0.1.2': - '89624cd11aa20bc4a841bdcb110940ecb9f05555d79c3f8f4758e34d76c5c7ca', - 'x86_64-unknown-linux-musl-0.1.2': - 'f69cbd79dfea3bd69c4db064565f9eaebb86db2c0ba0609c090be86366d5db42', - 'undefined-0.1.1': - '525a76cf1603007fff9d1909126b2f2d3068b1cfa0e0f20dd41769a5efe87808', - 'aarch64-apple-darwin-0.1.1': - 'ff595133104cd486c7d852f68d5fa82bafddc7cedcc5087432fd55f0681af89a', - 'aarch64-unknown-linux-gnu-0.1.1': - '4919f30de5b5321df003f4c73cd8d43e6d1b28da2050e221e7b574398a6c48d8', - 'aarch64-unknown-linux-musl-0.1.1': - '1a4382a0e417658c531ad4377f3d2ef95c55cd0bf52b9e854b7a46dc7ba679fe', - 'armv7-unknown-linux-gnueabihf-0.1.1': - '96f169f7bbc78bcef25f4a36ec51baf9cf2ecb4f3628267ca1cba780e9f4434a', - 'armv7-unknown-linux-musleabihf-0.1.1': - '581d354ec9b3504a133863e2a7ffde8bec2cce12f13e9fffed8f8bcfb28e2a24', - 'i686-pc-windows-msvc-0.1.1': - 'f8abfe07f7c80e6f0b0bc41b827735e6342bfa14ef302195b23d9d548a3e4827', - 'i686-unknown-linux-gnu-0.1.1': - 'b976191b1a507b709e95efee48befbf41df0e31cb882a07d4c9a928070985a68', - 'i686-unknown-linux-musl-0.1.1': - 'ee9702c41ad0606c5b811b62acdbc5a82d814ddcf90b6d9e4f337ac6d5692f97', - 'powerpc64-unknown-linux-gnu-0.1.1': - '62cbd638e66db9eddfe05a4d21eb9b3c611b81f8f941c0b93bd8e4c0adb80426', - 'powerpc64le-unknown-linux-gnu-0.1.1': - 'b0b8107d6f18c9ddfb287a5f25ff01c6b9505aae1e1001be19acfa0c0b024799', - 's390x-unknown-linux-gnu-0.1.1': - '5b50e4cadb4e5ab9f2022c976f41c171fb92c4ed57b3366d8b89397d0de4735b', - 'x86_64-apple-darwin-0.1.1': - 'dde96aad74a1abd6ba3440eceebca2a5c9f29aecf9178dda0b10d1177cfa3a8d', - 'x86_64-pc-windows-msvc-0.1.1': - '2f47b60169f343f0ee64cda77392aab96b77444e52b2e800d881263f33630abe', - 'x86_64-unknown-linux-gnu-0.1.1': - 'f9d426e72ae4fccb849cef5e944ab8391accde203966f6e309dcc2505379f341', - 'x86_64-unknown-linux-musl-0.1.1': - '05fbfb6d1f46b2fda2bbb916b5e0c5e396dc01e8f5b14cc2a9b46f427539a380', - 'undefined-0.1.0': - 'e745f9958b6cf7c413f52d56e4005e0a8809bdc0237d26fd53555948f4fab8d8', - 'aarch64-apple-darwin-0.1.0': - '955d8dcb920b0a544f3595ebf35b813912fefedf4e18f8ac6a984a0532f9e35e', - 'aarch64-unknown-linux-gnu-0.1.0': - 'fbd2a9edbe98517ba8eb89e8650a411498b5da7b5e6470f3a0cd072bd31f7b79', - 'aarch64-unknown-linux-musl-0.1.0': - '492c26b75153aefae58a2f81f4582dc20e2c7b686b284dbb085a7bc0a6270430', - 'armv7-unknown-linux-gnueabihf-0.1.0': - '674bf524bcd8b6ed0b9ed42873bcf18af09352ea91777ecec1f1c6bc174f9837', - 'armv7-unknown-linux-musleabihf-0.1.0': - '8cfbe423184a860e805dc1b7a2df7b390e0c605cea77ad8dacd8968fca650a41', - 'i686-pc-windows-msvc-0.1.0': - '75ae72a862cf609e2141eb5fbd8206cae861e9368c27eff72f34911739cb4a3e', - 'i686-unknown-linux-gnu-0.1.0': - '961e44ac4d75e10f64154dcdefa40650767727fba08d73de140b8bb071db0918', - 'i686-unknown-linux-musl-0.1.0': - '7db329f27696a0ea70cf36ea6a437eac6ac8740a462d130af1c96fa5c5ae7539', - 'powerpc64-unknown-linux-gnu-0.1.0': - '0b5996241dbd3c774bbd76fbb682496367773871787132e3a917f251419ff647', - 'powerpc64le-unknown-linux-gnu-0.1.0': - '2d53a5bdf82f26702d5e8db20981b048265040fde49e3e5f1bc8add56ca72ff4', - 's390x-unknown-linux-gnu-0.1.0': - 'd9ea9847f045366b428e679d9e44ccce53119f9ed6b2bd167563ef865097695a', - 'x86_64-apple-darwin-0.1.0': - 'e8e386f588f8fb1a51e309e89da771febda1dc34e99fce5ebf042211389e7c01', - 'x86_64-pc-windows-msvc-0.1.0': - 'd9a55a65d761831e073a9461a3d5f4462203e991b814522f27dad12ddfab0183', - 'x86_64-unknown-linux-gnu-0.1.0': - '43a5253b18dee80d3e259dc0df39db39728296d0a506ab89974d3fc15d8e3a16', - 'x86_64-unknown-linux-musl-0.1.0': - '9caa5b457d1adbd30b28444bfccb6c789702e3bb260e286d8f3278bd0cb02af6', - 'undefined-0.0.5': - '5eaac1dcbcf6e25b7e2cf73aee3c9ced014605bcd3fe055e337e505ece443835', - 'aarch64-apple-darwin-0.0.5': - '887f58afbcdb879bcb07a0d5f99106a10b8023d4b104882627a93798629c7ed8', - 'aarch64-unknown-linux-gnu-0.0.5': - 'ac9aa3b0ecb1655baafe87be9fdc6e4f904fc7856779e292e8d55d679867f033', - 'aarch64-unknown-linux-musl-0.0.5': - 'e7ae701ed98ccbe51ef07345c9721b73afac8e68d0c95f9739e2eb367856bf15', - 'armv7-unknown-linux-gnueabihf-0.0.5': - '697804a6c83cf1fcfad284baaf72a7a5d03228759aefeccc191a4ed4d6e2ff89', - 'armv7-unknown-linux-musleabihf-0.0.5': - '23d2fa787666ed1b4418d584758789805d0954e36e221ec9d58376b5630d3fcc', - 'i686-pc-windows-msvc-0.0.5': - 'ba05493ffbb4b848ac333278471f119c58bff3ff56a4de9c98449c3cde5b27d4', - 'i686-unknown-linux-gnu-0.0.5': - 'b867363feedcce39bb6935ad12a597e6474280f69b6c759cc0ee00d0d9859427', - 'i686-unknown-linux-musl-0.0.5': - '40e56b614a64d0b2001738f41808f543cd3e43a0bcc4df70d4c28b92376ddf84', - 'powerpc64-unknown-linux-gnu-0.0.5': - '0742fd23ced7fafba5ecd580bd47dacd5613acf4b962385909032f1f6d484cb7', - 'powerpc64le-unknown-linux-gnu-0.0.5': - 'a7f847c0490388a9f970559ff88f935d83373efda94f9db260cec26aa85f11a8', - 's390x-unknown-linux-gnu-0.0.5': - '27fd1a54606ee68d07d5acd2a6000497f43fb1b87203a0c0c92da9cc77007c74', - 'x86_64-apple-darwin-0.0.5': - '9a62a8b6d8cefb8716aae62e1deb34df18b4fa6cfc5069c5ef645193c5a9f6c6', - 'x86_64-pc-windows-msvc-0.0.5': - '952e3e9ca0e88ad49c516ddaaa6625b0f818b34d83b3ff65f7557c3e07d90c2d', - 'x86_64-unknown-linux-gnu-0.0.5': - 'c0f3bc450ffac667dd3c12e2fb221177262d60ccac0521797bb4f4fef14cfad3', - 'x86_64-unknown-linux-musl-0.0.5': - '705bbe04a93a9d4d9db5224c2f980a88bba272538a33a78ea2e966f46b4d5eb7' -} +export const KNOWN_CHECKSUMS: { [key: string]: string } = { + "undefined-0.4.4": + "32746c58071378ae79d5965f546915cbe85e94845c87111d4209ec3437052cb6", + "aarch64-apple-darwin-0.4.4": + "3d2e48f405023e0a1762ad66336fd4e615928343c90023972bf3418fa5c829ae", + "aarch64-unknown-linux-gnu-0.4.4": + "f6851b5ef48caa066284b5522d153c49d55c310672962e7d0d8f2f4afab4a9b2", + "aarch64-unknown-linux-musl-0.4.4": + "803d1ec97d8b5a918d33f21673cf8183906d08c75acc0434fa15afb06b3dae9d", + "arm-unknown-linux-musleabihf-0.4.4": + "e1255b31c76764d67481b262d5d8dcf8e2b5d7bbfd46407267e3dd21bb1ee5c6", + "armv7-unknown-linux-gnueabihf-0.4.4": + "fbf8562f1a4fad1fcc030fb47621fee8935048ecc267919e9b1180b3e71f7b37", + "armv7-unknown-linux-musleabihf-0.4.4": + "9af2bffbdc4d25538130c864e2e58c9108e2bb231e5fc4890c0ea2a9f52f3681", + "i686-pc-windows-msvc-0.4.4": + "01ab40fb314e2a581023ecd727eccc153776cf97afbee5b921bd41110319642a", + "i686-unknown-linux-gnu-0.4.4": + "9cc0ca4d7ad6b35a1c181d2f5751ad0c955c51b1cd62ce8237e652f46752f1b4", + "i686-unknown-linux-musl-0.4.4": + "5397c1b4116fcc32c451dd0dca7114b58e78f952401bbf5d6279954b99d8c2aa", + "powerpc64-unknown-linux-gnu-0.4.4": + "7830e971425323fc58fe2eab4e800cafd4f67e25ca71c6bf81c0be0612b27744", + "powerpc64le-unknown-linux-gnu-0.4.4": + "79f047ef2860a5e2ec5751c88b39b83108da3d071b12433c1d48ff2d800c0a17", + "powerpc64le-unknown-linux-musl-0.4.4": + "bbdc878e609ccf1699b6e235bdde965bdd9ce60db34285aeef54276111e077ce", + "s390x-unknown-linux-gnu-0.4.4": + "a541d3f1981eaa6f92cc982ae9b7a23983e0f28ff6dcc3076455e3a09132b2cf", + "x86_64-apple-darwin-0.4.4": + "618f6745b2ed50560cb4491bc852f235c65cea88fc665dee83d1875596618c6f", + "x86_64-pc-windows-msvc-0.4.4": + "dc7ee57fb214eafc0d3f5d211e2432b80c98d707bcc36552fdc16a609192fd65", + "x86_64-unknown-linux-gnu-0.4.4": + "c7c0a6804538e083bcfbc49c2cecf07c5aaf9fc31fdcfb4449c787d3a40c980b", + "x86_64-unknown-linux-musl-0.4.4": + "a72c31f068323803485b6f3f878eda5e7d17383df675123b0e56c2bb6aeaa586", + "undefined-0.4.3": + "05f11e1292e7bb7a6c6101990d04e8ab1e1ae0df2c58ee3c50b24751cac95554", + "aarch64-apple-darwin-0.4.3": + "e90719268e20a046ef23ad4d1a44e991876f6abe850147f7525901cdd28e799d", + "aarch64-unknown-linux-gnu-0.4.3": + "bd1239ef5d488e17d513ef98d24f56f3bedb7e41500a20f798fda5cf3c606801", + "aarch64-unknown-linux-musl-0.4.3": + "8c98b1dbcfe6a1b5ed9cb567f57f25390af9925c30632fe33d9a38dd9d0b0c0f", + "arm-unknown-linux-musleabihf-0.4.3": + "c582a58adb495cd79c360ad0c3ffb4800a01502f7c87ed1e199ad2ed67ee29c0", + "armv7-unknown-linux-gnueabihf-0.4.3": + "f20fc36774cd6c76965224a4a82362afd2917b1bde601b857060035b85ee02f0", + "armv7-unknown-linux-musleabihf-0.4.3": + "9efc62f095a324855be55f91b3ba4b339293156778db273f1455dfc78aafb585", + "i686-pc-windows-msvc-0.4.3": + "ca179ef25b4ef471eacde2dc93f67300e4e7aa1ce416ffb2055bf11fb7ed17b0", + "i686-unknown-linux-gnu-0.4.3": + "762021a53b27c87798ec95cb1f660e1d46f0b43f8614bf5b655bbe53e6d164fa", + "i686-unknown-linux-musl-0.4.3": + "8b639325a79f1f29fb9bf538c71d40699aaa382808a62b10c9c2d0ff059d01c9", + "powerpc64-unknown-linux-gnu-0.4.3": + "b72e80d33e1d5fd73dd4bd537ece5c2240bd6ab3b785991a7aa90f8159be12e8", + "powerpc64le-unknown-linux-gnu-0.4.3": + "cf1882fb365d69acebd8e8acb108d1910247459d499a35b0607ab3f99362f710", + "powerpc64le-unknown-linux-musl-0.4.3": + "6f441f17d3fd11411356cd5b4a0e3ff563309c05127cb79e936399b0c2cce7f3", + "s390x-unknown-linux-gnu-0.4.3": + "f415319904dc5e5cf1b2a83f76f96b890d09be8f8cd5445143629604a99d6086", + "x86_64-apple-darwin-0.4.3": + "bb7c9e642d8b4d2c456bae9d0b23a9aa8b872b9701e62c8a4d5b1af80413e8dd", + "x86_64-pc-windows-msvc-0.4.3": + "6dd21e06b67f86870bf7cbe262d5a65428a6c7f4bbccd1268063b3ea75b0440e", + "x86_64-unknown-linux-gnu-0.4.3": + "af57fae9c355d3ff8f561170edc87be3f52b7d34dc14b1a8980824a483dc4cb8", + "x86_64-unknown-linux-musl-0.4.3": + "ad4811828ee085d90c08f0cf9e4571e1afe1037a6b35ce04f6dfad9df0c34333", + "undefined-0.4.2": + "98e8a3c9df737b9f7eae3938113060f7fdb560a2bf25562cbe4fe542a99dbfe3", + "aarch64-apple-darwin-0.4.2": + "c6b2f6e442d2f3863d3fb02aaeefe8783297bbbd9d3e9cf8a418ec46baa4006e", + "aarch64-unknown-linux-gnu-0.4.2": + "19a5baaf444a4897dcbd021612f868a64a3337908b5d95a54a0d9758da8d6edc", + "aarch64-unknown-linux-musl-0.4.2": + "2256900148763d3d0bfe161d3ddd3fb20bf7c8ce540b7a00543c1e281a4213c4", + "arm-unknown-linux-musleabihf-0.4.2": + "9dd02c971bf65dffebdfed9c36890363cbe133c67386e3cee302b3cde2de3d26", + "armv7-unknown-linux-gnueabihf-0.4.2": + "d6bd54c976473c9f2d06c37353e5a00a3f782e32227357237deaf4df3641512e", + "armv7-unknown-linux-musleabihf-0.4.2": + "931dadcade79204529af9d0a7dd44c416a2b86dfe1d7a758a2788ee7d63fe61e", + "i686-pc-windows-msvc-0.4.2": + "c5f9766aa50be6eb6ac81db42a611a613ee07a30a72414251b59d30fef1f32a6", + "i686-unknown-linux-gnu-0.4.2": + "2130afec71eec90eae57ab739a3e16e742ef57db5f3ef83c6d5c4b9c477572e2", + "i686-unknown-linux-musl-0.4.2": + "b28cb44e615c0983c418b40181e1d24ccc7ad2909b2687c8d7df96d11ad78e6e", + "powerpc64-unknown-linux-gnu-0.4.2": + "61a51c8495c600d0c28e4c73ef53d80ce70f887b61b102d19bcbfe3ab91fe6b6", + "powerpc64le-unknown-linux-gnu-0.4.2": + "ca34b76bc438fda3d14dc44c36a91f3c232ade46e65225285767eeef64e952a6", + "powerpc64le-unknown-linux-musl-0.4.2": + "8dbe56310f094a32abe41b2d3c6b739c4afe5f58d37a79ea66364ec9fac6f90f", + "s390x-unknown-linux-gnu-0.4.2": + "8e48c560cba98ce5cf5d5375373d2f4239ddc32e48530d87b324074adfa92c9d", + "x86_64-apple-darwin-0.4.2": + "4ce2c58dfc5fa678a02f0779b4a9339ebfab0bc5f2fcecdcd1234a65319e321d", + "x86_64-pc-windows-msvc-0.4.2": + "3e44ce091683186d35a1cd1a55f8a1f922fa765c6681dd56257d505b0ab6655c", + "x86_64-unknown-linux-gnu-0.4.2": + "56998ecebd1894876da5eabe628e73a975d45fc579e1bcbcf14f8945c811e289", + "x86_64-unknown-linux-musl-0.4.2": + "7a29c961b51831ac43c7f4cffa1b60b1138d61dcbd4ef77915bc8475e14b636d", + "undefined-0.4.1": + "bb9d233b2c5e264e26ca494021c7dead400f0ba0e245a0e896a76d7cede61c82", + "aarch64-apple-darwin-0.4.1": + "d89a7a658d0a4f44ab60730a5152759a6e6f1238cdc9e6e6391362291e34000b", + "aarch64-unknown-linux-gnu-0.4.1": + "2332272ecec1cd5f9e67e22ca989a40b4e97b8e649e72272efe0fba01ecdb694", + "aarch64-unknown-linux-musl-0.4.1": + "d9a8098461aa0e1970c809402b220e6fd70d61cbecd70bec433ff3abbfb27e1f", + "arm-unknown-linux-musleabihf-0.4.1": + "1cf1d949f8a67edb2944e19f7f521fefdb4e7f2212ff7c36b5958c6a638cb3d2", + "armv7-unknown-linux-gnueabihf-0.4.1": + "19973f6c41071feab28e865cabd880f795923c07590cf66ecb35cfe63eff9b01", + "armv7-unknown-linux-musleabihf-0.4.1": + "d750b79dbee80a96eaa6b12f2d338577e11a8acfe6ccca4e4b30b42e595a6b92", + "i686-pc-windows-msvc-0.4.1": + "7d98efdfcf9480fc73405f1fa077b792a2a5d73546e7501a78179b3c42dbcbee", + "i686-unknown-linux-gnu-0.4.1": + "ac51b7be1fa76c86257e6430546bc0de47090a1a6b3cd2842bc9b770f9839aa2", + "i686-unknown-linux-musl-0.4.1": + "43818552c715eea40a9d8c2d19e271be6ed9c9481ea811f3b7f7b4a266b50abe", + "powerpc64-unknown-linux-gnu-0.4.1": + "12bb4d5297e47babea349b19c69bdeac3e48a6a6363e4b02ae6a16aaa1c524e7", + "powerpc64le-unknown-linux-gnu-0.4.1": + "13ee23388e55e716807c79085471401b9b9c8dfd66f1a7f2f4314e49e006e7b0", + "powerpc64le-unknown-linux-musl-0.4.1": + "c7a33c648769bf73486d7342093bbffed0147c04a17c91f0fb8d270d1b7fb71f", + "s390x-unknown-linux-gnu-0.4.1": + "cc9ed1e759ae963dd9f0b3d78bf060a74c1cc5530b91d6b45337a2481a596181", + "x86_64-apple-darwin-0.4.1": + "7166c6864d68e0372e3703d788cae0b9d92956ea11bde970ac5db93fffe1c76d", + "x86_64-pc-windows-msvc-0.4.1": + "a4f4335c3b62230f70de3f5dcd2eaca848f8df0ffcc75e0af2acf90e8bed1a89", + "x86_64-unknown-linux-gnu-0.4.1": + "f465e1f82b2eb4702f90c44a2caac64b13b72970f22ec73ac8bbf42fbf19e94e", + "x86_64-unknown-linux-musl-0.4.1": + "f83d084bed06b59c981a6de683eb58ad0d2e8ec36e066a4f82d8553327ee9c44", + "undefined-0.4.0": + "3bff99b44234a92ad27d24fb55a72d0d4c837aece85094ba26a8211f6fcc6a18", + "aarch64-apple-darwin-0.4.0": + "33393f06d0f950b715559b7bd1566f394a90020b9ad0cdb169a6ff49304aa0a9", + "aarch64-unknown-linux-gnu-0.4.0": + "0fe9eb6624e699085213347a1b0b3c6dfd8b4fd9454a41606ee695358a014a07", + "aarch64-unknown-linux-musl-0.4.0": + "5ad6693e937587abf0cc31979d4922b427995534b639a2b467199fc8c87bbafd", + "arm-unknown-linux-musleabihf-0.4.0": + "1550a498361902dd13ed5dc574f151c531c0ba75b150edbb24a07505ed5c9ad8", + "armv7-unknown-linux-gnueabihf-0.4.0": + "b06194e2b24e1b594d3beef364402393aff5af8ff567e4860add59a6035cb2ce", + "armv7-unknown-linux-musleabihf-0.4.0": + "38cd80d9de64eadb5213b4d026e9e5ee45d5222a01c859540cdb29042842a4ae", + "i686-pc-windows-msvc-0.4.0": + "60041b66a092cd7f13655ac19ad50aa83ea5f2012af3b87d7defe4ea96483efc", + "i686-unknown-linux-gnu-0.4.0": + "0e76ba23a272188f0a1c5eaaf7bb8ee626e5e8820ff96a2ae1490e591e7a388f", + "i686-unknown-linux-musl-0.4.0": + "bea1b1832bc8518c5f5c1c50f1dd3d2ef042d40a031da4fbe583fb991ba4f690", + "powerpc64-unknown-linux-gnu-0.4.0": + "56e80876b799c973fd7e24646e116a90b4011be4f2e6bdd27c5aa8e03f173124", + "powerpc64le-unknown-linux-gnu-0.4.0": + "e819a6dc969b696809d295cce013bc06b31aaac60b15f7aff9e2e580933e3ec0", + "powerpc64le-unknown-linux-musl-0.4.0": + "64002df7a5b93f7d599ab975de5675a759cfce0b34ce4204302bfa592d58e838", + "s390x-unknown-linux-gnu-0.4.0": + "d899f780193a53c6eacd878383a7496502e3319e22c2262f95de5df91ca609da", + "x86_64-apple-darwin-0.4.0": + "5788b3f1a4d51bce070d40d432ca0fe675510b501359b3a60461ade53ecd7272", + "x86_64-pc-windows-msvc-0.4.0": + "2681d6efd66fb7963317de0b6a8b4b63735e1f8e9f5fca6a7eeec14838307792", + "x86_64-unknown-linux-gnu-0.4.0": + "1302d70383d6da5a760cd1710511b118e10482dd11e4e6475776b13ed6a414b1", + "x86_64-unknown-linux-musl-0.4.0": + "033e69e03668de34eeccbdb3f559c1db578c3aad4a5a34509924871dc9413e0c", + "undefined-0.3.5": + "7f136b52040652a108a3ad45dc9c9deb94045c73fbc2ea59a11f578faeb55572", + "aarch64-apple-darwin-0.3.5": + "a9ddfd6d9350e6cb93e0e57d679f39a4493b510e5d14d475f8524a5ade1132d8", + "aarch64-unknown-linux-gnu-0.3.5": + "30ae840dad58774f0617de8d4a36a1fc9f2ea87a0ff6293f06babe0ddf0d56ae", + "aarch64-unknown-linux-musl-0.3.5": + "012b9455d53fb732fc1ec83c0148f87df6e2da15f206e44585577a1a3daef6a5", + "arm-unknown-linux-musleabihf-0.3.5": + "88ae64b409bcf91070022d19b9fb0e172e6137dcfbf388840b8ab60c8b8a523f", + "armv7-unknown-linux-gnueabihf-0.3.5": + "ed21de216cb027e443518f7efe4ce12b5f966be836b1e7c2a8612612bff719a3", + "armv7-unknown-linux-musleabihf-0.3.5": + "1fcf0ac7f29ffc7f05961a3abfcecc4f25f0d7d6fa78e304a073e03dcc5e6f25", + "i686-pc-windows-msvc-0.3.5": + "3607d1495951607e0e04ee763d67733b171146e3003f071894cc83d344b3943c", + "i686-unknown-linux-gnu-0.3.5": + "91ef1a96b3bd2780c55bd01b8f7631ff3d70c2956c9ec8e0d651bbcde8210df8", + "i686-unknown-linux-musl-0.3.5": + "8b70ff380216770feb7cdf32442e1819eb5fc25e5d161e4b7bf232e33b9e0966", + "powerpc64-unknown-linux-gnu-0.3.5": + "cb9dd4ece47beb2107f71bc36a3b7945640d4316a782778bce10f4c178187e12", + "powerpc64le-unknown-linux-gnu-0.3.5": + "343967158a0490afea4ba9f98b932da4a2681d3132b0e98be11f137e21c310f7", + "powerpc64le-unknown-linux-musl-0.3.5": + "7c65f135dce64e954b96893f0ac6ecbdbfb2db6b9d43c7c1e3d0d8a980a6ef55", + "s390x-unknown-linux-gnu-0.3.5": + "b335ff326e5096a7b76ff13e023948172b2f4d5e0ca306909f439176ecd05a8d", + "x86_64-apple-darwin-0.3.5": + "483bd51fdf952e039b715aa95887700e37efbd35eda37e38ecdb07fe136e1e9c", + "x86_64-pc-windows-msvc-0.3.5": + "339f3bec736bf392966b5451dedce7f88097bf410168a7c2b559a101e81ffe95", + "x86_64-unknown-linux-gnu-0.3.5": + "a1de10f96dbb75a549159bea5771d2be320c130d233422a327ada653e80967db", + "x86_64-unknown-linux-musl-0.3.5": + "f2b0ec58c2215aa618740a1a66344193f135652b1b8da25b065ae18fa71e7f84", + "undefined-0.3.4": + "89b619436021c5d28a680cc4c8002867199f5ad898c6e1c7afcf9f04054ebb0d", + "aarch64-apple-darwin-0.3.4": + "d00391fa2e398d431d0ab62868d3430cb20ae0b6ccea84afa61c4c63252e3086", + "aarch64-unknown-linux-gnu-0.3.4": + "f8b3a8fe20a3d5157ba9a49a45e57b94615a1488ef234377011b605355ec778f", + "aarch64-unknown-linux-musl-0.3.4": + "743f179ca7eb1fb4e12852d132923d7f764f27384270cb61b1a9441b61806346", + "arm-unknown-linux-musleabihf-0.3.4": + "8b21608c9a5f7f3a2ab329c453cb253173e0e6231e39163a13fa0dee6695aa16", + "armv7-unknown-linux-gnueabihf-0.3.4": + "2c9d6172143155f47a10c451ca2f6e8085bd69063268a0a5580be767b951545c", + "armv7-unknown-linux-musleabihf-0.3.4": + "9d1b93f687e1c2800dd48eeb6e9dceb6845af473ad9c8981edf234a53e7647dd", + "i686-pc-windows-msvc-0.3.4": + "9d164ee3db2ba3903a5993ce36ed93ca6bfa7ca429871829a1791fb27ee8cdbf", + "i686-unknown-linux-gnu-0.3.4": + "4b7a066c0f41691933e8a2e92a17ae0ae04853cc0539ee6b1e355bc73dcff6c3", + "i686-unknown-linux-musl-0.3.4": + "1bc925e4e94666c6b0ed21a89e61a72abc87549e2b1ab19fc29c7f786a5749dd", + "powerpc64-unknown-linux-gnu-0.3.4": + "63f90d3ad9a5fb6926ca799a609825bf838e280ce2d86e39339c4dfe0afe8158", + "powerpc64le-unknown-linux-gnu-0.3.4": + "513b36159e8deff8944398322aaf0d2e4e1a39c847419f48b7201f61c6018232", + "powerpc64le-unknown-linux-musl-0.3.4": + "a6c59a23ae3b23d7d17acef707ffe0ac077acd41c4a84941eba74707b4c021e5", + "s390x-unknown-linux-gnu-0.3.4": + "4c9aa26a2c8a92a2aeb2c3b5663a427cd17b16ee10e82a95ef054fb09826a0b9", + "x86_64-apple-darwin-0.3.4": + "70eaaaadb3145e7ba3551ee92559d19a926d165c60ed0c5f22a84940c4bcbf23", + "x86_64-pc-windows-msvc-0.3.4": + "32932773c45ee57e87225203b86db8283feb46a99fd53cb09ee17598046e064d", + "x86_64-unknown-linux-gnu-0.3.4": + "d0235c11b43ca285d066bdff63e674f71063c43d398b22590e0c7817f48c59fe", + "x86_64-unknown-linux-musl-0.3.4": + "c93ba9ebfd97440c9936630d5667f5ec53bb54f0dd8a5fc9a297a781aa338747", + "undefined-0.3.3": + "40a3283f6a16c73342f5cba24f7c1395f17712dadeb1d87b0e354a331229ac4e", + "aarch64-apple-darwin-0.3.3": + "a8e6593f5f787823de4c0509af030b0327b536903044c77c9e61941e0032def7", + "aarch64-unknown-linux-gnu-0.3.3": + "a0815f3950be714b4d32efacecf32cb33b2857f837fe9cda56b717d69a33851b", + "aarch64-unknown-linux-musl-0.3.3": + "47f6794a78e3ae62c27bd19d347b30362f3aa7466eb1767c10bbc5ddd015208e", + "arm-unknown-linux-musleabihf-0.3.3": + "90384cd65b755d3e60cbe21c2b991a1ddb03e42649d8598248b782d66fb41135", + "armv7-unknown-linux-gnueabihf-0.3.3": + "bf4e8c2d1137959dc2271190e036f9046ea95e82ef3af948ec9bf6a8e4ed4c45", + "armv7-unknown-linux-musleabihf-0.3.3": + "92578e0da2b2fff1002a70d217d54b3b1a37be424bbe91b03aa0ee1ec233d54f", + "i686-pc-windows-msvc-0.3.3": + "7184333831c6608f395c600ac2bb98890babf38fcea48eee8a9fe5e3a8c81bcb", + "i686-unknown-linux-gnu-0.3.3": + "11f0071666d5dd10255c73a80938eb573d7d080203c3f6b7f13ddbc9054cbad9", + "i686-unknown-linux-musl-0.3.3": + "de74c76c0c03a2a9638276d46c2fae14d732679a011600e5d361c880124a9aef", + "powerpc64-unknown-linux-gnu-0.3.3": + "6bd8a0cb576b49a25f57dc3f602f1caa1e37a60c602d0f170809af78fd66c55d", + "powerpc64le-unknown-linux-gnu-0.3.3": + "d9d6db9f3ffcedfd8a29a8f18af3fb09fd639fbdb33c2cb58b2bf5e428942269", + "powerpc64le-unknown-linux-musl-0.3.3": + "cd7d6199b1682d0348b3411f094e653e132a2c78ed39424ebc3278f78b51d0e1", + "s390x-unknown-linux-gnu-0.3.3": + "bc941ccd12529957eff13882cc8f2f37b5a47a4ab80ea67ba5444778764efec5", + "x86_64-apple-darwin-0.3.3": + "be1cdcdee3d91402d259c34b756a42beaafe7bb93567bb5d48c7fdcf799e423b", + "x86_64-pc-windows-msvc-0.3.3": + "742f3c5aefd0966c38705b0439641c390aef290e8ea007496ac83fcb825203a6", + "x86_64-unknown-linux-gnu-0.3.3": + "729da13410ba857c6e258753c4fabcccc39d32801fea7f5149997e9f88b27b3d", + "x86_64-unknown-linux-musl-0.3.3": + "8c7a7bf83bbe25bc5e5d7d41cc5f58148a8b577a298cd91ea9173b4e612bafda", + "undefined-0.3.2": + "1aadddb260b5a9f3d44f5832a834b55a6fd1573bb657d62759495dcdbe212507", + "aarch64-apple-darwin-0.3.2": + "a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218", + "aarch64-unknown-linux-gnu-0.3.2": + "6be360abe140f6818844aa3fdf6a3d004b2337b9c240be77c348bcf1f032e877", + "aarch64-unknown-linux-musl-0.3.2": + "65735e2776fae9ee3f4604f6d3c562f1f7cae203e428a6d8824a37379f469d77", + "arm-unknown-linux-musleabihf-0.3.2": + "68818f6b349260ae60bae969dfa048f45e4196c74a0639c4b9c3591cc0f56dcf", + "armv7-unknown-linux-gnueabihf-0.3.2": + "474b62fbbd461792e224dbc5e883a4bfe23f85aa2e3d45b6f1fda1b5be1ab0f3", + "armv7-unknown-linux-musleabihf-0.3.2": + "b66b76824df42c3057a9ed440a2d1630533a8fa1fbab3c99f237cecb0cbafc47", + "i686-pc-windows-msvc-0.3.2": + "26ddb27546bb7fc97758aed476938bd4469d9a6698292909b6e7820c48a3eead", + "i686-unknown-linux-gnu-0.3.2": + "44b11e3cb4e0e6e51e3a78738fa17da251975434b0d538dd6219fc221b520585", + "i686-unknown-linux-musl-0.3.2": + "37a8728fd5125990b4de3468a3f12b7242f336852c5c2b27fe14a81a7df6b579", + "powerpc64-unknown-linux-gnu-0.3.2": + "d4f02f9781be8e0bd2dc87481b1aa045cb37f2bb83cef20272a1a506ccffc9a8", + "powerpc64le-unknown-linux-gnu-0.3.2": + "6ca624ec97b6f13a65d8d0d4b854634b48e6b7b6f9dcd1433ebb584ee3164fcd", + "powerpc64le-unknown-linux-musl-0.3.2": + "7a50bf8228ec8ca60dc5ca1a1aaad4ece43d2ff08e32c0178ac0c5e652126372", + "s390x-unknown-linux-gnu-0.3.2": + "b0ffeeba7605cab0058713be4f23a9772f8dcc0218d760ee22635f9caf4c56de", + "x86_64-apple-darwin-0.3.2": + "7b54003989387079ca27b8895a11abba7ccae60712641592c81e0edab4c668dd", + "x86_64-pc-windows-msvc-0.3.2": + "ee77cedd463673505bf6c060eb8149f3d3965c46090bbf76595d2b05a95e596b", + "x86_64-unknown-linux-gnu-0.3.2": + "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd", + "x86_64-unknown-linux-musl-0.3.2": + "38d18a40c0bdf02f98f3ee35749c295638be37fb8699aa626ca5c87d0ad42512", + "undefined-0.3.1": + "5dce72d45cbbc0b661325e5f585440b977e095b6a29601059f509065f86ff9ae", + "aarch64-apple-darwin-0.3.1": + "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8", + "aarch64-unknown-linux-gnu-0.3.1": + "6d57e45392f7cffe62853f1f35382e8ac9d52f1061c97ecace28dbf50243e7e1", + "aarch64-unknown-linux-musl-0.3.1": + "2465eb291940c51cdf84c68d2a699d4026f7030cdaeb2a4e2801a3c4c0213f19", + "arm-unknown-linux-musleabihf-0.3.1": + "dba9127924bd5e809600b1554a8b91f8abde511cbe9ddb5027a9749254c7a531", + "armv7-unknown-linux-gnueabihf-0.3.1": + "e95c07dced47f3c6444c66f52378bfbcc0015281bda2ad79d308421a458b5384", + "armv7-unknown-linux-musleabihf-0.3.1": + "8c58b4ce189d5e1add276eaaf3d69c77de340cbbe79fec375333de00e4e360dc", + "i686-pc-windows-msvc-0.3.1": + "f5d15af65e0782f2459770afacb3ce8c5a4916566399e357c951618edbd27c9d", + "i686-unknown-linux-gnu-0.3.1": + "22508ed628b2966ec0cac3264db99337059f8c1cf70c0db0ee88d7d27f3e181f", + "i686-unknown-linux-musl-0.3.1": + "223b6920226ff5af37178b0511112d82af6dbcb24dd78230d972a17de6a4a0ae", + "powerpc64-unknown-linux-gnu-0.3.1": + "c4eb8e06853c0e1accb6ef7976ee52ffe21631709a3ff63f4a1523ecafd7354d", + "powerpc64le-unknown-linux-gnu-0.3.1": + "540aa375abc43c5fcb39e646ab7e3ebc14ebfb95264575c81b8c9c335ab4122f", + "powerpc64le-unknown-linux-musl-0.3.1": + "387459fa2cdfa3f9814c8a2de2a864a0be6ce159f76e831cd249f4b659edda5a", + "s390x-unknown-linux-gnu-0.3.1": + "b469bd51615edb3ec245b0aeb9338d074a8832856029b331f2a949946e921cd9", + "x86_64-apple-darwin-0.3.1": + "8a4fc632bf32b49a08d1994e6a4054b535eb7f0eb85e618f30fae86375b34cab", + "x86_64-pc-windows-msvc-0.3.1": + "e57ebd003eee92edfaa909fffec3214aa032590566851edc5ce55824c4aacf8a", + "x86_64-unknown-linux-gnu-0.3.1": + "1ad8815d46435ab29923d84717dd0f8ee467be055cff5c4ba1d9855882a6ae19", + "x86_64-unknown-linux-musl-0.3.1": + "e9f8396a2c06d6c06c36338b795e2978645c2b3b0e6915537e1860dd0cd951ab", + "undefined-0.3.0": + "1f52cb03becdae308666b75ff6b193ca55267a762ecf98d99f8f4cc8cbfe5a5a", + "aarch64-apple-darwin-0.3.0": + "232935b3b2c187c4f8dc8bf533875bd7163d06a6fab625a1770689b337cbfded", + "aarch64-unknown-linux-gnu-0.3.0": + "27fca2b1fda6870e1e6d376276cf0e7d3ca87b7e5c3062ef1301d9e5266cfa39", + "aarch64-unknown-linux-musl-0.3.0": + "55bc78ee396f3b9847d28a83edbeeb557edd78462b782459d95fa9cad86cca5e", + "arm-unknown-linux-musleabihf-0.3.0": + "9305f0214f16eda22e72f4dd08c6b980243fe16a43b6efcaf11227efd1aa5d9e", + "armv7-unknown-linux-gnueabihf-0.3.0": + "e949eb495b199e6c5853f6b051e3c7db84c044453e443d7b7892aef4eb08f5bd", + "armv7-unknown-linux-musleabihf-0.3.0": + "c466e061a8547a669e216321738d02ca5c864eb4ab3feac53a51a681a07cb2d7", + "i686-pc-windows-msvc-0.3.0": + "1dbe4b2b9829bb11cdb3ec64e916749f6224f0db0a65bbba69570a8aa1289e2c", + "i686-unknown-linux-gnu-0.3.0": + "b5a7fb7e649de9fb0342fd42c3bb1c5e6dd25d96096e08af99caa276fa44dc07", + "i686-unknown-linux-musl-0.3.0": + "569ed9ac409ebce382e1583c33705e159bb960e79f9fe58feb9a357676be3607", + "powerpc64-unknown-linux-gnu-0.3.0": + "0e075944b22557da941677ff25fa21677cd1eaf8302782dd2c94643494f667e6", + "powerpc64le-unknown-linux-gnu-0.3.0": + "6886c917446d6b954eff5c688596a4216e9418560166271eac1caa722847350c", + "powerpc64le-unknown-linux-musl-0.3.0": + "560583853792f5e3e4d40594436d5f75cdbc9a4e304d6f781f601b9eeaafbfd1", + "s390x-unknown-linux-gnu-0.3.0": + "72b1b81523466a0fbe388bbde0a6926ed0af4884cb46d1e46ed1c0232a076cab", + "x86_64-apple-darwin-0.3.0": + "8f3abf9bc7f49ddf85b1ebb4e5a5dd2032b6e7a4492fb5fce4b70ee4a9938733", + "x86_64-pc-windows-msvc-0.3.0": + "b8b693699b46d2063cf92ada07671a309f14ccb99b34f9b3f927f7fa08b24c19", + "x86_64-unknown-linux-gnu-0.3.0": + "06e38986b2923882ad250ac42c9e5db3295bde33693aa9a63b8d32632daba007", + "x86_64-unknown-linux-musl-0.3.0": + "194d2a550af3e334f693f6afd716d66adc90445805e72bfa8108f36714ed7431", + "undefined-0.2.37": + "bad5e3e29e3a795a789dfdce52b4ae4c252f95572539b075bc938870e6e7c1df", + "aarch64-apple-darwin-0.2.37": + "35786030f926e3d34d186edc0ea3989698e57755852af9ae4b39da5109abcbfa", + "aarch64-unknown-linux-gnu-0.2.37": + "ac1b4688074f5a2eab1fbe331e76b5f5766e143a8eac87f64f24379168b971f9", + "aarch64-unknown-linux-musl-0.2.37": + "ddec1dd3aced1a209645c0d4c8fc9bd9f3c6a4577c43a854efd6708440f34f14", + "arm-unknown-linux-musleabihf-0.2.37": + "d99c5c44ae042249b50720d3979aa5b82f61838ee76474a250ced23c09475a85", + "armv7-unknown-linux-gnueabihf-0.2.37": + "3fe173e1e1d2f1bf0196bf8a140f39bc4eee34d16c6f758e552bf2a40f82b579", + "armv7-unknown-linux-musleabihf-0.2.37": + "dd5a3225a8f39a4621425079f867decea4638e21d65cc9fc6803f1f6d4e22f6b", + "i686-pc-windows-msvc-0.2.37": + "4c024f88c23359f8c0a61a31f93197e1fcc0b6e2ed2ea17733b99494b75078c8", + "i686-unknown-linux-gnu-0.2.37": + "a041764c46d872124b4ba390bf1a9263fb52fe1b17cfbd5af85a0deaf66ade1e", + "i686-unknown-linux-musl-0.2.37": + "b307f7dd65a3175aee4283603c0107496de14e431614ab10060d89f4c9ceaf31", + "powerpc64-unknown-linux-gnu-0.2.37": + "c4bee003a56938110c1e9d1c1843837149f20696c35d148567b1106223f06200", + "powerpc64le-unknown-linux-gnu-0.2.37": + "c54213db80c976487f54e5521f73010029da1bcdd22136a52a9976deca30db9e", + "powerpc64le-unknown-linux-musl-0.2.37": + "8da6a98b7bec35b6333b33872c641a52070331192da840ea5716fbd182f66e27", + "s390x-unknown-linux-gnu-0.2.37": + "5603fbd953a980203c9f6adec0482165a3b8274b2202a9fe46e1ec3168d4386e", + "x86_64-apple-darwin-0.2.37": + "13185dd359d6b3c3c0e170711b2939f3512741ec64c436e0bef83813e94a6691", + "x86_64-pc-windows-msvc-0.2.37": + "ea51e0dfdc0c1884d116b5a12b589e65bb47d0b2d071d6da4a23f453585be144", + "x86_64-unknown-linux-gnu-0.2.37": + "2aa80df3a7120a13fe8cfd0ced688a6285e58c40cfa878e6de817356914df485", + "x86_64-unknown-linux-musl-0.2.37": + "a4ec0d06361c27a87111212623559da332382c2ead25c1f4c9386adee9905b62", + "undefined-0.2.36": + "6e7e0950c5808eea0bda615ab5d2e9fa517434edc0c17d0766cd47606241c060", + "aarch64-apple-darwin-0.2.36": + "89f0f76695ee554cdfae60245667b795ffeac7e4d52c0b7fa90bb46d4cf95d59", + "aarch64-unknown-linux-gnu-0.2.36": + "8bbc36002d398b5d9febe93be913d42d2844944451189cad6ff2b844c604f499", + "aarch64-unknown-linux-musl-0.2.36": + "921a5c069a74608e63e7292d606b1cf0096ffd0914f28bd825968ac66ab3a77f", + "arm-unknown-linux-musleabihf-0.2.36": + "349369041c1c86c69bcbdbc3fa2bb0d03e864a95db5e50ef0c04ee67c4e0d428", + "armv7-unknown-linux-gnueabihf-0.2.36": + "42d15ec25a0e04fcda9e6e7501e8cc51d17e593a8758ec76e686381336ec6302", + "armv7-unknown-linux-musleabihf-0.2.36": + "eaed31f496ce42bccbe17eab69d36351c67d3832f9c7740e33c34a3edf5c5451", + "i686-pc-windows-msvc-0.2.36": + "b8a3fcaf5e66ae916f31d8c1df8a7d32558eb8e852087c6038cc80fb3e04dace", + "i686-unknown-linux-gnu-0.2.36": + "1f0515ebd04690b5f09b5a55531eff3595fc778d021bf6b33b5d5dbfdd76ce0a", + "i686-unknown-linux-musl-0.2.36": + "07bb7a141abfe23d0fbdf30e0840865671f491228288cd851d943a984ff5982b", + "powerpc64-unknown-linux-gnu-0.2.36": + "9ec964f73faa23b52e8022086fbffc8f77dbe346e5a17344967a290c10ea0143", + "powerpc64le-unknown-linux-gnu-0.2.36": + "f7cf2055c9048faebd75665487d20a55812e37535c6f8393a97f715f40482433", + "powerpc64le-unknown-linux-musl-0.2.36": + "03c3221271bbde6333be35e7bdf0576a73165f8f35c48e33cf09b8e14f907718", + "s390x-unknown-linux-gnu-0.2.36": + "91788d177f47e3a6db63d5d619f622814b1407b673c311873b4868f223eb2ca5", + "x86_64-apple-darwin-0.2.36": + "a8c08a6c978b0ef87c00012d892d936324dc9a6881efefbd028622b69c903aa5", + "x86_64-pc-windows-msvc-0.2.36": + "ae6e07bd2c0843a0ffd18959a519c125bcc444d4ad1b71c00e7c3734bed0777e", + "x86_64-unknown-linux-gnu-0.2.36": + "6fbea0801c1698d00b2300b220d4f72a4edeb0406877ac6d774f4ff385b6fbe2", + "x86_64-unknown-linux-musl-0.2.36": + "d3543c84d8b2da5d8f08b6f2e87e792aa7626c47cb65458c7b92e68e8614d3a8", + "undefined-0.2.35": + "19425afc472eb6e7ff6c4abc28ed2582af977aab1b1d7f15db34ec9579ef9095", + "aarch64-apple-darwin-0.2.35": + "e07fd0ed3b5e92ce9018f8775aa76cfd891fae8cb0a1627d5a861158fdbbe32a", + "aarch64-unknown-linux-gnu-0.2.35": + "41d1a15fbd346ca3b33e8c60e54bc36df11a8e8655e98e25801847c270e1b6f9", + "aarch64-unknown-linux-musl-0.2.35": + "b8c920e4d335f09ab032087e0f27b4beda00248577ae708fbebf0362f7b19818", + "arm-unknown-linux-musleabihf-0.2.35": + "d50f55d2cdcca7aa7542e73482106fa8413541ad17da47a2a9be612a0b53dc74", + "armv7-unknown-linux-gnueabihf-0.2.35": + "322b8564e20a860d5d6e0d9de950f2f0d8204ed7b7a9605f25c0039cb01ac6a4", + "armv7-unknown-linux-musleabihf-0.2.35": + "5f2a37d0414c8585770721139fcad061f123f312ca85faebc70f8836bc5b0c30", + "i686-pc-windows-msvc-0.2.35": + "2bd193bb68095b21b86a1126a6fe7740a36bd76cdbb606f51b0da6f19214487a", + "i686-unknown-linux-gnu-0.2.35": + "44719f49c7e7d634db35d9656f2f168fc13042ab87ee9afe8f04c864a3c341b9", + "i686-unknown-linux-musl-0.2.35": + "2cb162263ee067df2a10c3f9c9959835862aebc17402b7e0decff4a0dda30b45", + "powerpc64-unknown-linux-gnu-0.2.35": + "31ca8623f79926496f78d335839d13d15c66c7e164804604e8f4535be4f5be19", + "powerpc64le-unknown-linux-gnu-0.2.35": + "b1d797f9a9f413f3d3f884accd47a97c84d64145407d458e4442b4d011aa39b6", + "powerpc64le-unknown-linux-musl-0.2.35": + "fc7e73e1af403cb91a0b4d6bb3d133facf93d0c28c188bdb5f9294d4e1e0e657", + "s390x-unknown-linux-gnu-0.2.35": + "f52ffe9ceb3817df9a999194ab32fb8f997707a44e6597dcede0df238fc14c77", + "x86_64-apple-darwin-0.2.35": + "f8159e1977b00cf99e120858253ee675a66669b820e63af7f7e7e91cf6a3b9da", + "x86_64-pc-windows-msvc-0.2.35": + "1bbb2a9a81f609a5f257ed066e25902bba995ca2ade3cbd4839703ffbd221071", + "x86_64-unknown-linux-gnu-0.2.35": + "f1a9bcbcc3e085fb5ee6a79f5778373fe27fa192d95fc47db20c596789dd1b97", + "x86_64-unknown-linux-musl-0.2.35": + "bec7f54d33aaff97098157b4893b9d4a93200c2902772cba13d60c266a54d087", + "undefined-0.2.34": + "2c8167c6b14738d2d94cc864cbcc5a2f4b45d9136f8cbed348dba937a03927fc", + "aarch64-apple-darwin-0.2.34": + "2eebf71aa924d8d977983394c212cb3ad99f6e241e77702822e8f407c8e231e0", + "aarch64-unknown-linux-gnu-0.2.34": + "022b805b4d0360e4441fb94262e6a4cdcde9038aabe156242ba833e1ed00e0c3", + "aarch64-unknown-linux-musl-0.2.34": + "227cd1dabb4ebb98e51c1b7735fa94dea96e14db7efb2d3d76b48c87a61a3d28", + "arm-unknown-linux-musleabihf-0.2.34": + "b71616ec27d83325f0b1f5a801181da201c2bc0c148c20006a40e48adaf2ad6f", + "armv7-unknown-linux-gnueabihf-0.2.34": + "5e3ff5bbb4159b7a2f9768caab5bcb692756509566ef52fd5eca129b2e0949b6", + "armv7-unknown-linux-musleabihf-0.2.34": + "7366c01e5996b7d5251423ae37bc3646e919b39a0d9f1fbde25e3215134a006f", + "i686-pc-windows-msvc-0.2.34": + "34035c24e9c6dcf1164f10fee22e12fd03b329479233986909458df3259cf22f", + "i686-unknown-linux-gnu-0.2.34": + "99c3873d4bc3816c383c0e2686de1066be1ca8ff546e29e418e435296df13ae0", + "i686-unknown-linux-musl-0.2.34": + "e659c3d71edba36fec7b9d742c5c4c3172a22bc409d713bb2d944a8a916d221c", + "powerpc64-unknown-linux-gnu-0.2.34": + "e5b4e6c20f5f79abbc4e9eb3881ea2b1edae1ad747980d7a2e062f3be09478df", + "powerpc64le-unknown-linux-gnu-0.2.34": + "125035676a19c335f6c8af34ccf69d5df144183c13649e823cc0959886a11cae", + "powerpc64le-unknown-linux-musl-0.2.34": + "728c7750d408d3300437fb79b74b126e5b49382b45b45fa22d49195ebd19b2cc", + "s390x-unknown-linux-gnu-0.2.34": + "0da036696c1decfa388ebaf98e779e8085fd2bb76a91128bf2445fe32c84c053", + "x86_64-apple-darwin-0.2.34": + "62764007f4553f3677ef86e864097405d1b054e8a62e89f047e545816347491c", + "x86_64-pc-windows-msvc-0.2.34": + "d237ebacb6f4a651fbad3af702f29b8262b825e070c87e9020d5164936459393", + "x86_64-unknown-linux-gnu-0.2.34": + "cee114bb3c73a4be5066660d71eea1ac996378f567ba69fb7f29c688289245cd", + "x86_64-unknown-linux-musl-0.2.34": + "d1d49d2d3e1e2e2ba547b6cad8b1ad279cdbf622fe5b3fe3b6d470d7a06e3c92", + "undefined-0.2.33": + "7dbdfb20366d96745ab9e48c0d8bd0a88926f0eef4675876fd45e4ecc3942cb2", + "aarch64-apple-darwin-0.2.33": + "a2602b99e71bc04d7eb11df00b87be068727bb47fc415f7fcbd24dae49c947a3", + "aarch64-unknown-linux-gnu-0.2.33": + "d4d24e221c5f1c9b0f2bb39b919c933259175bb9db37845a92d31bf241f28035", + "aarch64-unknown-linux-musl-0.2.33": + "9d4ba96eee49b9483fd55ab1b376ed4b9f88f0f9d155c0e48e7280d3cc388d4e", + "arm-unknown-linux-musleabihf-0.2.33": + "9940e8f34a702e6944ce953208c1abac7bc9fcbe8348dd76c3b5eb62c1125126", + "armv7-unknown-linux-gnueabihf-0.2.33": + "08b9a84370acc5ea1631a8fff94bf7522305612da3c24c612fc1d4fb5ecd3839", + "armv7-unknown-linux-musleabihf-0.2.33": + "fa5a2cdd3714a2f4b8d6f64c86b988e6c7189d67411814a6c20905992201d16c", + "i686-pc-windows-msvc-0.2.33": + "69c5d28aa75d0ce3fa5466736e2e156db48514cd7c9c44e6bc6515994944695d", + "i686-unknown-linux-gnu-0.2.33": + "176caa5100e047b32e84c0c7ce1a31f74610b3f94266f5aa3f86d02417fcdfb6", + "i686-unknown-linux-musl-0.2.33": + "f0d93ceced329740403cde3c0e6f44325aee40b5619c3fc855e602f1829bf731", + "powerpc64-unknown-linux-gnu-0.2.33": + "7aa9bf5a765801bdfda72b491d716cf08eea7d4821c41698217732a403b7eac2", + "powerpc64le-unknown-linux-gnu-0.2.33": + "329aab924d8572d6aa19e2c2e225beb5bcca8bf04e62cc023941aaa06768fd6d", + "powerpc64le-unknown-linux-musl-0.2.33": + "1c99451ea9d95732e78bf3c612bce889a1815cf333406857b170986739fda597", + "s390x-unknown-linux-gnu-0.2.33": + "095a4b15583e21d521e7954b5da62d5a08b69a08cdfb8847b3b5318e054c29ce", + "x86_64-apple-darwin-0.2.33": + "0d4a2c20e1d0e06c83a60fac0d85bff46cd5312f146dd0f6bf35b63ae8f7a9fe", + "x86_64-pc-windows-msvc-0.2.33": + "c080525062c3d803e63ef493002f234056dd6efe6d0281d86d672510702823d3", + "x86_64-unknown-linux-gnu-0.2.33": + "e62a4123e6b77c9dd22f133212f7bac638077ebde73daa20fea3bef3ac51c84c", + "x86_64-unknown-linux-musl-0.2.33": + "5f6842bd7a800a83c568b7a2cf18f4d9428e929e7ea91d55cc8d53e0a0c10c42", + "undefined-0.2.32": + "b7694bd29041e5315cbd7194253bb865a51369e19897d7b6b303f4d6255477db", + "aarch64-apple-darwin-0.2.32": + "5084b7544da648d3467440f87a3f2929ca7c593a311a3b77271b638ca7664f3c", + "aarch64-unknown-linux-gnu-0.2.32": + "97879b661787586ab3a747d9a65a0c295d9ed445001b5860f9ff2923ef07d824", + "aarch64-unknown-linux-musl-0.2.32": + "b3fff6bb0ae62154c5d17256b40f3d568a7bd7037e4839cb672545b16cd8622f", + "arm-unknown-linux-musleabihf-0.2.32": + "9b3957aea729f36d823a59ae0dba033860f5904cb42215d55c7857d2d1fb3340", + "armv7-unknown-linux-gnueabihf-0.2.32": + "c3afbf787fa9b2cc8fcfaa74cf0fc723d224d56b514b0851dc0901747b03fbc4", + "armv7-unknown-linux-musleabihf-0.2.32": + "33941dd54c28c6b56f105cd198e7ca7ea480676bda71b0c5e31b55a1493c4acb", + "i686-pc-windows-msvc-0.2.32": + "7a449bc0fe9326d31ad809c8cfbe19ba2b67b28c9dc631bb6f1696334442d928", + "i686-unknown-linux-gnu-0.2.32": + "1c91f7ad89b5697a33906be435fe6b9fad903916096ef61f034257252a8e4c86", + "i686-unknown-linux-musl-0.2.32": + "ba1b6775f17d1522a6ba69655bfe792ba0b4c9ed481edec08ee56bd74d0d5368", + "powerpc64-unknown-linux-gnu-0.2.32": + "e5e0d7b9ce6db091ccd8b642d11e65205650cb9b02514fdcc9ca35b699cce0f6", + "powerpc64le-unknown-linux-gnu-0.2.32": + "60534e2567ee4b84922d4b6e39000a2709bfa7f2cb162c8c0a2274f3c4ccd2d1", + "powerpc64le-unknown-linux-musl-0.2.32": + "732bb92926d033e22bf65c671ecca31f5a08f15b696fa944e7f57d70a4823f1f", + "s390x-unknown-linux-gnu-0.2.32": + "80420ca075a995f2171b68d6311a304da59461c39594db88d146079f2656b51e", + "x86_64-apple-darwin-0.2.32": + "e86f3bd4e7c30b0e4094d1eff520d762fdfac9e55da785db23b0139b675aeda9", + "x86_64-pc-windows-msvc-0.2.32": + "1725fafdcc1390574b8682805ec31ebc9287085f562dc7ac6a64b186abaf1b0d", + "x86_64-unknown-linux-gnu-0.2.32": + "c676266d23c8dbe7832c44f37832c4e4ecf21781b7b0560bf27b270bedb14462", + "x86_64-unknown-linux-musl-0.2.32": + "e7deca89ca4e273c57adc45cd91e83377c74916feb9ece311cc93c8a8ab2c2e5", + "undefined-0.2.31": + "81dcedc57262b565ba3f9f6a20d368a2be304bbe845121f849d1c75c6d4b53c9", + "aarch64-apple-darwin-0.2.31": + "34938bcc045b35a646aa768d660755e838a23ab224ea3687dc577299da227fb3", + "aarch64-unknown-linux-gnu-0.2.31": + "f8d46c40c3f6ff762e5f0408a151f4e2ce97ff878625b0c9bd5ca13f14e576e8", + "aarch64-unknown-linux-musl-0.2.31": + "f2bdf2132993b1dfe50ee610e9df2a56cd89f0346d9d8a5cc3275b47c4c5e7a0", + "arm-unknown-linux-musleabihf-0.2.31": + "8c4628e19a571ca7480b48c6ea739efeae2abfe08e07fb8f8e7b0f49887af223", + "armv7-unknown-linux-gnueabihf-0.2.31": + "8e7879750c682fbd3619ced0770a43afa902865a839cc84fe361bf5a9f55154a", + "armv7-unknown-linux-musleabihf-0.2.31": + "051c6f44f5f1607ea5f11d8a73cc91064a29c7293d6d050d2d7ae34c9d1ec680", + "i686-pc-windows-msvc-0.2.31": + "382c7007bdfa6f02d436b552fee33d2d2beec5335410b9fe308067c094f95742", + "i686-unknown-linux-gnu-0.2.31": + "dcecee22480a73c9a31fcf76cd633ab4c4befb10180e61b1b298e78a85ea7f8a", + "i686-unknown-linux-musl-0.2.31": + "990d1ac694f8d4bc31b79a0a64817d0781f0c59a42e57136cf9165dbb7aeab2f", + "powerpc64-unknown-linux-gnu-0.2.31": + "3b556388d586f24e37c6e6478b97d4519a402b564b7a70f1ee5f4d86352547ee", + "powerpc64le-unknown-linux-gnu-0.2.31": + "c2219e0285a14b8d1dbbcbae750ef9b66a3567e862bec3fc2f55e465941f78fe", + "powerpc64le-unknown-linux-musl-0.2.31": + "1756ca439bfcc86b40ed3d987170439212c54118a5741a0af662892817e46f93", + "s390x-unknown-linux-gnu-0.2.31": + "98a83bcfdeaff40772f7338538ea8a1b94ae60a94b20e552a80efd0ef4db7add", + "x86_64-apple-darwin-0.2.31": + "8674abad2d95099de054c92a9310d95466932176548a57916fb5f1c5674db790", + "x86_64-pc-windows-msvc-0.2.31": + "e5779b76db0ae0334221a1dc9956b97dc10969735750777717551397a2b48e31", + "x86_64-unknown-linux-gnu-0.2.31": + "351278978126eb9a74c4d735d3ee2191de5cd492fcc1615cc4c1107ad3e632ff", + "x86_64-unknown-linux-musl-0.2.31": + "003e8ea52e2b8383009f5d2bc78becc27f6c97bd9f6837140162cc25247a465b", + "undefined-0.2.30": + "1961bf9f481364dfd34c2fa1922152d0901f230de444b168f2d7e29c5b48de5d", + "aarch64-apple-darwin-0.2.30": + "387f24ebf55f304352bc5fc4638ca251112ab682291a00290de3753a1b5092f7", + "aarch64-unknown-linux-gnu-0.2.30": + "3cb0b65d21961dc36044562b9ba9462320e1106bb40f55e5ec03614c83a8fe0d", + "aarch64-unknown-linux-musl-0.2.30": + "4b4e5fb2ca63fee674a32ed99e1c371d4dcfe194787c3bddc7bef37b4ae3fd24", + "arm-unknown-linux-musleabihf-0.2.30": + "aa68e7f58b1b6b31481f104893f44acdd57ab712f17429f3bb6ba03ac3fee370", + "armv7-unknown-linux-gnueabihf-0.2.30": + "355672634f530981171c67c7d99bda999bfd66b4273d0d292ce3f5db25118213", + "armv7-unknown-linux-musleabihf-0.2.30": + "b3fa035bb0b493ab7bb65ff4d5c6c6740a8804815acfbd50c718ec03f6876e33", + "i686-pc-windows-msvc-0.2.30": + "2ce7b022fab83161cf9b26a8413702ab328c2f01a530a2739712527acd769068", + "i686-unknown-linux-gnu-0.2.30": + "6777ab4ee773df50790da19586afe41507dd9b4c69db39e09154cc013e066aa5", + "i686-unknown-linux-musl-0.2.30": + "2145948b75e56106618e2b7a9cea916194cca7768c7e83a3e06095e4690f214d", + "powerpc64-unknown-linux-gnu-0.2.30": + "7287d8034db3f1e071ea1098f7fc0cf8fd853c7731d37f59e374e9c771d92026", + "powerpc64le-unknown-linux-gnu-0.2.30": + "b7c8a829b869e11e64ca9fa1d748b5094e1841c6487f017b70117d826dfe6c46", + "powerpc64le-unknown-linux-musl-0.2.30": + "cb83556e2cb6f6d7731c436dd3ad1b048d323622d6d37ecbb3e320d7dd0c6d39", + "s390x-unknown-linux-gnu-0.2.30": + "c8f623ad3da4bc425185fc026b52b80a86b796955dc65ccaf67e7a4778bb05c6", + "x86_64-apple-darwin-0.2.30": + "4048630dcfca6946dd8b7f2e8ff38dbc54a9e47ae50f9e04a372081c413e0b66", + "x86_64-pc-windows-msvc-0.2.30": + "8cae7297892b5cd947fc8dc9ef045dc82c8a3c948413cbc68aa46285b888031c", + "x86_64-unknown-linux-gnu-0.2.30": + "572a09703b40680191f4da33ffad2ae57cee93f0007f1eb25b84d241b0b418f2", + "x86_64-unknown-linux-musl-0.2.30": + "430aa21ca5c6eea5731dd5f3f8c0a364160a6e2d7153dcc0b3941ecc06947000", + "undefined-0.2.29": + "4cc0762718440d622e351871e568dbbd1b4325a0a362bea4158adc81bf81826b", + "aarch64-apple-darwin-0.2.29": + "34e214671c640b72e7805ae4802ad774f9e7636d59361b6434f38950af0fc6c3", + "aarch64-unknown-linux-gnu-0.2.29": + "ada417de9049b4e16cc4b31de1096e19835bd971569f6462d3c6d24ce75006b9", + "aarch64-unknown-linux-musl-0.2.29": + "77607a17959e650fa085a28f74b120db065833957a8306ee458a06e331433a21", + "arm-unknown-linux-musleabihf-0.2.29": + "fc91ac746a94ae16bfb1fbb0fff159d9df6e40b7ce67f91dc7ba7984d417912f", + "armv7-unknown-linux-gnueabihf-0.2.29": + "9ddfcbac00d7594e3c99ea4a97fe3a63895266a5993ae458e70e05e6834e3247", + "armv7-unknown-linux-musleabihf-0.2.29": + "62dc5eb5430aca18e02b0f8b156716bdcda15ff4a7605f4129500d6f18d157d7", + "i686-pc-windows-msvc-0.2.29": + "0ff66ebe55fca07d6637b39ff9b9cf8169c726d5c3d3776e232b8cee2b04b22a", + "i686-unknown-linux-gnu-0.2.29": + "719d62f7e8e48fb746454c817f8ba094958f673bcef3bfbf0a3fe21b9d9fa296", + "i686-unknown-linux-musl-0.2.29": + "c204569e573555810c54cd7fdb96cac3ecc1014d69fb3017b44270413313a212", + "powerpc64-unknown-linux-gnu-0.2.29": + "c4e63df2e3843c1fa9919df76d00996ec2f8d733b81f13673c7f09ddc5e8fd85", + "powerpc64le-unknown-linux-gnu-0.2.29": + "b18ed91775d1a715f975c91a3b9a16f53b7c5e25ee6d9101493f1091c425edbc", + "powerpc64le-unknown-linux-musl-0.2.29": + "7a35b550385b8131561de362d769da1477b3c22a9eb3c9a42f4e758971d56b01", + "s390x-unknown-linux-gnu-0.2.29": + "47c3b46b281c46a1379a9ec3e11748e44c33b613582f294f3fb5794270c49d90", + "x86_64-apple-darwin-0.2.29": + "8536255454ef7c9875d64baf7616cfdad6ce263270860f34b6ec38f02faffa0d", + "x86_64-pc-windows-msvc-0.2.29": + "45456b9383097670a5f05ecb1288f9d6b7f7d84889ae7b6022130feaae834334", + "x86_64-unknown-linux-gnu-0.2.29": + "1199ddcaba212d1909d934b7edfe24ee39f6ac60cfce1a558d74d082f9763937", + "x86_64-unknown-linux-musl-0.2.29": + "a7529403581edef6e1e34d1b7c321540e526105aedaea1672cb0f37cc1b5da0c", + "undefined-0.2.28": + "4d42d64676b09efb34a01c867a6fe2acf9cfe9be8d8886b08177f837bd615234", + "aarch64-apple-darwin-0.2.28": + "b84fc81eecdeda15f9cedc1634685104463798903ad2241f46994bec17bdc5be", + "aarch64-unknown-linux-gnu-0.2.28": + "103fa6a5e68562376351d174bedb5013dcc52b0a7a27258336b87a7186aa10be", + "aarch64-unknown-linux-musl-0.2.28": + "bf23111a512596da533ad21ef94ea1758957f0f12ca9a306b298617affa4db8d", + "arm-unknown-linux-musleabihf-0.2.28": + "0b0113d0326fae2e99c9ac6b8a66607f74aadae7e9868149439472fe6c3fabfc", + "armv7-unknown-linux-gnueabihf-0.2.28": + "6e50f4f5690f0135b30d0f6e4cbbceec1909bdef10b1996abb42042b6b28c64b", + "armv7-unknown-linux-musleabihf-0.2.28": + "ec9bcd417ccd5608d8f6f053b84497204704c6439c04e80ccc9cd4ec379a3fc3", + "i686-pc-windows-msvc-0.2.28": + "75de1d50a1f5d19de6794375762ab8afefb0b0c4704d6c599e5af6cee84ad0e3", + "i686-unknown-linux-gnu-0.2.28": + "b01214f008a456aef5acd9043fe13ffadd8bc7975912f288a4afc7f26ae1136f", + "i686-unknown-linux-musl-0.2.28": + "ded399ffdfda93b56c78a29eb3889f7e8c0700348af73207972940e66fb45c43", + "powerpc64-unknown-linux-gnu-0.2.28": + "5e1cda75b920f9478f4711a3420ddad07d2d25b5f7eae93430968a7af57568f4", + "powerpc64le-unknown-linux-gnu-0.2.28": + "0b246ecc617ac22c75170bf9db20ba03fee0df46f7adf6b42a3f949f5316e380", + "powerpc64le-unknown-linux-musl-0.2.28": + "8928c0ed5e2a5ca68989d823ac813592c25de7c2c2e77c999cb79f50b6c9425f", + "s390x-unknown-linux-gnu-0.2.28": + "b865fec71668ab77aee6f6ffc823a3fc4f92ac04d0746755e1fb624fd3fd7f75", + "x86_64-apple-darwin-0.2.28": + "52da204e0117cb65471ff2e17b449f69adb6091720e0290721aa2a9d7947f6d6", + "x86_64-pc-windows-msvc-0.2.28": + "7635ff298ddfde400e00054ba31d88a139dbfec234578f10376984f3e0aa36e2", + "x86_64-unknown-linux-gnu-0.2.28": + "9c6cbe9f7d7b2abcb45e028d82a5986b951af76a587c93c99922ba0e71c7f21c", + "x86_64-unknown-linux-musl-0.2.28": + "ba2656952c1dd29e400a9d21a7b923b26f1cc8a4b29468e7c99fa4613034d837", + "undefined-0.2.27": + "2dc0595cca3a3167832c87ddb340138fa77e682472791ff9c4bf4ddf39a7364e", + "aarch64-apple-darwin-0.2.27": + "d071d3063933e2e98322619bd4318594e84b7f6ce4f6c5c13a2ef424b0704bb7", + "aarch64-unknown-linux-gnu-0.2.27": + "c390e4791f3bcb44041d326f6a7aabb2498a610d2b1d28964c3fa8de97fa7dc3", + "aarch64-unknown-linux-musl-0.2.27": + "f7ad07f32e01dfdbd6b217c7f6acd7822eb6600d9992d204b93bfa0749bc6b29", + "arm-unknown-linux-musleabihf-0.2.27": + "41df51f4a9de2258973c6f0b80d6122475f18909d3905135d9b0defcb0222737", + "armv7-unknown-linux-gnueabihf-0.2.27": + "0316c82068bd34faee8a26bff0b85c25951a10fc54bc2ec5bfae64dc00e4a58d", + "armv7-unknown-linux-musleabihf-0.2.27": + "8553382a71fbd84e351f732ece7513e1b36a294dfb2949d956a45e389a397b6b", + "i686-pc-windows-msvc-0.2.27": + "6183e4fecfe5404dc69d9cc23c248441ba25a21541c8046c8a27b09a63f224b7", + "i686-unknown-linux-gnu-0.2.27": + "4def707256649e6ad40ad33c8c00464d163728a969e54baf94f9d8463b4b89d8", + "i686-unknown-linux-musl-0.2.27": + "383bdad28c1a571856aee566f37f888c65fa36385d9e0fff50950dd4280d09c3", + "powerpc64-unknown-linux-gnu-0.2.27": + "bc7161175d823aa92d27402e137d1753da1a37fb6d2f7fe534e829bf7f9317cf", + "powerpc64le-unknown-linux-gnu-0.2.27": + "bd8eb63b1e3de60279c8daa045f3f738f4f533787302fa0199275b8624831f8f", + "powerpc64le-unknown-linux-musl-0.2.27": + "9eff96f3761db33e7043cabdc38b5e49011929dc777ee44f1ea3c4747ee07dd9", + "s390x-unknown-linux-gnu-0.2.27": + "4a8e46f67995c86e955416907b4b37558f9df6786851e943ae896f22fb6a3bbb", + "x86_64-apple-darwin-0.2.27": + "56be1ded925e7c1852f8853f7637942786ae379c0ecdbc88cf101f17f8413129", + "x86_64-pc-windows-msvc-0.2.27": + "1ea0b0623c362c47c6d00801e09ddf948cc27cc18200e5390469e279dfb85d29", + "x86_64-unknown-linux-gnu-0.2.27": + "224cdff5d82ff7053d1a9bf61e5ae89961d536eb2da8a4a13b93a49a0ab434bf", + "x86_64-unknown-linux-musl-0.2.27": + "2fa8e18d3804863c1355ef8b0688530c1a57b1981be69476641a8dc87c812d60", + "undefined-0.2.26": + "1ff81cb3c0618cfcde78b67ac1b1267a09ebef69826e20599aa92ed6e57b6321", + "aarch64-apple-darwin-0.2.26": + "e99954e3853a367497f66ed5ec1460cbe0c527e5664732eb2407ffc375cb3207", + "aarch64-unknown-linux-gnu-0.2.26": + "93595aa21aecddfafb3573db9b83761a33d12f9c20ce38bd0840262fdbcd94f8", + "aarch64-unknown-linux-musl-0.2.26": + "824c3a1e4eba63370232998dfb34964afcebd00fc79b4c7b4e9a1c5d749cf08f", + "arm-unknown-linux-musleabihf-0.2.26": + "100c1bbb2b5f09b7c2ca0e9ce9b0c36e8870a2f8c536b24a8098b4bb5375edb7", + "armv7-unknown-linux-gnueabihf-0.2.26": + "d42cd9db133bb16faa844f46baba52184a3cba5ad6f428bdfb0f3a5d85d01951", + "armv7-unknown-linux-musleabihf-0.2.26": + "370e1a42247359f275dd2e68b6e7279b1718f7ce8148492a291c7851effd7291", + "i686-pc-windows-msvc-0.2.26": + "ce1118475dfd9636c873b5d135f2f238f522f069955653805def0196ba2c227d", + "i686-unknown-linux-gnu-0.2.26": + "81408c83605c95ad7f5431100293970c040a2f78651f8de6269784999c283932", + "i686-unknown-linux-musl-0.2.26": + "c6b6dabebbf86c533f75150f67be276d0a934c13db1922597cacc086cd64e6c2", + "powerpc64-unknown-linux-gnu-0.2.26": + "7c094b2a084288d586bad962330648c19c02faf421590c1542c4c961db5b28f6", + "powerpc64le-unknown-linux-gnu-0.2.26": + "ee28b5db562c13f9262799cd407373734ef4aac229f4436cf4478117ab70d2dc", + "powerpc64le-unknown-linux-musl-0.2.26": + "577babbcfaf8ca472286b492164ac49e0209a18a014b93b340be73c563bbb915", + "s390x-unknown-linux-gnu-0.2.26": + "f08d8559b2f73c3b112edd8414bcba3a94d0a1bc986099a2d24e4a24ba68ceee", + "x86_64-apple-darwin-0.2.26": + "f7dfea29cd87f8e8ad893fc50fbdd06270de392c79fa42f6e9ef8ebb61ce6c5d", + "x86_64-pc-windows-msvc-0.2.26": + "7bd19cc12f927dcd29e61ea1ad428d4c7315a01561d05ce32d6f9c09ee5ce972", + "x86_64-unknown-linux-gnu-0.2.26": + "f70997db1acf979b626e23236c289bfbf418e17ffd18a7956d8cf44e6f3f5522", + "x86_64-unknown-linux-musl-0.2.26": + "aa61951a7101f9de68265425a64ea2320d2ac1857001293274a338becef63180", + "undefined-0.2.25": + "71916afae3d93c2147a08324c8455cb4d49a168ceec5123fea7bc4fac5977703", + "aarch64-apple-darwin-0.2.25": + "79887e314f1614352852b45aad55bb533b45add7ba239faa50cc0122665a941d", + "aarch64-unknown-linux-gnu-0.2.25": + "2d45144527eb5aaa1e073f1046d510b8854f24553bbbf883d0971ac10721a1ce", + "aarch64-unknown-linux-musl-0.2.25": + "34fe01cb0ed953aab2584231875b7f112d306955a92d674edcae4632c475bd2f", + "arm-unknown-linux-musleabihf-0.2.25": + "368bd210f1ac181879d8394480672243e10710d41fbaaff46d5195a5f13f7ed4", + "armv7-unknown-linux-gnueabihf-0.2.25": + "a107c831168cd40131be62193cc9ee8516868542e14d08c649d7767bf74077f8", + "armv7-unknown-linux-musleabihf-0.2.25": + "b3e910c7c857dee9436ecce2a5c706a5f70c8e443e10c007a994741d5f0ead54", + "i686-pc-windows-msvc-0.2.25": + "4d787b0549b4ded295ada22a5fb6764588bedbcd83e73a1185292c756922dfe8", + "i686-unknown-linux-gnu-0.2.25": + "8f16d242447721557bdd8b5a4eb97c06d031e02f5f3acaa6c3a0dbc210fd0bb6", + "i686-unknown-linux-musl-0.2.25": + "9c0ab30932a97e8ed1b64a6ddcff313b32eba2a51a46b5aff595df1af5b6b91c", + "powerpc64-unknown-linux-gnu-0.2.25": + "f36f267441929b6dc21459a8244b70477877e03ad0a72e5cadce4518f81c141e", + "powerpc64le-unknown-linux-gnu-0.2.25": + "2ad2221281afd1f68e8746a0ca630cf2b31d03d017b6bb1dd624975b35a1f70c", + "powerpc64le-unknown-linux-musl-0.2.25": + "57ed0874e885ed1318f10d65971ee6fa91365cb958a5f5f0005975e4754782f5", + "s390x-unknown-linux-gnu-0.2.25": + "39d33889705863efcbfc08ef840ce7e6b0a823dc9bd5b80f5001f732c0f1d83c", + "x86_64-apple-darwin-0.2.25": + "ed21c9ee096bb7306eaf3ff39307461452ace0221a132d45f6919ddd5972949d", + "x86_64-pc-windows-msvc-0.2.25": + "7e55a0ae316797723acc2974a658a5aaf0b94ec9ecc90cf62b94da64da223a8f", + "x86_64-unknown-linux-gnu-0.2.25": + "7f3396784a504ffb3d2190312b4a7c5330f08906ef22bcf544fe20ecde30081c", + "x86_64-unknown-linux-musl-0.2.25": + "c92951cc355ba7de4897d538e8d420c7b32f810945dcd664f55d50a936331629", + "undefined-0.2.24": + "5d5a694112d8463c0003cbb295cd29697500c4a0a60920466b0a5c50e43bba2d", + "aarch64-apple-darwin-0.2.24": + "49d55dd8a8f2adfb83d1feaee5bf40c20169b411e3809e3455ff0d96bae4f388", + "aarch64-unknown-linux-gnu-0.2.24": + "0232b3d2ad506df099ec488b48a7801e7a51118bd6b5c48b081d5d172ee63ea9", + "aarch64-unknown-linux-musl-0.2.24": + "56bd0db80905d0f5eeba51aa33872727aa40e3dda65c86a584c095ac05609509", + "arm-unknown-linux-musleabihf-0.2.24": + "63d0a438b8ae0e080a5321b668d72a0b40ed9e9f09240592020dc55a39edf762", + "armv7-unknown-linux-gnueabihf-0.2.24": + "c2650b42b0211cca495cbb8ccadd200256876cd02f70ce5ccb03e4eb6782c16d", + "armv7-unknown-linux-musleabihf-0.2.24": + "51ad3c67b2730040858d59e71b4d3cb8f32e7ef6e1c2b03023cc8518c92c1794", + "i686-pc-windows-msvc-0.2.24": + "3995fbf5a09bcdfc54824ccd0969a975844d586a5fe5dc689f0b8d36eec6e5e6", + "i686-unknown-linux-gnu-0.2.24": + "dfb662a3dbb7bd1d5da4dbb20805484d8ba7e9d8cc1f6884e737ffdb3106cba2", + "i686-unknown-linux-musl-0.2.24": + "ebb6d14796fb172b03f2ed561d68c6a0f7468173dd9c2f34823dc868bed6ee90", + "powerpc64-unknown-linux-gnu-0.2.24": + "3d7abf03072c74c6d841979d444add3d44eea3ef2955ea5bf2968549c9ad8b2d", + "powerpc64le-unknown-linux-gnu-0.2.24": + "40e3fa0cdb1da02314c998ba0dde02cbc0ef60dfc75eddbe7a51e5bf83e0db28", + "powerpc64le-unknown-linux-musl-0.2.24": + "c89746e4807e8a960f681faefc9fcbbc9cf6c261153791f893f90b3ce8b2dc39", + "s390x-unknown-linux-gnu-0.2.24": + "ae088d02d3435bf7e7dd15f72ea8b92888a92762cc7d6830a1a8c9f9cb8c1635", + "x86_64-apple-darwin-0.2.24": + "dbb918c9d55b99cfe1c995cc330b6b1dac29379e320c35a84e7bc6bc0e0a55f4", + "x86_64-pc-windows-msvc-0.2.24": + "a044e2cbdfaaea36d15a7c8091d12e2ae81784329116fdf967a573b792fc1fd5", + "x86_64-unknown-linux-gnu-0.2.24": + "24a0c6758a4f533c37193592fd0a9a37a61fb583a4b6abd0bb81b83127d86336", + "x86_64-unknown-linux-musl-0.2.24": + "cb91cb5111e9eb4f1be7c4b8e467380e65b41c5f19ad956f613b290deaa838c9", + "undefined-0.2.23": + "d5fe4b3aa545d6bc43cb5fb2a27d3f24f53762472d345b06d0d03a2e27614f86", + "aarch64-apple-darwin-0.2.23": + "1d41beb151ace9621a0e729d661cfb04d6375bffdaaf0e366d1653576ce3a687", + "aarch64-unknown-linux-gnu-0.2.23": + "c35042255239b75d29b9fd4b0845894b91284ed3ff90c2595d0518b4c8902329", + "aarch64-unknown-linux-musl-0.2.23": + "60a122ac03b4187ddf716995f5f87838ff0edf9bfac372202c5c05269a32537d", + "arm-unknown-linux-musleabihf-0.2.23": + "643666522fb27c45b8cbb12533b57519ede6c1c1a61c1597e9c632888080d55c", + "armv7-unknown-linux-gnueabihf-0.2.23": + "2e284e7718176306b0d042a65143ff5b2c6453f33cadc1ebb19aedbb4f70ec95", + "armv7-unknown-linux-musleabihf-0.2.23": + "27408e6dcdca9437d7813f7122ef08b2de4e21c90c0c1784c32998dcb9f5ed7c", + "i686-pc-windows-msvc-0.2.23": + "8f7e83f5c09320d1ed32dee5773c4c122797c194ce27922cb03889c54d927eac", + "i686-unknown-linux-gnu-0.2.23": + "1cbd6066b8e39445f36cc621b982a053a917708bd5f13d1624484677449bd854", + "i686-unknown-linux-musl-0.2.23": + "a3e68f5c51efdbc63edfda7f3f830d381964458d46a42b993f8847d4369e0818", + "powerpc64-unknown-linux-gnu-0.2.23": + "2644acd3c6fb902b14325a2a60b324bec6617ce90ff73fe4df15d2ca26ca5572", + "powerpc64le-unknown-linux-gnu-0.2.23": + "ca16c9456d297e623164e3089d76259c6d70ac40c037dd2068accc3bb1b09d5e", + "powerpc64le-unknown-linux-musl-0.2.23": + "ee6596b3241df3884ce77780833051ce4a3700a83e82e1704cb60981db8f8801", + "s390x-unknown-linux-gnu-0.2.23": + "55f8c2aa089f382645fce9eed3ee002f2cd48de4696568e7fd63105a02da568c", + "x86_64-apple-darwin-0.2.23": + "960d2ae6ec31bcf5da3f66083dedc527712115b97ee43eae903d74a43874fa72", + "x86_64-pc-windows-msvc-0.2.23": + "66f80537301c686a801b91468a43dbeb0881bd6d51857078c24f29e5dca8ecf1", + "x86_64-unknown-linux-gnu-0.2.23": + "4384db514959beb4de1dcdf7f1f2d5faf664f7180820b0e7a521ef2147e33d1d", + "x86_64-unknown-linux-musl-0.2.23": + "c7b80246dad84eadf288c26128f6504fa27529f21091ccf7d5f9450fbc229dd4", + "undefined-0.2.22": + "d390a2990caffab099f129a10b0393dab81a7043dbd93d514e05034368e052d5", + "aarch64-apple-darwin-0.2.22": + "ed44fcb929f8cef958ed9e6de350d542f7392a43331d3605c4fcbf418e204c5c", + "aarch64-unknown-linux-gnu-0.2.22": + "2fa9b4647ac17dcc050abb8ed1547b8c87e3d914bde3e045b51ddc16946a4e57", + "aarch64-unknown-linux-musl-0.2.22": + "1855c439577523fd2a3e1afb19712fd80eb59d63c92fa29d24afb7f68c8ba88c", + "arm-unknown-linux-musleabihf-0.2.22": + "bba9175deeb797714c629543276a98fb834c58d85d8edce47d28c90e2e600e07", + "armv7-unknown-linux-gnueabihf-0.2.22": + "dcb1fcea336bf36bc5880c2ea29e1f32b10296f3b14ff6f3f2ffd8667a2146f7", + "armv7-unknown-linux-musleabihf-0.2.22": + "de1a29702d5fc14be20b21e0ba7b513d84f4debe8c5ff49a66ae333060fdd767", + "i686-pc-windows-msvc-0.2.22": + "aa5b36bdc88a16c92d5ca93c4a9325bb82eb875507d363ec28cb6e5ee694e8ed", + "i686-unknown-linux-gnu-0.2.22": + "00002ada635ce3f17a97a4eca7361eb6ac065db342540dc31e743920a723b92f", + "i686-unknown-linux-musl-0.2.22": + "c98fd1af293fb19bdeac03320f83ff328b4575478ca30845f7172e9491c5bb05", + "powerpc64-unknown-linux-gnu-0.2.22": + "98dc7f3d818368190389aa008b5873df84a470c40c94f5f339655c50af0cdb89", + "powerpc64le-unknown-linux-gnu-0.2.22": + "cb9096be1041b49b09b3f407059bab3a4b68219fc407f05dd441c58b40299c0a", + "powerpc64le-unknown-linux-musl-0.2.22": + "4c0d300931775be6069dd5fa095077a639e780b5c890885035df9fb3f4dcbbd7", + "s390x-unknown-linux-gnu-0.2.22": + "acdc4f3e01327209883e0578a077a69e46be0a0ce95f53c742d64ac753f93610", + "x86_64-apple-darwin-0.2.22": + "cb03b461250b688e39b19feaa0853d842e5d4193e262c9d4db2d15faafc54dcc", + "x86_64-pc-windows-msvc-0.2.22": + "6ab3ed27e38e3a2c4a3a4880b87b8d607fa14589860aebbb1a34064d792d54ad", + "x86_64-unknown-linux-gnu-0.2.22": + "65cd2e2c3660779f8a1fb02eac488b540d1ae30f3a80a381f8a7859d0b76bf06", + "x86_64-unknown-linux-musl-0.2.22": + "8e165482df8590a620bea0411023c4c345f14301b733a9b6f6ca93e730947aba", + "undefined-0.2.21": + "29a224acdb53a5478e12260672547e3d84a14c972c64f3e154553ccd813f8400", + "aarch64-apple-darwin-0.2.21": + "5b3925fc797bc5e168b5883a5ba2ff6c5751a1c900748c132f01d1ee5c87d24e", + "aarch64-unknown-linux-gnu-0.2.21": + "77ff74dcda1e08d757632eee8c6aa3928d1e52dddb460056a0c7224c888d2956", + "aarch64-unknown-linux-musl-0.2.21": + "3ae6f0de1698b257052d5b1a05809a0f17db64fb6b1e80ffc64b659840105002", + "arm-unknown-linux-musleabihf-0.2.21": + "af4467849e6815b89067b9133dead64d0c912b9d2645a80b0dad575c01ff4912", + "armv7-unknown-linux-gnueabihf-0.2.21": + "ec15bee0208d23966a5ae6f2dfd07e38ca8656960a5caf26970d3a91f055e34b", + "armv7-unknown-linux-musleabihf-0.2.21": + "5671278eb619ee82615ab8e7be2251763d57d5b210d317d92c40d6bff0c6c418", + "i686-pc-windows-msvc-0.2.21": + "7740b290f6efdfc73d24977e4dc86be144865ca92ec106cb8e0b206f7b77b80f", + "i686-unknown-linux-gnu-0.2.21": + "ec323eb0b67103da905e24de5c6ee4036da22068c439f098b93d4c206e6764b8", + "i686-unknown-linux-musl-0.2.21": + "118a1a3c0484a392ccf9388cd296bdbaa1e8b5479772efd69056ac99119c0aa5", + "powerpc64-unknown-linux-gnu-0.2.21": + "0fbf9a1b148b86511a0c167f3dc7e5fd228c784af0d3fe8d8c99e024ed2fa1d5", + "powerpc64le-unknown-linux-gnu-0.2.21": + "ff49e7dbd25e98932b5207100916c1d6a6c624a620d37aabbc307bc97be53674", + "powerpc64le-unknown-linux-musl-0.2.21": + "29e32e5b7bb5facb8eddec8e9146f3b20074fa73dfd3555c985b79c10d3c55fd", + "s390x-unknown-linux-gnu-0.2.21": + "897414d24d13a202a6f9a437408da64cb26e10bbbb5820571e0de2b4d540fa99", + "x86_64-apple-darwin-0.2.21": + "92eec02ae5ff8ef4b4070cf6ef787a2ee3bfc6ca910b61669a8615e2149d6595", + "x86_64-pc-windows-msvc-0.2.21": + "bf4946c5a8751cc63def72aaa53a9a0c1ca015876b9ec144cc389ef4901dbc4a", + "x86_64-unknown-linux-gnu-0.2.21": + "bb6ff8fa0ac1d86a32b1ef615ec52acb5c8230f803146ad4ceeaba8aaa26a787", + "x86_64-unknown-linux-musl-0.2.21": + "90b0903364aa45e588ac2b269d70e871180f81df0f7c603d6b17742fccc660b3", + "undefined-0.2.20": + "f248835e7b801bfd0dd9e70716257604fa6760cdf92573ae6419dd35ce7a9058", + "aarch64-apple-darwin-0.2.20": + "519bd42c022a41187984234a040c3f00a3eb4bcb189f101c0fa48fe70b953357", + "aarch64-unknown-linux-gnu-0.2.20": + "b97b67c7f65025729da8194f8b0e21ffbd91a1210fbbc89279dc46d5342a3e4d", + "aarch64-unknown-linux-musl-0.2.20": + "bef8bdd253acc9a82269e5574ab4843b0d70a1935235805bb470eae3ceaa2fee", + "arm-unknown-linux-musleabihf-0.2.20": + "2caeadb57638fae11cab25094975201d3f8573fe6f752e628b89d61447f7abe4", + "armv7-unknown-linux-gnueabihf-0.2.20": + "faa32b09015770fa5a72557a04236a7be61f06bbef77a6707c658be791adf039", + "armv7-unknown-linux-musleabihf-0.2.20": + "ba1be06d8aec4b5247b5d09032f37fd4aa8f54acd07b05db18351d61a93e0cf5", + "i686-pc-windows-msvc-0.2.20": + "c4430939e934ca8ba2b079138728a22600d32572fe315ac1811f8a40b062534d", + "i686-unknown-linux-gnu-0.2.20": + "6c8c4e58391c508eed5f8506257d421f3fe13464fc8672b5995bf6243d46fad5", + "i686-unknown-linux-musl-0.2.20": + "4a4f8a73f29362e40e9de94749f988e691665102ca2bd6501f39248735c40647", + "powerpc64-unknown-linux-gnu-0.2.20": + "aa557c951623d746ea30b4ae107fc37ce7328196929d5cf38beecf2c1c60555b", + "powerpc64le-unknown-linux-gnu-0.2.20": + "1ef60183bf6de0c1da96fa027a8b3847da289222aa4bd5ac81255aa614e36fc7", + "powerpc64le-unknown-linux-musl-0.2.20": + "56c880df3b97d2a1c0ac6812ba174d4b7e1362fd256ce8b29f029adabfdaf28c", + "s390x-unknown-linux-gnu-0.2.20": + "455863a0850d211aad8c94b61778b2c30cc7d5639ae0d5607549f1d56372f706", + "x86_64-apple-darwin-0.2.20": + "41018b406133a2ee5e51d8f35c990999c2bb96ce457864ac9883a0f9dcb49c58", + "x86_64-pc-windows-msvc-0.2.20": + "74d2f2c945da68a2aa8f0f277229f3b172c7aec1072cd990d866c25ecbe21410", + "x86_64-unknown-linux-gnu-0.2.20": + "bafad50e1b8b8b89083df115cdbad6e991747fd6ecb52ca407d6b5533ddb150f", + "x86_64-unknown-linux-musl-0.2.20": + "1c27fd144912433d7f12b58b00eebb80a7ad9a1864b22b1ba41b07b5998a743b", + "undefined-0.2.19": + "9186f4961698b35b1812eef5dcd6973accb3eaa980a571c964f6f91ca71da5ff", + "aarch64-apple-darwin-0.2.19": + "539f2cb812f0596b3f56d41a92662f6e102094587ff07f0793bd015d21cda54b", + "aarch64-unknown-linux-gnu-0.2.19": + "7ba7454ceca1b789e74637b5cc8d1353d6a87ae3985dedd16869c036e3b4d02e", + "aarch64-unknown-linux-musl-0.2.19": + "a9932edc68680dc388bf13cb21132f4d0aa13bf9c31c1c1f4febf1415ad51923", + "arm-unknown-linux-musleabihf-0.2.19": + "71dedaf8f40e3939b8ad493093584d03046c607cb7e7c155de7eb0c8e0da2830", + "armv7-unknown-linux-gnueabihf-0.2.19": + "17b44738383b1a5fe7ad592be61c543048022c09c649759c589a74a00fa3afb5", + "armv7-unknown-linux-musleabihf-0.2.19": + "6c287d699c95cffbb30520d27d7b80ce1971b336bd387f72391340acac434c86", + "i686-pc-windows-msvc-0.2.19": + "68977cc3fde46c61a80ea451651f3b6789ee2a8cb67a4e5fbfc7db93022d9e1a", + "i686-unknown-linux-gnu-0.2.19": + "5ed1da9e25968be4581ff301a9034e8e82f2206686f504734015c348b94333eb", + "i686-unknown-linux-musl-0.2.19": + "236c3fde87ee06c2b49372e184f2fca84f82ea3daa36e85ac884f7459b18ebf7", + "powerpc64-unknown-linux-gnu-0.2.19": + "9ecdf74c9846c271e78e300f1db8cf3762ace6d9ba1f2e9d6e695cc64fb2e746", + "powerpc64le-unknown-linux-gnu-0.2.19": + "fc8bedb7f7b35905fd5e1180466593e2ad35788994f7d61c6605ff985bb61aff", + "powerpc64le-unknown-linux-musl-0.2.19": + "a5d1f2b9686ed2466e9e588d8ada686130318015693ef1a7064651347063bd05", + "s390x-unknown-linux-gnu-0.2.19": + "6b68ee8a45062e9a6d3be5de5c0fddf49f8669c2b2b897432f0a55e99fed57ea", + "x86_64-apple-darwin-0.2.19": + "1b8bd98a1ffb5823b499d914d8fc430b6bb96b3f97bedf06b67c60f084e366ca", + "x86_64-pc-windows-msvc-0.2.19": + "b704c9c6e5e18e1c822e44f118902468df76245eca8831c5f8d4dd1223c0fbda", + "x86_64-unknown-linux-gnu-0.2.19": + "71132ec5c59ec865d73877f2f7f4ff75cd2f56a93d967c1a91ef797bdc87ff93", + "x86_64-unknown-linux-musl-0.2.19": + "6e8a64434d3baf03fd64f58016a9a37b08a8561db6979b807de8feb55d94502d", + "undefined-0.2.18": + "5919f79b42997129e5a456bb5910086d0043dda20e505d12f7f57f0a2669ae74", + "aarch64-apple-darwin-0.2.18": + "979ddc0aa7b068632bf4c517bbb6d97798b95c54dfeaca9ba653df91989ed958", + "aarch64-unknown-linux-gnu-0.2.18": + "5cc1535801398ad74e5fc8a5cf5a619d3e806b8b7de6b973b33c02b9b2584ffe", + "aarch64-unknown-linux-musl-0.2.18": + "473ae75c6e9ed1f63f0c0c556ac6ca4718457903c3652adf07c8d46655133e31", + "arm-unknown-linux-musleabihf-0.2.18": + "7fb75cfe47c50f9306eea91f1d713a0f76dacefc92b6a35271b7af90e024bac5", + "armv7-unknown-linux-gnueabihf-0.2.18": + "c0ff7d440ccd43666d813da4dce5e90a1c6b90e3dfc951ed868a38c488ebff07", + "armv7-unknown-linux-musleabihf-0.2.18": + "1c99194b715b74f0bbab9ba2f350bcbdc4e101f056d81ce35f62736b951b212f", + "i686-pc-windows-msvc-0.2.18": + "554b9b65eee4f30b70ff2d3b1c2cee07600eef176c235d8639aacdca799610c4", + "i686-unknown-linux-gnu-0.2.18": + "efd8fbe10f88622479611cac0ad18d7e5614a9335d655e64be8e30db6ea749cc", + "i686-unknown-linux-musl-0.2.18": + "9d991b27482edc0891c8aa2750e95aa4f8007f3af9746d90f0176462a2cb3a09", + "powerpc64-unknown-linux-gnu-0.2.18": + "0dde2eea6496139c10bad1e7e1d49d210bc47f294dde158db65f78eabcc363a1", + "powerpc64le-unknown-linux-gnu-0.2.18": + "4515b5741a0cd2596526f4504429bbd8e6122c384ffd9211023771aa042c6815", + "powerpc64le-unknown-linux-musl-0.2.18": + "48ce3450450a0314a6b7996f53145e273c3a2013c1771b56449c275d9260575b", + "s390x-unknown-linux-gnu-0.2.18": + "4c3826eabcb81aeb187a3de95fa3e3f3c784fb71539be05ea56a963b3d97fe4d", + "x86_64-apple-darwin-0.2.18": + "140158512a43d8266fbbc550dad7ed3f27953d5bb5bc7a3e91e94ed3c1c1773e", + "x86_64-pc-windows-msvc-0.2.18": + "16dff877e19f61d094af35878a00b592302a1794c1c27afb1b194106931e9e59", + "x86_64-unknown-linux-gnu-0.2.18": + "e5a0bde1e0fe57a7ea1d26bdb582c636ba742c3db8a10d0a965536da7004abd7", + "x86_64-unknown-linux-musl-0.2.18": + "4472cd12522d96566be88545f1520dc5099f12f47df297f54f9239fc1af0ed87", + "undefined-0.2.17": + "6bfe8c67c849a87271a47d6c54672b860a1b37fba5bdb2928f6b912719edac55", + "aarch64-apple-darwin-0.2.17": + "7dc5fe97867ac3bbcbeabf32fb76b3caaf12141b5e20926ed81353f9a2ff7dcb", + "aarch64-unknown-linux-gnu-0.2.17": + "5037a966a2422f40c63d36982d46f10362383c128ce1707a56b4339b44a50c94", + "aarch64-unknown-linux-musl-0.2.17": + "910edd0a8db6ff39baaad0f7f77b2ce74e0111b6b83a4439e2e02d5b82404e1d", + "arm-unknown-linux-musleabihf-0.2.17": + "6e72744e9cadf1649397acceb006f27c9cdce3dcc2876fb73a887d8914166791", + "armv7-unknown-linux-gnueabihf-0.2.17": + "a5f18a5f739402e9c2a6b5a4dafe0ead37125bedc7c03a74a9a92e4682a0f49c", + "armv7-unknown-linux-musleabihf-0.2.17": + "fcf11ba75a1d21c49d53474c51b612de1627fbb97c23bd7752d64d178740014e", + "i686-pc-windows-msvc-0.2.17": + "ed5dc4a4341e7af3d92ef0649df6152b555b16e09c072c43f7f39b9d5bdce784", + "i686-unknown-linux-gnu-0.2.17": + "d1d478429fdaeadd56ce280bd43460275bd131cd44f9878987d9d7a5caa4f398", + "i686-unknown-linux-musl-0.2.17": + "8fcafe168ae2eb4de6891c0d0d5c0c598af87b552d99d2c4d15deca824236cd2", + "powerpc64-unknown-linux-gnu-0.2.17": + "b2601121c8df47bdb430da2bf85848b7e38ff5df1150d8ea980d8ab7b4f5551e", + "powerpc64le-unknown-linux-gnu-0.2.17": + "1f94aeda1cf36d401073ae21d9dc4acafed761d41074795f622ffa1fbd4a3677", + "powerpc64le-unknown-linux-musl-0.2.17": + "a3599741a236d088cb418f446e491b661c042ebd9f23e15f6cadcfe2833a6609", + "s390x-unknown-linux-gnu-0.2.17": + "4dccbee34457c45f4fb9df5760094d402db7642a3a5665ccbc271293dc19b746", + "x86_64-apple-darwin-0.2.17": + "78137a1b9d6fd1f8f5f0d4208829dd5f89b6505c314192c0fa2a35d6faff5e91", + "x86_64-pc-windows-msvc-0.2.17": + "e77465f8a964cf0cbd932af506df6ca42ce288e6db4df312c53f27b05c7c09e5", + "x86_64-unknown-linux-gnu-0.2.17": + "d49537780cd9cd5621bbc34e6864356487155cd4a7540035e1b0acb0d1017def", + "x86_64-unknown-linux-musl-0.2.17": + "20184a870ba25416b61d46c387853afd27d9a8df3f0598ee6878a315db5c7302", + "undefined-0.2.16": + "f215cd4c173a71cfc2427b5cb3c42e321ade41350051a1ca7a9c898ed502ff2c", + "aarch64-apple-darwin-0.2.16": + "9a19728c43c35a2d5f97f2bf85b0dc7b508e1931738f0d95e2354f0f745196e1", + "aarch64-unknown-linux-gnu-0.2.16": + "f50584835c2099d5dcfff4fe4292719871ea40661d6fb124f732c81b131ac2cf", + "aarch64-unknown-linux-musl-0.2.16": + "47af1d071daf655fea352a440f533f3ad7dfbdfc2314160ac14b31815d959c37", + "arm-unknown-linux-musleabihf-0.2.16": + "5ab0424e8c18776c809f0c1e7f6e925f7e478c36b2260b24f2694d1293e5f8c2", + "armv7-unknown-linux-gnueabihf-0.2.16": + "9d4a66d55c273ae5f265ee979899faa6636823b1dbaf4079085e108adfcb916c", + "armv7-unknown-linux-musleabihf-0.2.16": + "384ffae2d98a0f2211d1353eb66031710e452838349fdad115503b26a3dc01d1", + "i686-pc-windows-msvc-0.2.16": + "8b140cb56029585fb95685410f17eb866a4d6dae9d63de4fba14268e17730951", + "i686-unknown-linux-gnu-0.2.16": + "902439f172d22dde421681d54994fcc9bc66ac412baf1dab978fc061342bc4e3", + "i686-unknown-linux-musl-0.2.16": + "1e02d7e7e06dd44c1cd077bd645427af7f04901e685ba3fbcc2691d024906470", + "powerpc64-unknown-linux-gnu-0.2.16": + "68209030923b2276df8dbcec9ae3a0efd9f7166419018e7d282dcbbc5043e97d", + "powerpc64le-unknown-linux-gnu-0.2.16": + "9c0ef3b12fc81337612841f3d0588d60e5cd6f40ff533c546218c5f8f3b30935", + "powerpc64le-unknown-linux-musl-0.2.16": + "d41c74bda5a383cd71667ad7d38a7a5af667a82fd83df997ebd0547a5050a5ee", + "s390x-unknown-linux-gnu-0.2.16": + "ca828149fa733859b4837b3aae69e253cd336d690ab6af6fca8726f5498d21f6", + "x86_64-apple-darwin-0.2.16": + "1457a592a56326ac67ca12db89f8cc175634d36bd17a2efa7b605a9f81edcb31", + "x86_64-pc-windows-msvc-0.2.16": + "0eceb9b4c9ec8049ac15455ee79100bdd2e9db2153977da7d9788ba792e1eaeb", + "x86_64-unknown-linux-gnu-0.2.16": + "0a6cebd98cda27fe3f49853a686ca050fbfef2da7871f6cf4065c5e9a7b2233d", + "x86_64-unknown-linux-musl-0.2.16": + "e4efe763ad24e32b658e33b38cde271694f2fff7c2eb07cca5a267d600c1f718", + "undefined-0.2.15": + "902d06ac01ebd1ac7fcda81f514b04c6d79a1bafd70305b18e9b1d387cfc7025", + "aarch64-apple-darwin-0.2.15": + "7342fba0eeb0ea204eb4ec6311378e76d43bd237ad0576872aca3345914b024d", + "aarch64-unknown-linux-gnu-0.2.15": + "939998c380bb95b4fbc15bc00c43c1b1fc1fc30d02638aeca6113f02a99c608f", + "aarch64-unknown-linux-musl-0.2.15": + "3f5c7c25e4099854330b3a21bb9670d3cdcf3ec3c0eb9f8bee7e42c5098cc5a1", + "arm-unknown-linux-musleabihf-0.2.15": + "2b53a33e0f46f2c37f949d12d420f666e93f8286ed371a1bc5b1406899ab5ff3", + "armv7-unknown-linux-gnueabihf-0.2.15": + "1f8712bd2b6c11533d4defea1f2e7e3972b9db887ef26a4c33f452a8492891ea", + "armv7-unknown-linux-musleabihf-0.2.15": + "0bb582c399933b7affce3c9f5992a6aa7f7bf596fbd43e08623a08dff564fbc3", + "i686-pc-windows-msvc-0.2.15": + "339014778ebae1bfaf327217c137997ef272047626c857bd3fe84286af61a7a0", + "i686-unknown-linux-gnu-0.2.15": + "8c5e80b94a84ab14b91de827858c076b0501a85de40c7ba917070a929e914a18", + "i686-unknown-linux-musl-0.2.15": + "148fb4554317f84cb27e563707cff8acd35a5b3f668f27a45005e076833cd4ce", + "powerpc64-unknown-linux-gnu-0.2.15": + "c533ec6526e7c338c79c38181c94b88b5d80c5a1ec8d7182a0aac3b6448caa46", + "powerpc64le-unknown-linux-gnu-0.2.15": + "681b607989c135d17215a3442fb0e6b11d5c5ea90973eacc6f3aaf2f7b1520d7", + "powerpc64le-unknown-linux-musl-0.2.15": + "a39e8898c033b86e3432e177d9d6ee7da5f9ffcd1624b894bce92d6fdd58bf56", + "s390x-unknown-linux-gnu-0.2.15": + "2fe5fe764afdb8e4f6f752f17400013af4c0ed60fbc91eabfe5b05483f30fb82", + "x86_64-apple-darwin-0.2.15": + "dd7ff73cbab1c65b3f2d110bf025d0c74ca2aee3001e38e808d7b1816f49a6cd", + "x86_64-pc-windows-msvc-0.2.15": + "c1ffecd50d417b3de667da0fee07b577abeffd5f9d6762501818252b3aa6c7a8", + "x86_64-unknown-linux-gnu-0.2.15": + "f9c06177f2153336c3a96f9ab54d881126447cde1cb5d00ed771223427692e9c", + "x86_64-unknown-linux-musl-0.2.15": + "3151e375fdb6c73765a8cae5048790c52366cae4593e89365549587f24406837", + "undefined-0.2.14": + "528d2dc187720d6338c5dc84809f64633cd969262c5a0f6a2bc0bddffa1ff8c0", + "aarch64-apple-darwin-0.2.14": + "0a78382f3e93514d51257243313a420646a2316da47bc4bc194bb66ed2e50ee5", + "aarch64-unknown-linux-gnu-0.2.14": + "5461797a801f3752cab99b63b206dcf54de037283d93f03adba736179f099d31", + "aarch64-unknown-linux-musl-0.2.14": + "3b315856284f2d4c2a6e3b19fd6c5eae87334c37f1a7dfdaad3f696b976dae72", + "arm-unknown-linux-musleabihf-0.2.14": + "40b481cb4ad70be8afe62fdb62c6b4f4f90a6a3cc6061950f58e4d92b13e58b9", + "armv7-unknown-linux-gnueabihf-0.2.14": + "bf7ceff49dd3ceb384316c6bd85b037a9b5c830074166f57d6ad6fc8b42fbb75", + "armv7-unknown-linux-musleabihf-0.2.14": + "3e246f87058d03d0879c0a2dc287aa352785fa8a37e166b6c322b7ad1e79fe49", + "i686-pc-windows-msvc-0.2.14": + "97d1cd6da0bbdfcda220167c0309b50ff294304d273d59a5b30076e31a8b9deb", + "i686-unknown-linux-gnu-0.2.14": + "7f41c2d76af64bb5fa790516a43d86dda8c03b1ba5b57f1b2db9cea7eb836a53", + "i686-unknown-linux-musl-0.2.14": + "28d924aaf00228b35d0219a4e0b87846bcc515c6575f3712733cdf614716e9ae", + "powerpc64-unknown-linux-gnu-0.2.14": + "d20a64a746d24e49fc85d46064538fb2c84778131340abe345192c1d62c29357", + "powerpc64le-unknown-linux-gnu-0.2.14": + "1bc57215f96f156d784761c616de0a1c7d90aecf145c5f7e401add537db17106", + "powerpc64le-unknown-linux-musl-0.2.14": + "2fbb0995b0a34d3cc2a97e3a5c4aa0e8b6b3b52d432a082f566112eaae1c490c", + "s390x-unknown-linux-gnu-0.2.14": + "8b025f335dc7066dae5646114b7fa0e9026a12a05b8909acccaf9c6348298d7b", + "x86_64-apple-darwin-0.2.14": + "402525d3a113fbdcc687ca408d42cb104ce18e8e030dc05b83381ca4f9ea76ec", + "x86_64-pc-windows-msvc-0.2.14": + "a4c00d69418061c1566e758e85f3f6fc1532908453d03cd9f9aeba03d0bf640b", + "x86_64-unknown-linux-gnu-0.2.14": + "79b2582675bd93c7d632e71a667478a3b1eed101669944e64c848f7240ab4725", + "x86_64-unknown-linux-musl-0.2.14": + "c0f760078a326b6f861d0eb4e9a04bccd0bdeed6cf72f284efa698e54ba83c77", + "undefined-0.2.13": + "9ae345ea16f8c61997d8434153a20a1e95ba11fc46013ac951c70d3fcb77c8ec", + "aarch64-apple-darwin-0.2.13": + "f588388d2b13f77e4526e619f618a306b6b026a96975fbfb2c6dd1ded134cb72", + "aarch64-unknown-linux-gnu-0.2.13": + "f342442088a56a8a5e4af6781501870bed1b388b37ac2e9deb250cd1d0dc1845", + "aarch64-unknown-linux-musl-0.2.13": + "56151690ccd6a12205478212dd16013d1969e3ef808a66f99809da850a49ed29", + "arm-unknown-linux-musleabihf-0.2.13": + "ef70483125e00033ed6bd5f9b0c4cfd377db54897284cd7d1d25e2ca6224312a", + "armv7-unknown-linux-gnueabihf-0.2.13": + "20f96f8a6b2dee8a6013bc12b243b718027e5a34c9fceb4baef7e85e530f9da8", + "armv7-unknown-linux-musleabihf-0.2.13": + "59b50354236a4a3919ecf9619bb5791936724351e6d1f96a18969d0e5df2dc51", + "i686-pc-windows-msvc-0.2.13": + "644e97188d6f4d96e0b149992958c20cce928ad0f4ab4800e0fed70ae16198ef", + "i686-unknown-linux-gnu-0.2.13": + "aa94cec4368c615297aa4d81ab81c9034b4a40d66c75854002f0e26857e659a5", + "i686-unknown-linux-musl-0.2.13": + "152cabfaf4c433d6904c5f68c2771b0c5ad207e356ef96867680faeb9bba0c8d", + "powerpc64-unknown-linux-gnu-0.2.13": + "7f6bcf0354c87993bdcb76ca0ce3b6211703d19f08bef2cd3306b75cda6ff8ad", + "powerpc64le-unknown-linux-gnu-0.2.13": + "0f38a41264be0ef325f8d438f34ea95c002736b3c092e3276518a2253c4ff923", + "powerpc64le-unknown-linux-musl-0.2.13": + "081e0c31a971c3755108a6c70c90fb68a2b0829f995665aa5df1002eaa4945ec", + "s390x-unknown-linux-gnu-0.2.13": + "dc843c32e51ee3fb46381699bffbc4b6040c51083a1dc7d6c597582b84956aa7", + "x86_64-apple-darwin-0.2.13": + "6262eba42ebb9035a574b74c5ea253a41353fb4b6b264600e3b05b1a7f4cabc0", + "x86_64-pc-windows-msvc-0.2.13": + "898ce45b3767ea97429426a7bd0ec54d070eb9e29ff2b072bdcf288bf6ddc9a1", + "x86_64-unknown-linux-gnu-0.2.13": + "3f96048fa1b82eca14d45bbcc86714cd0dee19a73ef9311da6707faa308ec25f", + "x86_64-unknown-linux-musl-0.2.13": + "2121a2184aaa0e4c7ef599358dc2bfd20e5a07a1373c302b6fedf79f2ba0778d", + "undefined-0.2.12": + "322c672b515d240ae4a588dbf18086f0b5cdbc288335668c32cb6554cb3551bb", + "aarch64-apple-darwin-0.2.12": + "cd9ca2c17a32f08dc03a6430fb99c16cb2eec1350a4857292df6a600d71a1467", + "aarch64-unknown-linux-gnu-0.2.12": + "8e57c9baf43f80a4b0eca7d5fd0de9152b99ec22809ecfd8350ab4317ae1d629", + "aarch64-unknown-linux-musl-0.2.12": + "74981df43332e9ca6abd2855d73e0d1f5565d3f724c60f4a67bf0c09d84902a9", + "arm-unknown-linux-musleabihf-0.2.12": + "50c8f8178978679455da0b14e5b03039001c39270d8fd1e51dde9addd45f3cb6", + "armv7-unknown-linux-gnueabihf-0.2.12": + "cdcda5bef68ecb96c593a1389349b19d6a52a2c235308e6aaade522f67def730", + "armv7-unknown-linux-musleabihf-0.2.12": + "b1c55e5e3b1cd5310318572d5243d7ba725c413e0a20d6a77987ea00dcfafbe4", + "i686-pc-windows-msvc-0.2.12": + "4bd4c4fbe449799d0ffd179b6432712c4843d1b802ea79b582989d3cd9eda6e8", + "i686-unknown-linux-gnu-0.2.12": + "301351fa77cf03bb0584c45deb36f0049223f404250ba31d69ebdf689ffae9cb", + "i686-unknown-linux-musl-0.2.12": + "379de8132478143542aeac0a4b4310eb2ed172927561ec9cdf11cda2ccd87a2b", + "powerpc64-unknown-linux-gnu-0.2.12": + "9dd50c32d2c3a41a43e5f08fb34cdf829bba0d2222abffcd20429f2dd19cc6a4", + "powerpc64le-unknown-linux-gnu-0.2.12": + "53b30539dcb80d074e8d33eae582745a155ff0c3291d816c0596332a980e6389", + "powerpc64le-unknown-linux-musl-0.2.12": + "9d9af6a119f15cec26e90e18dbdbf004a8ddfe9078e1877bb43a7ba87172150b", + "s390x-unknown-linux-gnu-0.2.12": + "df8a4b496f5307a27c4a8b90e356d4b508b3aab24ddfc5904f7ec53bc3bc5cb8", + "x86_64-apple-darwin-0.2.12": + "71f6c77cf22b8cdd04aa561fe4bd1da8720351359a7c04740bce6a68fdf582a4", + "x86_64-pc-windows-msvc-0.2.12": + "5a1b374ac29e1b65ca581573f175ec3c8071cd09eb73f127d9081d37a0ac21cc", + "x86_64-unknown-linux-gnu-0.2.12": + "7a0c67d32844afadd2d964d9d6ecb769a56e122e1423efce53e7554a33fb5c6f", + "x86_64-unknown-linux-musl-0.2.12": + "a617fdeb285e0dbb13a0f37f802b80be1fe5272a44f752d62d1425ea56428170", + "undefined-0.2.11": + "75555dfd78bfd30f0b32e7515413319920bd1fcc88c4130c4fe02516dbd2bc58", + "aarch64-apple-darwin-0.2.11": + "abcc9dd4234623defca3ee8c1b36d2b3662d5fd12c90727e1111b8e1592fb9ba", + "aarch64-unknown-linux-gnu-0.2.11": + "ccdf23e44d3479ffe61bb68b61af5a014bcb76397f19b2a85587f55a6cc7a98e", + "aarch64-unknown-linux-musl-0.2.11": + "f4f5b8f496d655206a4bfd28c54192a225da1274d04fa3ff6ff74df1e756c400", + "arm-unknown-linux-musleabihf-0.2.11": + "2579a68e7e434f0c47d3af460bf6c0570759761dcf1fa834f2df87abcfa0ee18", + "armv7-unknown-linux-gnueabihf-0.2.11": + "f76c811a073bd0feea69555270fd0437e7b4c085d604a3949d2dd98b418b1597", + "armv7-unknown-linux-musleabihf-0.2.11": + "45463088ca59aadb7cd0343f98e1892198799e24b19873c8885433d72673c6c3", + "i686-pc-windows-msvc-0.2.11": + "fb7e8b6647fca55e627a2df40c811e2d1af8a5f9bd802122b5b93edcbb605aaf", + "i686-unknown-linux-gnu-0.2.11": + "13e7682d48e802c16e41ca97c0b137eed9302caff943464f9ef43dc1de2dc8e8", + "i686-unknown-linux-musl-0.2.11": + "64f849ed7de03cd4ae08759224a3065677a4164f42318c8e6c883f28c443e698", + "powerpc64-unknown-linux-gnu-0.2.11": + "5cf33f99dc3318989c8e14697677ee5bb9029c38c60b44c69e9f58d8e8cd8417", + "powerpc64le-unknown-linux-gnu-0.2.11": + "70a3c979624bc22307708d84ef9dda1739672606804b68badd6a01b88ec5d4e9", + "powerpc64le-unknown-linux-musl-0.2.11": + "a3ec1fdfbe0551d9ddd522eec0040a13eabeb8081d8114a8bbe3ea6b1efc5df5", + "s390x-unknown-linux-gnu-0.2.11": + "57ac8fcb1880cda4551bad47065e434ed020b6b2a401fb655861813bec1de223", + "x86_64-apple-darwin-0.2.11": + "b0c3cf377363bb0bc0917bcf8efa08590e3ec86a3713debb51b0a5efe7a48e9a", + "x86_64-pc-windows-msvc-0.2.11": + "07ee4e64fe871de647f0580348f317475906162398604b96bd5c52d99fd2778a", + "x86_64-unknown-linux-gnu-0.2.11": + "4a6188b172cb8d43e59c91dad8cdc4418ed0b395b09e4198ba4661cbcdbb40eb", + "x86_64-unknown-linux-musl-0.2.11": + "063afd8753870e147cf5d7c6273748d585f758d43d8df4bc04121667b7d5a6fe", + "undefined-0.2.10": + "faf7b657b53a31d8d47cca58b33379d14f4701165a1867e61039a961274a45ff", + "aarch64-apple-darwin-0.2.10": + "a099cd4dc28f879e023ce221697e07a2089b12dc42099dd240a2e64d5cf428be", + "aarch64-unknown-linux-musl-0.2.10": + "fffdf595dd2a231b372b685a2e25589bd8d537fea252b28678565f01e5b8bddc", + "arm-unknown-linux-musleabihf-0.2.10": + "c1ccd50c4f3a18dcdd46d44d285313a84a9a2b36e8a676e4935e339362794489", + "armv7-unknown-linux-gnueabihf-0.2.10": + "38c30fa3c5e3c97db50396609619c17741c860c36e13ee210e387c94c59ce1ff", + "armv7-unknown-linux-musleabihf-0.2.10": + "36b38e5124202686aa79ee7d872419746aa3675e34fa7782be489fe310cd4440", + "i686-pc-windows-msvc-0.2.10": + "e4130ec5fd7af4d52ecf39144a15ff7926e7994a14a1c2e75f66d8c352f74bda", + "i686-unknown-linux-gnu-0.2.10": + "0ceaf9b11a1173497e96c5f74b2d13a8cecd9d794eb4096b8eb21537aefc0a6f", + "i686-unknown-linux-musl-0.2.10": + "078a21bfdd32363b989e28903d37d9a3114e5ec76683339abedaaebe2b78e57c", + "powerpc64-unknown-linux-gnu-0.2.10": + "5ea1aa731bfafe544b754daf06b987d50a569944ffebb856512bf016ae747b68", + "powerpc64le-unknown-linux-gnu-0.2.10": + "d9122acabde5b4bca92fecb83abdb4eb9e2310b8985ea0c02028d6605dcb7d9f", + "powerpc64le-unknown-linux-musl-0.2.10": + "cba75fdad8751c443db162af15a0ba730ceda6f0a32d58d0f794be906e518a69", + "s390x-unknown-linux-gnu-0.2.10": + "eac781c177f900b3175e24b38da8d20d2a985e7e1b7cb8a2506a663ba930ae94", + "x86_64-apple-darwin-0.2.10": + "d81a89883ea4ed47a115f4b4947cfe20db26b91d28a08287554eb594efc20cab", + "x86_64-pc-windows-msvc-0.2.10": + "f1df811e31940bb50c7f07a1e94eea0b7e3344f0e5ebed9e57a61f7c7857deef", + "x86_64-unknown-linux-gnu-0.2.10": + "99b25a80e170fde54b299c05f4c071c7130ed85db45fe8e7663cef44f09aac5f", + "x86_64-unknown-linux-musl-0.2.10": + "5ab4daa64daad2fc53624c1e88dca7166424526713e6fcbe8e34e80f23ee612d", + "undefined-0.2.9": + "d1c2b96c86aa8f928d8f49c3addcbab35bc6c1a6609ae7ed64bfccc3135ec448", + "aarch64-apple-darwin-0.2.9": + "ebcbfb397dc045356e1b758176b83fe192bf6cede3ac307e30e6934c54ef45a5", + "aarch64-unknown-linux-musl-0.2.9": + "b8d055a0279c52021238a92e41bd6076813fac3ae77f4a3235b8aa4e2d398c0a", + "arm-unknown-linux-musleabihf-0.2.9": + "f21a687de862282ed42f8f515a9221ef2d4b4e831a634c83837eba5ade3bed35", + "armv7-unknown-linux-gnueabihf-0.2.9": + "9c43a432b9e02b126e2a1e42262b8ecc7d5715e9183c0fdccfdb6a98911067ae", + "armv7-unknown-linux-musleabihf-0.2.9": + "fa57fc9740b58b7db4cecbbb3e93a92f73dd30267965097504736ea6982e67b0", + "i686-pc-windows-msvc-0.2.9": + "c68cbadfe1242f8f47469481773b9b7ec09b0b1bfa99cd545a170a3c4a3d294a", + "i686-unknown-linux-gnu-0.2.9": + "530a4070e2fe5733a0f1ea262033e83638f283fd80fccf81c0e445a68bf47f60", + "i686-unknown-linux-musl-0.2.9": + "68410fd939715734af7d0d7f2a770cb786996604af688f260db94e17f2aeb8e9", + "powerpc64-unknown-linux-gnu-0.2.9": + "04c59c34f3895e9484f40c05fe6fdd2bb1e17a919d4b9cdfd99633a2f52d2ef6", + "powerpc64le-unknown-linux-gnu-0.2.9": + "15a1902193c2654031fd7fafc416f434c36524d86a827e085b35580f83ced93a", + "powerpc64le-unknown-linux-musl-0.2.9": + "9c1ae1bbb60b334d3249e4fbfb6ee2c3b52854764a3e4f6e6a612c4b96542826", + "s390x-unknown-linux-gnu-0.2.9": + "444f7bc74488219e6157136638696fdf6bad37f3090e324e6e843318ff09abb6", + "x86_64-apple-darwin-0.2.9": + "30f22cbe600b657cf6e987a05740194c2f1822f394b1c60e15621989b28b6591", + "x86_64-pc-windows-msvc-0.2.9": + "32057b35feb2dbdb8de32bda75c8621a00f2aa619cfcc6d4cb5506b3b6ba6d63", + "x86_64-unknown-linux-gnu-0.2.9": + "83438964a0be35ddded2099ea64599706e7c7a7de575429ce4df78e20d57774d", + "x86_64-unknown-linux-musl-0.2.9": + "28e583284cdbbd5e3796c4db2c94997f805b5c632d73dcd9a25ddb3dfa9453b7", + "undefined-0.2.8": + "dad41d5189d272b0cca9a87b3bb16c7a74241b9051ebf2b6fd5e94a0659a35fb", + "aarch64-apple-darwin-0.2.8": + "ce64cb16c5e0dd567ba926926a67c569d9138c5162685ed5a40639b2c9163275", + "aarch64-unknown-linux-musl-0.2.8": + "8f4bc88fbb7c498224122047f3f559b93e145753032d59782037ccf2969360b0", + "arm-unknown-linux-musleabihf-0.2.8": + "095db570c8c5d0b8033d605984d2a0513585232b6c44f0255365c1bc016a12c6", + "armv7-unknown-linux-gnueabihf-0.2.8": + "c88b3f63ea7b3727500545edf0a6c1581a34ab5328fa2503e7c40911dce9e26d", + "armv7-unknown-linux-musleabihf-0.2.8": + "0063e160561a5928d73a8d89714aff77c51adbb62f4f1f4f0f438d7d3a03b4ec", + "i686-pc-windows-msvc-0.2.8": + "dd3bcf604e2538625affbcda1e4e61ef1b27aa4515081ac13afaba92ed7ded02", + "i686-unknown-linux-gnu-0.2.8": + "7643a101a02befca1cc3a5c830fc51a157f54bee2afc1eb098686972a9079810", + "i686-unknown-linux-musl-0.2.8": + "71a792c953f782efb1648170abef72ce4ac0ca4dafa101719d87798dca5e7833", + "powerpc64-unknown-linux-gnu-0.2.8": + "fa4afad36eb706bebea001d335aeab753b164ac6870267a6f6dc1f7dd70c03db", + "powerpc64le-unknown-linux-gnu-0.2.8": + "43bf0cd00751c0332c9016c7b30dd2a6c753f0922dc5a1ccaba45e8b6afa4621", + "powerpc64le-unknown-linux-musl-0.2.8": + "a0f15bd3e80e8b97affda7d24e2143c7dd99fcb7c8c8e948bad849d4a3658e52", + "s390x-unknown-linux-gnu-0.2.8": + "106264c325eeeb17e7d8ec5f1b30a31129d4ebe2c97f54dc88fde16be7177a11", + "x86_64-apple-darwin-0.2.8": + "8eafabb094127b35d472e8219047d4596652a9a645189f829f6bdb1b4786f282", + "x86_64-pc-windows-msvc-0.2.8": + "1ee50b71511cf7007b07843562fc2467dee81cb8baf488e8cc0ea0b58ee12ebc", + "x86_64-unknown-linux-gnu-0.2.8": + "ce9f8fca5faef55af4fb83343143bb403ecef518f9118e97a37ccfbf1ccadfc3", + "x86_64-unknown-linux-musl-0.2.8": + "6f155b9b9d2b1baba811bd0c1aba0306a39ac547dd6eeb3906f692d3cec86984", + "undefined-0.2.7": + "dafefc3926d85052bd3dc07e28ebd8ecde0ae575bbf80b5c5bab80fdc3a3ba84", + "aarch64-apple-darwin-0.2.7": + "b9a0e6c501afbc4b47f07a199927d0783857013736c1c8c2d173201175139e45", + "aarch64-unknown-linux-musl-0.2.7": + "40e4fba3abcc76d5f69dc420cbc457ccc7bd7003a07e6caa0a2a8a803b339e31", + "arm-unknown-linux-musleabihf-0.2.7": + "5ec601accbc0b3a3cae4c8223dae977c4233313a246888ee5bf2adf381e07910", + "armv7-unknown-linux-gnueabihf-0.2.7": + "a960192da71ba05438d1ab3632ee5a22c8b02dea087f9c054c224803870c9571", + "armv7-unknown-linux-musleabihf-0.2.7": + "62bd71eb14a9e6149e7277a7cc3f5ab61e291a861d2cb252544353972183427e", + "i686-pc-windows-msvc-0.2.7": + "51144d9d46629f0c260988ff486fe1720ad049fce7cbea201fa861752172d26f", + "i686-unknown-linux-gnu-0.2.7": + "f35314685a233ee0b769cbac99d552f2feb21dcdf5f24bbf069b34dc5a26edf0", + "i686-unknown-linux-musl-0.2.7": + "41afe171469eb811b50fbc6f45c97db842019f3c8707fbf992335eecd78125d6", + "powerpc64-unknown-linux-gnu-0.2.7": + "d84c24bc570589cbf61b35bff7b3b2b7a56fdcd5ba64f53602a0ab8009e07bd7", + "powerpc64le-unknown-linux-gnu-0.2.7": + "f9ed8c319e5dc5920f5cc4455e088ac7768a858bed95eecec330f1e99e47d903", + "powerpc64le-unknown-linux-musl-0.2.7": + "8fbc6d52c63680cc6857b55cf8f025740a807a58c59ccadba87300f7103e0551", + "s390x-unknown-linux-gnu-0.2.7": + "e1d74dce851c3ef82e347221b36247f649d12e5bdfba5c91b211caee7de004b9", + "x86_64-apple-darwin-0.2.7": + "fa3f52a05222d4cefba742e2db029f85c41b7e539c1f748b2583be42b806de91", + "x86_64-pc-windows-msvc-0.2.7": + "5a9b7053ae9d25cd28abdd8fb10a8c5353dc0212594013216da5905eb7515360", + "x86_64-unknown-linux-gnu-0.2.7": + "080bedb35224afca73cb424629e3512b529398f96353c4cdf59fe6cdceac5034", + "x86_64-unknown-linux-musl-0.2.7": + "ebc3de0f88e8cdc211fa914124f201b91037c0ba5f30f2614e630295a147c833", + "undefined-0.2.6": + "c822fc118367829825775874c19d14bb9415804a2c5efa6dfbb302b1fb18ae0e", + "aarch64-apple-darwin-0.2.6": + "f985057f3ef9a101ca4d485337f8b5800d894277f4dbbda50dfef5e0e1d352e4", + "aarch64-unknown-linux-musl-0.2.6": + "41606b5c24e40ae2bcf71d9f8fc28b1f3e1399950ee324aa9925621d5bf1bc0e", + "arm-unknown-linux-musleabihf-0.2.6": + "854f619dfcc52b26e89189b8c8fce3a5041bdd1408cd867d87c9e4751caff6de", + "armv7-unknown-linux-gnueabihf-0.2.6": + "f1194ec0b18cda58537698c5b417f9464d8258334d69049fc32c40c3b8dd173c", + "armv7-unknown-linux-musleabihf-0.2.6": + "5ec8d44a6ef6c732a91463a2c4f6817a71efa0838db6924e2bc889a48118f493", + "i686-pc-windows-msvc-0.2.6": + "abff721157dcf759582735e4c9b366cbde1487d6d8a7d1fb50e1a20fd37d6b4e", + "i686-unknown-linux-gnu-0.2.6": + "e1868d5f0e345d454a8895b09d2e62dd1886bdf01cbeb6d494be9e24a2717b1f", + "i686-unknown-linux-musl-0.2.6": + "abd36ef7319182876fa2bde268f378cf3351036158c6ca9e45996b58f4e54ef6", + "powerpc64-unknown-linux-gnu-0.2.6": + "55b6480dcea50327c20b835fe81a30d685224c5022cabadf364b59a258967e8b", + "powerpc64le-unknown-linux-gnu-0.2.6": + "e8de807c6b42e602b8aa05885627225a33b65d4155c514b58b7bc853d02b792e", + "powerpc64le-unknown-linux-musl-0.2.6": + "6ddc687f19bbb1f9279cf36d3ac05d8ccb7bde1c7b19f1787cd5ac427943fd17", + "s390x-unknown-linux-gnu-0.2.6": + "f596c5420cfc7eb608cc7c560d57047985ff1882d2e95c681e42ce85213adb3e", + "x86_64-apple-darwin-0.2.6": + "8e3a83165f751174041fbe0063cc063f4206270c0a187b55941f52e8a9f132cb", + "x86_64-pc-windows-msvc-0.2.6": + "b359026e348df4e3cc12fc8411992ade3fc5bb5debe334669515383681088a18", + "x86_64-unknown-linux-gnu-0.2.6": + "02c7803b6209a80cdc8a4867a02ca6cb6a622f0d83f5276770a8d5636a89a396", + "x86_64-unknown-linux-musl-0.2.6": + "5efba2047b1e72dbecd64e707d0063f6dc49c22f8ba467480e665534c5f6a17d", + "undefined-0.2.5": + "798f49225017610715474781467463a0dc48be1708973b0001e547c98c7c5f58", + "aarch64-apple-darwin-0.2.5": + "a827cb84658d321de0a029b7207b99fa6e20b99f0c1ab8d24484497b3b87c0e2", + "aarch64-unknown-linux-musl-0.2.5": + "f465b75f0129bfb1e47902a14731460aec5cc71d9586a19ad19a644fd2fa7a5e", + "arm-unknown-linux-musleabihf-0.2.5": + "d630b4b3716d4c4da9118d2d5c083e2fe6b7c769dcae39d4c8546ee3709aa0bb", + "armv7-unknown-linux-gnueabihf-0.2.5": + "3341aa26179eb68f6b6c7bcdf44a0c3f5dbea3f43905920f4c018410fb3d46eb", + "armv7-unknown-linux-musleabihf-0.2.5": + "8be8dacd13b0ea18720b818e536bd80d83ac30eba4d37e8913aeaecf9e2feeb7", + "i686-pc-windows-msvc-0.2.5": + "13cb20dcf23792bc7ad8d73c2e4f003702606f6e9821c1ac8eaf089f6e98f57f", + "i686-unknown-linux-gnu-0.2.5": + "8432f9d68840fe56a21a8542681045447dcab18b75f43a073bc28c4d5c1b8157", + "i686-unknown-linux-musl-0.2.5": + "52540ed8ddf78ec80db95cf54618e6e4fd4cdceab860cbea9a8fafa957c98983", + "powerpc64-unknown-linux-gnu-0.2.5": + "0a4891a6e8fe2ccd4c17196fad8215fe6611d74a89a7b2569d3fca3546103300", + "powerpc64le-unknown-linux-gnu-0.2.5": + "8717ac07d0684b618f112bfb9a7926490511cecebeed8f125b25f4969dba663b", + "powerpc64le-unknown-linux-musl-0.2.5": + "c9811d9a90b3babf6c384d0a10d38f38e5109b604dcc68564f2c1216a3afb21f", + "s390x-unknown-linux-gnu-0.2.5": + "70bbb790f817b1e0d930bea18bfa688d8177362aee8a49b83f1fe88d9123f86d", + "x86_64-apple-darwin-0.2.5": + "8e5808450482b5533c6b33096952b0cfca0a7020d7524c0132616926a9f58878", + "x86_64-pc-windows-msvc-0.2.5": + "bd6c8e30fad5bb2207c2f7248c375034a9becc3ce905bd94322f9d70e9cc6b20", + "x86_64-unknown-linux-gnu-0.2.5": + "5eb13622b4450b3756f2395c261315562c48f405208cd1a160fe47e43fc85da1", + "x86_64-unknown-linux-musl-0.2.5": + "dc591b1322d0ad2d3561c6d18657c5c5c34ff9addaa588645a062cd60d14f0dd", + "undefined-0.2.4": + "073532db6eaf44da32d9a9536f6c48f1c8d450340969234a1b6ac322811758d4", + "aarch64-apple-darwin-0.2.4": + "2edcd05f37e6f1c44aba1388086768dbc53777473c354feef3033fcb5cc3434a", + "aarch64-unknown-linux-musl-0.2.4": + "8bec0692741573c6f150321cdb9be14b1dd22f91fbdb1a87c9b94a184a6ef753", + "arm-unknown-linux-musleabihf-0.2.4": + "c86f3a90d91fbe659708928493a69e35b1a79b2b4bf47d5941a5230ed9412462", + "armv7-unknown-linux-gnueabihf-0.2.4": + "59e781c25a16e667b57f76b8b99bfc31b85ca94811ddd95c549045928f80c3cb", + "armv7-unknown-linux-musleabihf-0.2.4": + "5a89f32071ace6e5d0501fdf7fe787f2739f89df862dfe1d1d48eaef09abc0ae", + "i686-pc-windows-msvc-0.2.4": + "4e6255288f9041070bb0736b4626ddbe9b8933ff5e067224584c9ca14867902f", + "i686-unknown-linux-gnu-0.2.4": + "7f78cc0b7f0316500539f8c9e4f4077c2a94d015673c1aa6ac9402dc8f35ebd4", + "i686-unknown-linux-musl-0.2.4": + "97df66100411c14f30639b8cb97b42365422f462e0a5d1acc0770f1d468cf258", + "powerpc64-unknown-linux-gnu-0.2.4": + "52b2c0dde7367c0424363092f276dc07d4fafa7a5696fc34849975717c53b5f0", + "powerpc64le-unknown-linux-gnu-0.2.4": + "14c765959084196deba0e4f858fec071b03fd70ec9176e7414e7cee88d6d8e0d", + "powerpc64le-unknown-linux-musl-0.2.4": + "118d70b310f2a4029bf15146d5e574c8b987144b13e235b76bb909654bbf8881", + "s390x-unknown-linux-gnu-0.2.4": + "175c5c05689bb332f74927c4001d1a72866bcf8f5b7fd4f2ac766eb30119882b", + "x86_64-apple-darwin-0.2.4": + "a5bd83234920728797fc523e2aa3605c45c7c3ca760e611c4071943cf109e58d", + "x86_64-pc-windows-msvc-0.2.4": + "60599a616c7ea04b2c6a4baac30de0b70e3d934795b672eef73298fdf187656a", + "x86_64-unknown-linux-gnu-0.2.4": + "2c470b016f749063080fefc5dd19176bd25b9761033df9df7b5ab914eba1a8e5", + "x86_64-unknown-linux-musl-0.2.4": + "d795a27ccc2a47e8939b02296780c58377342ca35b51a518e36fa6b62291eabc", + "undefined-0.2.3": + "aa6349670507cf6ce80d832d488391b82b48a9f4511c868886758349d62664de", + "aarch64-apple-darwin-0.2.3": + "20e466f87ebeda26da0fff5306ad998375fe1e27d2514e4b4f5711f9fad6bcee", + "aarch64-unknown-linux-musl-0.2.3": + "8574f4d4c56b87eb0e9041f984d8e79d98c53d2183533c2196f8a6dd16944929", + "arm-unknown-linux-musleabihf-0.2.3": + "092dd369d4336989dffc7114006c069c851a0a09b463e0522e06704fe002d149", + "armv7-unknown-linux-gnueabihf-0.2.3": + "cf2925523919708024d7a99a24318faa252a5fd1264e19aad936295ba65ab97e", + "armv7-unknown-linux-musleabihf-0.2.3": + "04512d5e3d68a6b4f8bcaa8e94d0e196ca0f525a387c45272d3efbcf87ad846e", + "i686-pc-windows-msvc-0.2.3": + "4f9c95a4f10ca3a35ef3d7c84b02ee473826ca3089c0e701c84efaf9bc5dd1dc", + "i686-unknown-linux-gnu-0.2.3": + "1e9a60953f4c7910bc2a28e1b131cad975c4e0b8e4c1616a2c494160badfd330", + "i686-unknown-linux-musl-0.2.3": + "fc5e7a35c7b229eb8be9c38901ffd29ecdbc7bcf4a54cca21c477f8d10f8cdb0", + "powerpc64-unknown-linux-gnu-0.2.3": + "079dd937d5c71ae1ec72ed47a3d78afbe73a1281094f4fb49884758752d28f06", + "powerpc64le-unknown-linux-gnu-0.2.3": + "a6ceeeae7a98c410b97d72a26a6ce5d53115c4883672008a5c614fdf3519e18e", + "powerpc64le-unknown-linux-musl-0.2.3": + "c093aad7e88ce3edd7a971b6921e3365c017cebdda704366249db13b143d8cb0", + "s390x-unknown-linux-gnu-0.2.3": + "0f817aac0d53f0d362b23399d49c5c113c9cd1a7c60cc0d1677dd4306d3c2858", + "x86_64-apple-darwin-0.2.3": + "79c28e2121d4299a2190ab0c8f149d676a6d623a4396c86cda947a9280f494a8", + "x86_64-pc-windows-msvc-0.2.3": + "c02509cee8e75ac1e17ea0101c4e0d624a8e4e033eb74d3fd50d7f06d30ff949", + "x86_64-unknown-linux-gnu-0.2.3": + "d94b9f679b3718ed0f62eee1126f02f1552301b7dc473a7dc3727f20b889e057", + "x86_64-unknown-linux-musl-0.2.3": + "872113d59455f86700d23b4589bd2767491fb7ee4e21c0a62a9f2555c631045b", + "undefined-0.2.2": + "e7ca19e90cc640ac96756b52cdae640d03e427fbce92643a00883cc530487ffd", + "aarch64-apple-darwin-0.2.2": + "4533c5a3f81f64dbcf9fd154cfa5e1cf904e4d9698eca63ec6a209f554a0beb9", + "aarch64-unknown-linux-gnu-0.2.2": + "fa01c8584e6dbea991e9f14e50ad33e51c1a321cabedae738075fe58ee5a3ab7", + "aarch64-unknown-linux-musl-0.2.2": + "2f004af91dc4e5e18074724e3f6ddf074026e264a2ecd27fad067d152e739893", + "arm-unknown-linux-musleabihf-0.2.2": + "3d6038f9d043209c9b135743e766ea11ddd26d25721a21b2494d72233f470090", + "armv7-unknown-linux-gnueabihf-0.2.2": + "2e680d9b99deae3939da2d5bab5997e12713a2991a326a412c117c3471d41d32", + "armv7-unknown-linux-musleabihf-0.2.2": + "9363ea6707d8451b78980cc2a4baef357d9f86ed2e1bc877f68140c5ec47aa3f", + "i686-pc-windows-msvc-0.2.2": + "e3c321c02572db320f1f6555da93fa0a2550cee84be49df8890f45dba49cc31c", + "i686-unknown-linux-gnu-0.2.2": + "e81b97d0dc2756b7ca632d1344d9dcdf0dd3d127f1c4b134c338a05b28454e8a", + "i686-unknown-linux-musl-0.2.2": + "54d79ac9d9f04637176f1eca20917c27993f1cc5040e9f73d2672ba5f414d044", + "powerpc64-unknown-linux-gnu-0.2.2": + "9811a9021a302229a487bb717f643d96c2746691773c552f0c43294b0935a78b", + "powerpc64le-unknown-linux-gnu-0.2.2": + "386bb032c291e0f2c24fa6866588e632eeb999ebac6ab20ce7aaee97f046ba4b", + "powerpc64le-unknown-linux-musl-0.2.2": + "28540d8ca31c5d7568bfb361d7a28a0b5f20ef9f08086d5cc70fda07ad9fb250", + "s390x-unknown-linux-gnu-0.2.2": + "237b3a93ac0d9ccf7d841f89ee0e7b122ae21a0e637ff8149e1faf7a4f55550a", + "x86_64-apple-darwin-0.2.2": + "4c0acbde53ce0fec440379c112bcc6beafd924dbbd6717d97e92245473d1e51a", + "x86_64-pc-windows-msvc-0.2.2": + "fdfede202032b74e3a3e94034c26e23607b4a4326625953f48eae74c1f7d4d0b", + "x86_64-unknown-linux-gnu-0.2.2": + "d19904a4eb2dca1b654639e82fc0327957c73427e504492005645f62d2205a3b", + "x86_64-unknown-linux-musl-0.2.2": + "82c4759fd56e932fd94642172ebea98cb55f4fbaafc4d00038ce425b08a5547f", + "undefined-0.2.1": + "2b7e04835f90d280458fbc473a2d4f47cf960d97769764deb059d0e85a978c45", + "aarch64-apple-darwin-0.2.1": + "bb50bd8c7844ecc366c6dd99205d8cadefaae3a8bc10ea03d51e3e3634426b45", + "aarch64-unknown-linux-gnu-0.2.1": + "e26270d4d3a2f0273ed40e1a237e085500f4db85255ed7d17ebaaa48123a0122", + "aarch64-unknown-linux-musl-0.2.1": + "6ab4c698ee4d2efc2ad9db2d832d47b77feaa4944e8ac90bedb78eae76c0ad76", + "arm-unknown-linux-musleabihf-0.2.1": + "0f58165c9947ea4a2178076fcf31f28186185f73537ff7e77aadcc04225cca0d", + "armv7-unknown-linux-gnueabihf-0.2.1": + "8d36878c23be2c560bb2a14d9fb8e4d418dc14593bd2d7b4ad93aef82eed6d6a", + "armv7-unknown-linux-musleabihf-0.2.1": + "f714dc140fd40d149659ced54ac2d5e9532957afc4d66c3071131b648e417f3e", + "i686-pc-windows-msvc-0.2.1": + "65e6f8c12bd9feb46b0d415d2af9fb4bf018756c1158931a1e8adaa075ad41cb", + "i686-unknown-linux-gnu-0.2.1": + "ce3973a4f332ef0ff996e1dcd7cfcbbcde977a5eb5febe118c4bd1387da66ee2", + "i686-unknown-linux-musl-0.2.1": + "de3a0be9533980e74f1f6d834960cb3cda326a9aa33f86de18238ec9eca148c9", + "powerpc64-unknown-linux-gnu-0.2.1": + "f60a5e600c56cac45289d738264ba99c27c1e345c7e75f41a01d65a3f78d4098", + "powerpc64le-unknown-linux-gnu-0.2.1": + "b49dd3b2e9691daaa9793f1fced2b32edf0998ef55c630b5dcf18670005bdb73", + "powerpc64le-unknown-linux-musl-0.2.1": + "068a869b16d7a1310d895c6bca1b6a6dd6c6b6b5d2c7998433d10b59aee0ff11", + "s390x-unknown-linux-gnu-0.2.1": + "0d79f0c4ad50f6c397889723c22db136d7f819c21576d0a40fb8b762d136b80e", + "x86_64-apple-darwin-0.2.1": + "438b30b81e86b95118ceeee0f8e2a2e018dccb22a5ef83985728610715336d62", + "x86_64-pc-windows-msvc-0.2.1": + "959a818ecf5869d69a4689c3984c5c87c915d898d8327ced120806e0b2f0f699", + "x86_64-unknown-linux-gnu-0.2.1": + "623069deb38e4f2d47054388fdf1e4f9a676853fa42080d3b9bf52cd812c75b5", + "x86_64-unknown-linux-musl-0.2.1": + "d8af260263364fed8f2d4ba7c1c404bbf30f587cbc2a97807b6f8d5a1feb4cab", + "undefined-0.2.0": + "352d767c63e4b8ad10d30f705b62121291c2492e1df3eab26ef6dc94948fe090", + "aarch64-apple-darwin-0.2.0": + "fc2c917a8c2b1567b1d035f4a8122750f900cd813409f9d80bbd287e2597dfae", + "aarch64-unknown-linux-musl-0.2.0": + "3504273e59259c6307446a2c7c1f49f194e8c7d8b79474cdfac97696a655fc34", + "arm-unknown-linux-musleabihf-0.2.0": + "b4664ef3e726bd5569912e4ebab338263b5da150985513fcace4481b8422a09f", + "armv7-unknown-linux-gnueabihf-0.2.0": + "202f293aee0e156611898ef95313be812f9de6273412a27a530370763c5a5daf", + "armv7-unknown-linux-musleabihf-0.2.0": + "afa807e1ce8fdaed8fcb372a0ca46cacd39572d1e87613d4df583936bd8bbfdb", + "i686-pc-windows-msvc-0.2.0": + "d65d94ade914f7507dc93122561e47996c5e0861bdcccdabe794bcd5c9185f82", + "i686-unknown-linux-gnu-0.2.0": + "ac307c2cc67d81c3e22b0cb9af0e808551df4c1b50d1f92ee41bf6f07523ab3e", + "i686-unknown-linux-musl-0.2.0": + "f81963f737b1398d4c3c5ee0d370e7c4706936949e82ae42b52e54fbcc1840fd", + "powerpc64-unknown-linux-gnu-0.2.0": + "5bfcd8a0061edde591868437fe061728c4ae0fcedbe5a2671628eeda35b444ba", + "powerpc64le-unknown-linux-gnu-0.2.0": + "d1338054af7e09ea91016fb0e3656646774e0223859498d814c7495b8a008c94", + "powerpc64le-unknown-linux-musl-0.2.0": + "90fce3a907c1124391408bb5f71a795264a226c8fe31b58ae1808fbe802de043", + "s390x-unknown-linux-gnu-0.2.0": + "e9554cd1d54f00675f768a47b7d68cf541214256d4db9b7d2c60ddab3e85bcd5", + "x86_64-apple-darwin-0.2.0": + "5ac4c95dee24980ced348a86cfe4e114cfcef442ca3cc11046cf8b6edc65f58b", + "x86_64-pc-windows-msvc-0.2.0": + "d716371c39d9075f664f9c30697fe0987fcad79a3d403f79b87f30e1022656e7", + "x86_64-unknown-linux-gnu-0.2.0": + "a14c9317e2c000475851100c83c20ae725e998511b1ff890006d70532567a822", + "x86_64-unknown-linux-musl-0.2.0": + "44a6168281d2fe1226f4af6c94b068006dc458a7b98ff4d4dac1991e161eb678", + "undefined-0.1.45": + "79fee4ffca82be961a2cf79b024506a672a4e5ea1f924c1174ce3a2e5bfee54f", + "aarch64-apple-darwin-0.1.45": + "4990c1ca07e87ea215085c798294205057efd7ed97d7d5f4c76e840fc366753c", + "aarch64-unknown-linux-gnu-0.1.45": + "71ff02cac3e257e12d35fe9bbd6dc096858ec23e218b069b5ec6e5157db39e1b", + "aarch64-unknown-linux-musl-0.1.45": + "7ca9c40f40b1b9f9673f78475a08e45b5c367bf3d73052896ee57a5f434872a6", + "arm-unknown-linux-musleabihf-0.1.45": + "64526323d11e496ff7012821424be3bb102ca2b74bf47392fbdac4991674a650", + "armv7-unknown-linux-gnueabihf-0.1.45": + "c26b07ccb7e35595addc328bfcb99356343b12d59c4d3f9676aebd7aec24163d", + "armv7-unknown-linux-musleabihf-0.1.45": + "dd2fa3ecfaf7a73e86fcb7f3945873b242a3f863742530afc98921cc0daf30b1", + "i686-pc-windows-msvc-0.1.45": + "b010c1ddf3c0de9ec25068e1f7026b369df453b78c6619634da9cdd14aa9d810", + "i686-unknown-linux-gnu-0.1.45": + "2f14d4d41617b0358aadbf1bc8d77db60ca27200a8bdf66b8fd87fe66a18575a", + "i686-unknown-linux-musl-0.1.45": + "bca68fe4228aebd2f5f9572a6cc70fe4a1d0c146a2d64135f264e4ae355bc3d4", + "powerpc64-unknown-linux-gnu-0.1.45": + "f62159477309071a00fef10f0f0305e527bb6ffa1dac99650de365ba4ad6a2bd", + "powerpc64le-unknown-linux-gnu-0.1.45": + "b67882e3778107610793c64048d07ad0d8e9ac627ef215f43ea45cbe074e25fd", + "powerpc64le-unknown-linux-musl-0.1.45": + "1c19bf1fad5e032c812fb084826ce5630081a2863a4aa529f1689e091f340499", + "s390x-unknown-linux-gnu-0.1.45": + "85f6ee976f34bca558da5117613a16dde793e3b05395463cff0f3d3547ca309e", + "x86_64-apple-darwin-0.1.45": + "b820364764eb628a89e11b25acd3fe19dfce436546f4f7c8dc38ede3f7d939df", + "x86_64-pc-windows-msvc-0.1.45": + "3de68132a6316e346f2ae3847dcedaa13ee89a8672b91544bc7d31f49362f20e", + "x86_64-unknown-linux-gnu-0.1.45": + "11341c386088233e197707a30fd9b13233deb222fd366cd39f9daf8e5924c7db", + "x86_64-unknown-linux-musl-0.1.45": + "ceac15973402e27c6c9b1077e35249437b2cbc26f60fc90be31114c47631884b", + "undefined-0.1.44": + "295c120a2b63297d929ee9592c9b1993435a0c6907436d14f8bb93cff5ac4800", + "aarch64-apple-darwin-0.1.44": + "154d45db602d5c4f8dbffb0e038fee581f161963f5562568be565625ac7bc753", + "aarch64-unknown-linux-gnu-0.1.44": + "afb7039f033546d55730dae38a106dd56b358117a565a42bf3ebda9c48db53c6", + "aarch64-unknown-linux-musl-0.1.44": + "3a461fb08697104ac5ff9749a6b370af87b95ad83008978ceffa7d0564fdc8c7", + "arm-unknown-linux-musleabihf-0.1.44": + "db0371a9995d3d6c9ec9a7528ca535d0a5def1177127032360b374817030a71d", + "armv7-unknown-linux-gnueabihf-0.1.44": + "a89e4114aa9855c9070e74c06f663213da614dc145ad21c0ec1aa5f0fa294c30", + "armv7-unknown-linux-musleabihf-0.1.44": + "eeff1ff78345df0e86dc8f3144ea7af47d50ce9400f0d73798964a399167b250", + "i686-pc-windows-msvc-0.1.44": + "c0f74ab851a704b8dfe6afd6bc7fad9d23947561d6c2da1a6cd5274a762c6c4f", + "i686-unknown-linux-gnu-0.1.44": + "6e68901f49540494274fbccb83feda57bef7ef137443228669c790f5f1a14fc9", + "i686-unknown-linux-musl-0.1.44": + "592020dd3bbe026d657341b0a7b28daaa57a68626585491a70863ae9f63a4769", + "powerpc64-unknown-linux-gnu-0.1.44": + "1af1b7839ff2a5cfebc7997fc579cc61a34c8ac4c838edfc07cae7318f1c3ed9", + "powerpc64le-unknown-linux-gnu-0.1.44": + "cdd52a058a4243f9e3c5a4c2ba8edacb969df09623344e45a7adfe5e61e83cfc", + "s390x-unknown-linux-gnu-0.1.44": + "3022aa438b64de7e75c8adea6b1e9650874f63d6e317e4c294d24e41e53d1621", + "x86_64-apple-darwin-0.1.44": + "0c2deb646f49ad7dbf8db9a9a7fa839b76654569d97b1ccd9d18bea89a34b3e0", + "x86_64-pc-windows-msvc-0.1.44": + "f876f8c0867707db2d653973caf9ea306d65503ec772d0df9c02b6d0973fc7df", + "x86_64-unknown-linux-gnu-0.1.44": + "68e8fda65c987cc104bdf7ae1eb332477733d44a27823032826f9370928568b2", + "x86_64-unknown-linux-musl-0.1.44": + "1df53dac9e3a81df6fbbef36e23cd932b1cf0fad9016d943fef63d2ca284bd02", + "undefined-0.1.43": + "0d57d370baf24dcb00ce59f6ab0d3dc2ceee41bd2c870a73fa517d3747d34a4b", + "aarch64-apple-darwin-0.1.43": + "e52c5f38cbcbd238fc40382252e2d40df3df1bbcc1302da86c19324285e9d27c", + "aarch64-unknown-linux-gnu-0.1.43": + "9dd96e89be41fa12b1101ac921265538871d99947ca3b31c87713f3edc6140ea", + "aarch64-unknown-linux-musl-0.1.43": + "f0667c6d7e412ad40e5bbe5964e7448afefaa07d1d9c1a820090f3d555f9184d", + "arm-unknown-linux-musleabihf-0.1.43": + "940a297a5ee1833239632c28c5570e661ff7281607e6c6da003167b70ac28d27", + "armv7-unknown-linux-gnueabihf-0.1.43": + "1adc03865b683480c454994fd6a679607de2843e96a94d470c1e89abced8105a", + "armv7-unknown-linux-musleabihf-0.1.43": + "84010f6b5010caba4186c7824004000687d326f91a9570e176a23ec627d5a83d", + "i686-pc-windows-msvc-0.1.43": + "5e1896d8d83a58c8b02c328c1bcd852515ff760253622b9508228a062120f9c7", + "i686-unknown-linux-gnu-0.1.43": + "ce026f056c1d4cbab5bfef762d1d08f8833191d595151550419d45e4b3a5303f", + "i686-unknown-linux-musl-0.1.43": + "da54678dc50154ed8254308cf6f0c51c6e3fd34cf1f74f418dbdade980705fea", + "powerpc64-unknown-linux-gnu-0.1.43": + "2bc10fa243971de5c7aa2ca1d993b431dbd191ffc0858071c4418f08983f642d", + "powerpc64le-unknown-linux-gnu-0.1.43": + "b624d9c4ebe991f52452b038848e3d23eba9aaa790ff1727520d21f9efa876a8", + "s390x-unknown-linux-gnu-0.1.43": + "d3f707cf4547669431eeb557b097682265c1534e8745a029ad48fd9eacc1c11e", + "x86_64-apple-darwin-0.1.43": + "cf86ff709df440f3bf745af81217484d49fb9d5d6d896f3a9e1b9fd7956cc643", + "x86_64-pc-windows-msvc-0.1.43": + "5765acc5bd938e3dd9e47b2807e9552129de466f31cb835b3c0da3029c46def7", + "x86_64-unknown-linux-gnu-0.1.43": + "62217d8a269cd8901e84e3e197133cdb719a1fa37cd6f4afb07fab001163d247", + "x86_64-unknown-linux-musl-0.1.43": + "c27d81bd87b60ca7bd0119316f0026b231c0418638255400b54e1094140367b0", + "undefined-0.1.42": + "70ad9addeb1259afe4077ed6266c1d9359929cc5fe0311463e52275600814564", + "aarch64-apple-darwin-0.1.42": + "d49e7dea59668962765b8aa2f3a4512b03c166042e380e7a6fec971146ce11e4", + "aarch64-unknown-linux-gnu-0.1.42": + "d4f1192eb260fb67a7b2f69313474c5a08bb3feb777b6ce6e9a74b3c12d22374", + "aarch64-unknown-linux-musl-0.1.42": + "3836a7a5147f6e8826ccfe7b0a081b16b26922ef8359c26b5d678fb50c36ad21", + "arm-unknown-linux-musleabihf-0.1.42": + "354f1d937911f9683dc5f249a4bdd09c637f34b078cd7a2ab0df1133126066b7", + "armv7-unknown-linux-gnueabihf-0.1.42": + "7ef29721204772ab0584acf4d98a43f7a7c54a3beae090b4c443128336492bcd", + "armv7-unknown-linux-musleabihf-0.1.42": + "bada2af1a5cd37573ad88271e8ad6cdd8e038aa88335d667180d91cee4728445", + "i686-pc-windows-msvc-0.1.42": + "7c31034d3869d0b38c64c3b5c066676e0f0e03b1598bc51d931d958bce4ef214", + "i686-unknown-linux-gnu-0.1.42": + "cd7395cb8bf4380f895d88912d872470eae7656e549fec1c2fcf404ab84018d1", + "i686-unknown-linux-musl-0.1.42": + "0eacdfc8d3fe450fa8203797ce1cacc9a6b43e9e4bcabf2901ddd5804b1f84cb", + "powerpc64-unknown-linux-gnu-0.1.42": + "e7b900e759cc429baea47c6f200bf70517207388392c268bdf3dcea98727d271", + "powerpc64le-unknown-linux-gnu-0.1.42": + "03da000f9ca22693e45b729d90eac800014d5dcefec22b74553ea6bebc0b3790", + "s390x-unknown-linux-gnu-0.1.42": + "c9d6d0ead67084fde129e1672d14b56507cd4bc6bb96aef6b0ba6ed0ce085da4", + "x86_64-apple-darwin-0.1.42": + "b510fb1ba6b039acac0e1b4278ef0b8e935feea4dc8006c68e3ac4cf793a0876", + "x86_64-pc-windows-msvc-0.1.42": + "57d82e1b0507aa7b4f2259e411dde942876888265aff04ae1eaa3575ab53fced", + "x86_64-unknown-linux-gnu-0.1.42": + "cf3ca3ffbd1971ccef9b4d6cf703c8cf1730b824888bf63a7f1ede13943ddf7d", + "x86_64-unknown-linux-musl-0.1.42": + "ba96ab47ec0366abc78f8f91613d9fed314da8ff414262535a7dc605caea5a9c", + "undefined-0.1.41": + "8aff538cd8cb640bb12b669a6e4a09f5c077c4d39d22be1245bb93965b5a249b", + "aarch64-apple-darwin-0.1.41": + "c493ac2c5170d656499b7aa4a06d0c20d1c42b8b3b006b72661c747626cb7133", + "aarch64-unknown-linux-gnu-0.1.41": + "84c7427e700888ed4fd8ccd368c69cf28212eac4a81ead1ce376631e51127a1f", + "aarch64-unknown-linux-musl-0.1.41": + "a334362acc469af8928df113e881638e23582d0b86eef133a58c047e904a3974", + "arm-unknown-linux-musleabihf-0.1.41": + "8348e5cf28b04ca15e8f2d04a38ffd43daccfa3b1dd82cefafcdca8b692fcf9a", + "armv7-unknown-linux-gnueabihf-0.1.41": + "e0e5b30a899924516c574d9159fadcce008f5f11a5dccbdf95eaa35c24b28c67", + "armv7-unknown-linux-musleabihf-0.1.41": + "b4ea7eee3c6b2ed72d0f0602304f64d405ed4dc600c8879309c9876818c5e5ce", + "i686-pc-windows-msvc-0.1.41": + "d090a0e918b889e963f681322a3f0901d2dae78be15afc2907ded13a8534c815", + "i686-unknown-linux-gnu-0.1.41": + "21b6ad517cf12b5ff2eb030b0dd523ca49e16d9d99136328f1e8197ec50d981c", + "i686-unknown-linux-musl-0.1.41": + "40ed1d7ee942d25458e9d59a27a261cbaaa3433a966aadc141e48deeaa58b243", + "powerpc64-unknown-linux-gnu-0.1.41": + "799f5a7e1ad802a8e5a7dcf3f340bbaf3ea74cc330cd0294cd9787064cd271a0", + "powerpc64le-unknown-linux-gnu-0.1.41": + "1d80e8205503dab569b7d5d4f833a32b7163bd7770917321185e078e84f64298", + "s390x-unknown-linux-gnu-0.1.41": + "d8ee3120408bff3313832d623debb8d2dea79ce05427daf534ee5f54e9360d81", + "x86_64-apple-darwin-0.1.41": + "af544d0fb0d902b5e4ad1ce574b9bcd1ced6718ede9f7a2c2c163c531b10c602", + "x86_64-pc-windows-msvc-0.1.41": + "0d9567b67a6cc6404c4163f8b661561502440eb68698ad7be1197276717f8d75", + "x86_64-unknown-linux-gnu-0.1.41": + "8d4782acbea2c04f34d90df25c8a7cce62e3673949d3be4a2baaf610385d5db4", + "x86_64-unknown-linux-musl-0.1.41": + "9b0058e9fc92c96e3530ec4e1a998e435214cb3905e7284e09cf7c68f1c33c01", + "undefined-0.1.40": + "c842a83107554c3a90451e7e6d935aa9d3d066bc25e1cba5c66b80c10754384f", + "aarch64-apple-darwin-0.1.40": + "28e92ed4534fa5085050fe51db0a641c319377e6498e5ee98d892ae91139f603", + "aarch64-unknown-linux-gnu-0.1.40": + "452cd7ec339345d4067f27b6db672f02db942bb525c80c510bc3bdd7596d74b3", + "aarch64-unknown-linux-musl-0.1.40": + "b2fcf9819a5fb53aa98a0fc19ecee6bcd862969886de9d63fffe9b3270d284d6", + "arm-unknown-linux-musleabihf-0.1.40": + "cbeada3fbd6c380aa5524e8e963558da11a214d9c416da64428d92af555567f6", + "armv7-unknown-linux-gnueabihf-0.1.40": + "7ae8180326f005e12dfc8be04c2f88c54efba020d5bdfe49608e1b3407956e55", + "armv7-unknown-linux-musleabihf-0.1.40": + "0c1aa0c94457412d466798e565aefbd11e9de4e1b2d4dc9ac0ae45c91d01857f", + "i686-pc-windows-msvc-0.1.40": + "c985f0339bc7375fab00b4a06d1e215017516188040202dae9d6147196a4bd60", + "i686-unknown-linux-gnu-0.1.40": + "e1e5c191d4b5634be80a7f4e79484d58190848253a43c678b8c9a8811483fe93", + "i686-unknown-linux-musl-0.1.40": + "2b6cc95ea515a50d8da69536eb68478009ec7ae0fc94a13f584be11eedc4a4f9", + "powerpc64-unknown-linux-gnu-0.1.40": + "e7d56ee62672e809ddcc7f90b863d5f1a0d314fb613647abc830526b0161b975", + "powerpc64le-unknown-linux-gnu-0.1.40": + "8c5217c8b58824f1939748818fbd0eb57d35196b361c1dad774bbb2ff0b38869", + "s390x-unknown-linux-gnu-0.1.40": + "60689531d1a4308396dfacc16a466749730fdcc9c5fced509172349a2f5d9b58", + "x86_64-apple-darwin-0.1.40": + "9b29374bc79dc4cca9b6e82e420867a06806651f814081987927fec5bc3ea85a", + "x86_64-pc-windows-msvc-0.1.40": + "bf3845b59aaf6bb383c6caf89eae949a18106387be154fb5b2ae9a4e4ed646a4", + "x86_64-unknown-linux-gnu-0.1.40": + "d9175308fcd2bd4b953b05cee66a022380ba493c01b2d35884684719d599299c", + "x86_64-unknown-linux-musl-0.1.40": + "7a5a1173ba3319f176167bd32544ad5d8edf0f38c753820b5627b036c74aabad", + "undefined-0.1.39": + "56e3247a49c76a42c7f686292d8f706110a308c45153913b165657f8db8bcbf7", + "aarch64-apple-darwin-0.1.39": + "35e320cfa41c8902d66e2c491b5b2d2414e1c6443177c660736de657c66fb2c2", + "aarch64-unknown-linux-gnu-0.1.39": + "62b24363f21c07e02f62cf8e298ee6ec30e844006f3a52ac55c02903c755586d", + "aarch64-unknown-linux-musl-0.1.39": + "1a77b4cd4bf6ab52efc780fb252097184c23f81233a8f508e49939eb2e6e690b", + "arm-unknown-linux-musleabihf-0.1.39": + "c8f628862e665199b82826db24db3007c16c361c8d0f31d8dfbd4be2d7aefdfb", + "armv7-unknown-linux-gnueabihf-0.1.39": + "63342dac1cac572f8f12b179d91fcb0527f115f6a7ef17ba7aa24b699854cf39", + "armv7-unknown-linux-musleabihf-0.1.39": + "a9013c428f1505e21e56715e6c91a4e45367b7eb341a14a51663e61305cf7162", + "i686-pc-windows-msvc-0.1.39": + "53e4c2ae32318699a5f6c4c7f19f1dd114b39b15e63704be902ff894b428dfed", + "i686-unknown-linux-gnu-0.1.39": + "f0280538ed9bc68283606e4db031f9cc4c4c8404dc5719e9d1f03f705762966c", + "i686-unknown-linux-musl-0.1.39": + "baa9ef041ed3834d7e5869b10945bb804449e23ea0ffbe91a9475bc4c4e83fe2", + "powerpc64-unknown-linux-gnu-0.1.39": + "5d0312a1ee77d652115a21021f47e374886e84e8d986f3a1bcaa7e5851cd2767", + "powerpc64le-unknown-linux-gnu-0.1.39": + "07b1856e71c35f93ef5359c54f63d819841762316bf4d7c2774e178412d9090c", + "s390x-unknown-linux-gnu-0.1.39": + "773725ad1e02d6f4c90494fad5309a7cb4ce03b2e377fad336fecd895bc42dd2", + "x86_64-apple-darwin-0.1.39": + "cf5393f17de6961c7140d68f80e09c1f43ef47f8fac923ccd41896cce698f296", + "x86_64-pc-windows-msvc-0.1.39": + "a44eb417b0c1e1c7cffd7349b8019d684f6200d0b5cfaef7dc322e8312bb254c", + "x86_64-unknown-linux-gnu-0.1.39": + "e748caea4ddafd3aebba771f4e8f51fe5aa517b71151a648269b3be982a349a1", + "x86_64-unknown-linux-musl-0.1.39": + "dc57b6f64ae82fe604390e05cf66092fe598ae0fd0fdea9d568f6c4874fb3fe2", + "undefined-0.1.38": + "1fde633a2c16b51e43f346681471b3daf26e2b918a6d13de170eada19945774a", + "aarch64-apple-darwin-0.1.38": + "9ed4dee0e0f3da47fc85264fed79ea118f66043481ad71182c21e838f4f207dc", + "aarch64-unknown-linux-gnu-0.1.38": + "8d5afd982060a11748a46b4ca8ef9a2aec52ea4736419dc7c0dc53ad98843454", + "aarch64-unknown-linux-musl-0.1.38": + "b15f7f84f0975825f6f0e2f10ec0ad49ad3bb48d6b7bd89f058e578a939cf383", + "arm-unknown-linux-musleabihf-0.1.38": + "df7fd36d0de1d751f091c431d955b9d0a5cdcc74f446bdd65b91aad97cd016d2", + "armv7-unknown-linux-gnueabihf-0.1.38": + "e0a55e1dde1d1421a10d4706a8e79f37039fd57026f02e629e93b6feea504cfe", + "armv7-unknown-linux-musleabihf-0.1.38": + "b1371b764e2840e5a4ef3567a36626b4aaac2ede2165d42e5ac19683ae4beaf1", + "i686-pc-windows-msvc-0.1.38": + "4acad6296bb67eb9900fefd0ccca8af7d770f485f40c0545120e7b452ef7a0dc", + "i686-unknown-linux-gnu-0.1.38": + "c7065c75b52ba3b9eabb69378e01a1a5d4ca0f80545dcb8a027080fdfcb112a3", + "i686-unknown-linux-musl-0.1.38": + "b65b24356366655aa112c18205d3214fd5fd3eca80888392f7b1e25d215f70e5", + "powerpc64-unknown-linux-gnu-0.1.38": + "2eaad33bb7d742498aec2dc6ff52ebc82103347db74ccdf202e0dbe2047815a9", + "powerpc64le-unknown-linux-gnu-0.1.38": + "a1110c55b4383fb0dc967ae0ee3950499915d34d69d10c08c39d66340f28651a", + "s390x-unknown-linux-gnu-0.1.38": + "537202439156061acea27ef3be90c524368ceffa642f43333dbce223c35be866", + "x86_64-apple-darwin-0.1.38": + "f35f8e07f66109867f10bce591188e5a54a822344517bf5150fcd28c616b744e", + "x86_64-pc-windows-msvc-0.1.38": + "decfffd2e6e707b7b51b0981a51d6d277e8c15aa904be3c820dbd46b35a35a95", + "x86_64-unknown-linux-gnu-0.1.38": + "9b19bf6067ebb2e200211a300f0721e35144424f8f0f703dfc50c0bc745f69df", + "x86_64-unknown-linux-musl-0.1.38": + "29635ef915c1bb4048720e6b5e19f424a5a5f3934adef5a0e036295256c098df", + "undefined-0.1.37": + "158c7d7a9bfe2dc8430eeaa1e985a883d241745fba1acfb75e8d2242169983bf", + "aarch64-apple-darwin-0.1.37": + "1a160798d79a626a06e16634d77315e9dbe363ab6bfdaef424f7b5bffd30cab7", + "aarch64-unknown-linux-gnu-0.1.37": + "d59ed726780815d48f95bf4f7a2d9c41aaa05fc746d5a8af49ae11d7e1f3f34b", + "aarch64-unknown-linux-musl-0.1.37": + "d86cc49c68c9efd1116fe164f4be14d096d20f846ea50fb02148cb44ed3d920f", + "arm-unknown-linux-musleabihf-0.1.37": + "2ad8488bbc2f519bcd2a4435aea33ba79c0dc71fd61f90d898964a02068b8aab", + "armv7-unknown-linux-gnueabihf-0.1.37": + "86441af7ba294abf25ffd60a452955db4e8610490bdaf8c054976bb31d96baa3", + "armv7-unknown-linux-musleabihf-0.1.37": + "7b813fdcadffd54e629dc65541edf2d90d043083e32def8332bf87ce2443f583", + "i686-pc-windows-msvc-0.1.37": + "e676cacfd871e33e7c4972ae241ed6362e20159261f9da8545a3816e436b59b0", + "i686-unknown-linux-gnu-0.1.37": + "bf4c37a3aa6ee61a409c89261593909756dbbd86b0819d5003dc3ac83aa081e1", + "i686-unknown-linux-musl-0.1.37": + "ecf205ac1196602877ad24d1c5fef5c8688d66262d358fe818155190ff0ad8a0", + "powerpc64-unknown-linux-gnu-0.1.37": + "4a0cc47732dada5ee1e1392fe6ddf6e2947a6bcb0b61e83936eaf1ebd363b5e7", + "powerpc64le-unknown-linux-gnu-0.1.37": + "70764f4145e931dfbc195b4f6c2ac592a776b34402480de8dc6145cf2196b7e2", + "s390x-unknown-linux-gnu-0.1.37": + "222b3567a5ce77b4ee0b8732cd18a34a88e31e0c5230c652609da922b83d7d36", + "x86_64-apple-darwin-0.1.37": + "61502d8054f12aafd56ff193abca0606f688fb7d84cea40e94ff3de5a0cc950f", + "x86_64-pc-windows-msvc-0.1.37": + "6bc00aec8b4731a7883b88d27450c959055a24a1f5858777313addbe850a7cad", + "x86_64-unknown-linux-gnu-0.1.37": + "33cb815958a3e84b929dc06d42bf5170a5a5eb60b413f2243b4e62e75edc3e49", + "x86_64-unknown-linux-musl-0.1.37": + "2c591eaa0be3711dce1ad6d07a7564c8738b5c16b009c84037727f94c073a962", + "undefined-0.1.36": + "1d7cf52af7406ddabc4feb66dee5c4573f7b22a5ff73fd8a5b47dec7897c8e7e", + "aarch64-apple-darwin-0.1.36": + "d37641e38512b7e55b9eda7f8a6cb831375b5f1e86f0f326dfe0e6a8602ca7b6", + "aarch64-unknown-linux-gnu-0.1.36": + "c64b7d23c3e27346a5b31a95fc16663407bc72aee0b17eb0aa9d069e312e606e", + "aarch64-unknown-linux-musl-0.1.36": + "89740c2cb16bb57dfb125764fb889f86b225cba0b8691b2bbf30baf96d2348c9", + "arm-unknown-linux-musleabihf-0.1.36": + "a802fd2c6ccd2ca8dcfe85fd2c5fb58689c5c082e6ce8e3aa1b1436031c70879", + "armv7-unknown-linux-gnueabihf-0.1.36": + "07b8fcdcde9f43c94ab4d5296c1e8c86f41589f4d8d15f124311bd3c1f019777", + "armv7-unknown-linux-musleabihf-0.1.36": + "78026455886e3c264eb952c92d2795d19cffddf529651a2d8f20cadac4ad31f8", + "i686-pc-windows-msvc-0.1.36": + "e945b6a176ee08d7440703eb4a975a8b7d383b8e9b480f724dc5d614a90a080a", + "i686-unknown-linux-gnu-0.1.36": + "b1ef60a4b5b153a3c11e9177e2d72f334e1c7d9311bea75d42faa8ac8c9d4e42", + "i686-unknown-linux-musl-0.1.36": + "7fbc9f02618d22f54644c29c65cf6d5ff3cd813f1fcc26cdeaf3ae393057f604", + "powerpc64-unknown-linux-gnu-0.1.36": + "678a5fba4ec6b6d52d6de833a447b288869df501ba33399ddb437977bac14efc", + "powerpc64le-unknown-linux-gnu-0.1.36": + "873a0531ba05ff56ee452365e4ef9c40acd4c4e6225c250e6a6c4c65d728ef70", + "s390x-unknown-linux-gnu-0.1.36": + "14b4956ea11f85a43031509c6d01e8bb941d946f974d405f3cf5dc65500f47fe", + "x86_64-apple-darwin-0.1.36": + "30e3e1156c38e335b969d999b83d9e9f6fa5d497c80e5cdf1c43339cdbbd02bd", + "x86_64-pc-windows-msvc-0.1.36": + "fd43e117e08414970f84cddc6300c5fbd5096be8f9c981d5b3464c28720ddcfb", + "x86_64-unknown-linux-gnu-0.1.36": + "7108a5709273156a176394d6da4b64f63b3c658e350657978eb1ba4c9e287e02", + "x86_64-unknown-linux-musl-0.1.36": + "3c95bc263adcab13ae5c7e9a0c97e9de5037f8926294cf22902d04eb99f951ef", + "undefined-0.1.35": + "033df44758caf9a2d81675419c9ba3bfd9a15255e670078b236b373a6ca8cef9", + "aarch64-apple-darwin-0.1.35": + "d5c0740e4a64c5d79150f1e819d903ec6281906bfce433bfe599312de7994435", + "aarch64-unknown-linux-gnu-0.1.35": + "70721a0535ab34354b2fab1461c6ccfc5949943ad34bfec179f4558aa331635c", + "aarch64-unknown-linux-musl-0.1.35": + "59e4100cdad71bcbf4618516ba860b1829c3b2f255bee00794b5ae1823cd1388", + "arm-unknown-linux-musleabihf-0.1.35": + "4832abf5ab1c3d238e35a1634c6cb62148f5fb722e48d498c1cb10876efaecb5", + "armv7-unknown-linux-gnueabihf-0.1.35": + "ebdda308333bf6ee351f0f225d7076697c316e6f671a23caa8922f876ba2627c", + "armv7-unknown-linux-musleabihf-0.1.35": + "6ea7e2e6953bf3afcc973fea7aaf12ada410407432d86e7665ccd641c503d739", + "i686-pc-windows-msvc-0.1.35": + "af6066ee9197a675a6138a118d3125890468ea036c81d3d3327329830ad3d587", + "i686-unknown-linux-gnu-0.1.35": + "9ad7c1b2a4555b37e54f3e999482d0301e8d030ce3e99627b0fcb1435e853203", + "i686-unknown-linux-musl-0.1.35": + "41be10fbc59cbd7a059f0fbd33440c7b034086d36395546856f2076cb562b4c4", + "powerpc64-unknown-linux-gnu-0.1.35": + "df17a85fb14b5e295bf45a2e371ca0f78463ac66b5fa6d1c1f51f22f3eed592c", + "powerpc64le-unknown-linux-gnu-0.1.35": + "d6300efc3079c3d7fbc861a1907c76c9e9f79bb0b3b6effd39bfeefb38bc9bc3", + "s390x-unknown-linux-gnu-0.1.35": + "6fcece3d517c4a47e4dd40ef8cf40c18bafa88c22f7846abe80f10ae494260a9", + "x86_64-apple-darwin-0.1.35": + "9de159d413f235d791377ecc7266b6c1b076c8a638772f04e6dc05fca32b6b4a", + "x86_64-pc-windows-msvc-0.1.35": + "543ed32847307ef50b5d21c1f9f4968e1e8c97e75a5899f80de5a6c26cd61888", + "x86_64-unknown-linux-gnu-0.1.35": + "ae2081221ea244e4998b89c408421e9922499fecf371c7310cfa0e951bff2a9e", + "x86_64-unknown-linux-musl-0.1.35": + "9abd44dfd8958e251a3b29a1eb95f152fef94f38fcef8bf534b86fd94ef89e35", + "undefined-0.1.34": + "ff93be812726a344252374ba1751b0089237439077a30c9214fb9a44bc32582b", + "aarch64-apple-darwin-0.1.34": + "40233daeac0eca7ea233b79a8f312fb9d85913fc74547031c81f2ec7c3f3aae0", + "aarch64-unknown-linux-gnu-0.1.34": + "e4fac2f30a2c8e1773b08d4f50994c484a8166f64fc2cf0ed19ccac62f5d01a9", + "aarch64-unknown-linux-musl-0.1.34": + "e13bc0a5fa7aebdb83627cccb95d50d202d6c1d08ec3bc8ff035abc6c5438edf", + "arm-unknown-linux-musleabihf-0.1.34": + "ad0fb8ab07cf301192a829684c8f3b0fc3d024d7e75297c2ed4dddd8d249fc89", + "armv7-unknown-linux-gnueabihf-0.1.34": + "48b5588ad3ff90944a13c24744a14964b68a99fac7694d9a79f4cf38aa38b386", + "armv7-unknown-linux-musleabihf-0.1.34": + "7591b8ee28f1c79b9fa35a32a3f3af32012a221f01851a9747e2686dffe735d6", + "i686-pc-windows-msvc-0.1.34": + "1dd6e548b6f3f661152fed143257184439b819334d7f1124aab015a4919dd4e6", + "i686-unknown-linux-gnu-0.1.34": + "e5b8ac197e33d4884cdeaedf48a90bda44dabff330c194ca55ceff769dd8dcb9", + "i686-unknown-linux-musl-0.1.34": + "2d43d99471b8dc32f6776559769d9dca1c9b587445f9be12ae751d7c58947f06", + "powerpc64-unknown-linux-gnu-0.1.34": + "a6774692b35f66f871c537e0133d4e1ea629862c73dccd6221307a609f7b4cf8", + "powerpc64le-unknown-linux-gnu-0.1.34": + "8ac52b6ad77eb013fa289b42f465b9ab8ba5f861cd76c828c69aca6121682cd8", + "s390x-unknown-linux-gnu-0.1.34": + "2d394cf56c1f81b434e45aa0df61b48241675a5b5c97b91b6d511827aa0f2ea4", + "x86_64-apple-darwin-0.1.34": + "2f6933cf0e10e99cb3575deebcad5cc143961a3da167c4b21eff4d600ef872ec", + "x86_64-pc-windows-msvc-0.1.34": + "98c824618c808cf4ae1af16c5341086f0038e0dc1ae7e0a805c872d6fcc033b7", + "x86_64-unknown-linux-gnu-0.1.34": + "1d3b075c89e5763ddbd19efdaf03d6ad96a753db889a28f5127227c40bb9f0bc", + "x86_64-unknown-linux-musl-0.1.34": + "bd162c354d0406c5ce91c0b16d130a62edbac6528ecd90a7f5b3f2d315f12df3", + "undefined-0.1.33": + "54a67168f4c5cdf44f4197e948cf4ecb65e71001f49584d79eab82358bbda813", + "aarch64-apple-darwin-0.1.33": + "6e6af126bfc34a9d0e02641bd99fda1201a81356455ee4f196b760b3d995cb7a", + "aarch64-unknown-linux-gnu-0.1.33": + "12f04ed3437f06ce6fc0384958e4dbb74c441bd9b46d5f83b8342c6c9247da97", + "aarch64-unknown-linux-musl-0.1.33": + "580542f3997a10191091cbc1f142e1526afb9e98aa6ba0a709245cfde2d99d99", + "arm-unknown-linux-musleabihf-0.1.33": + "febb8276163a99d18fadb04f9dbe298e613b1716c5721a3e2433c2da0fd9b69e", + "armv7-unknown-linux-gnueabihf-0.1.33": + "0302de0a1f48ae05a3a0f7d7924f8845012628fbc55da590037d433bc5977e8f", + "armv7-unknown-linux-musleabihf-0.1.33": + "db82699a990ab3f37709dd0108a336d1cf3e9d3d0f5cd906795eb1a1d0758714", + "i686-pc-windows-msvc-0.1.33": + "753a1ef176fc87846a48eafdda3b0b5e0a3e0e70a746f6868e6c8c097c6322c3", + "i686-unknown-linux-gnu-0.1.33": + "7b55900bfb6423541fdb129ca34396efb614ebfcb8e40027d7861907278f9258", + "i686-unknown-linux-musl-0.1.33": + "302f5755e99fe449664135069e60be7bfbd931d09e22f6447fc0f64c82a464bd", + "powerpc64-unknown-linux-gnu-0.1.33": + "8b007854d21401c41cf2084e21664981aaaa7cbfa5df71365858d12470323823", + "powerpc64le-unknown-linux-gnu-0.1.33": + "02ed93b767b1d4a2d69c61932366104bd016417980cf71c1f898fcd93ec74232", + "s390x-unknown-linux-gnu-0.1.33": + "4341f067c105607d971dca3d9c79cac59b3e8cf4f8f61a50fe87b6236d97cc44", + "x86_64-apple-darwin-0.1.33": + "3e32e8242b32c1231a45888134b5615f45bfd938fc865d82f270a9ca76ab1a90", + "x86_64-pc-windows-msvc-0.1.33": + "b5adf2b7abdd72ab763a1a65624bdbde178797387c461a6e12803157dbf62fee", + "x86_64-unknown-linux-gnu-0.1.33": + "c582cf587db50ae4dd50360c5bc5dffce110c7e457f1dc1955fc6ad447bdfcce", + "x86_64-unknown-linux-musl-0.1.33": + "6a9877d92235c225ba82d18a6960489a8463716ce1f858f793b971f4aa2f7abb", + "undefined-0.1.32": + "c0fad19c5c03cfbf104ccb8e21c510aa556f5d296ad83a5faa737b4dc763a932", + "aarch64-apple-darwin-0.1.32": + "2f33ca87c17c27d6c2e7ac45b26e19de1a07fcd5e9312670a7bbb90634278414", + "aarch64-unknown-linux-gnu-0.1.32": + "ffd433c6508a165f29688694b436289214c5f4569ee62e4b8b00a95dcd661cee", + "aarch64-unknown-linux-musl-0.1.32": + "5b19aeef841ad88313afa80dd56198af6a33c3be2f890936e88e5ee197b914f9", + "arm-unknown-linux-musleabihf-0.1.32": + "ee9a2df7647689dac93f7e98f0f71ea04977b9cbf899a56b061aca594542a8c0", + "armv7-unknown-linux-gnueabihf-0.1.32": + "ec316ac2dc8d5b8ba81e3f19f4550bbdefa5c36ef2a8a7bc90afcc82f37e3f96", + "armv7-unknown-linux-musleabihf-0.1.32": + "43c0dce83f4450ee6442ad768071f834e0d4dadedf333e3d6ff9d2e9b23f0487", + "i686-pc-windows-msvc-0.1.32": + "df848217d4ef5f7a0d55572ac307bccd0052d97c5be21437ec717bb9e461d85e", + "i686-unknown-linux-gnu-0.1.32": + "93c79fa1bfc8d558176cdb5a457c106e3327a5a00c01127d099310fcf312c8d7", + "i686-unknown-linux-musl-0.1.32": + "c6804b16c453d08acfb0a62a9e537d526447df06bf6eba2e70b407dd620ccecc", + "powerpc64-unknown-linux-gnu-0.1.32": + "2b69efb247e543134ac2a5cc662b90f73ed1a2f23eb0a09475db16a82ba7bfa7", + "powerpc64le-unknown-linux-gnu-0.1.32": + "a421a69614e9600df89761193f947f8a1411636dd676a7eaef2f8a38e30d6a51", + "s390x-unknown-linux-gnu-0.1.32": + "4a6e350dfe0b13b56a0877ec033f97c6e24283dd99c9664c755a9ff79a97fd06", + "x86_64-apple-darwin-0.1.32": + "d3450c42b890767f2bad09e496f35f392e0d52f502a0d12b207371852b013a44", + "x86_64-pc-windows-msvc-0.1.32": + "4df4192f5c7824bdfaecd4d3d8fb6310ced6e0980592d5d44b7afed88ef89ff0", + "x86_64-unknown-linux-gnu-0.1.32": + "281204339346c00f395332cec43de65bcdd3675a7dbe17b5d8d1292d7854679a", + "x86_64-unknown-linux-musl-0.1.32": + "a9dc63f9f48a1964340488e4d139d64b59fc14b06733a165af06d1857980dc97", + "undefined-0.1.31": + "b5b97391649fb35d588a7f741339e8862b731d2d31448462758428cbd8c51536", + "aarch64-apple-darwin-0.1.31": + "b00f0d2fbeb2806790b18294c0bf82ae8e69043a7da29d456b369202b261aef1", + "aarch64-unknown-linux-gnu-0.1.31": + "9de4de11f1297a96aa731cf2f8ed7bc2e85405692dd3216d50685062b877ec75", + "aarch64-unknown-linux-musl-0.1.31": + "fc4127da459a7f7264662faca4c697c71ac5c5a13dc92354520453e1f62426fd", + "arm-unknown-linux-musleabihf-0.1.31": + "b2781e289f12f47e7f6af9e908c404e9fb47c74935f3c5d71f6bd34e68c2f88d", + "armv7-unknown-linux-gnueabihf-0.1.31": + "3ef451b3f6dd065a17b3f25d945e3ff0084e2d29c2487ba2cac01f55caa19368", + "armv7-unknown-linux-musleabihf-0.1.31": + "ed6888e8c090593857b9112af8cdf918053e09cf26cb960af73c66f2fe708e1c", + "i686-pc-windows-msvc-0.1.31": + "84b3a4480643c722d7b5a53b219d9e4546b428b9acd5bf003584e3d458b61a4a", + "i686-unknown-linux-gnu-0.1.31": + "01e6a76d251f692fa18630b99b0dc941b11ac9d08cd01622272892f6a75708a6", + "i686-unknown-linux-musl-0.1.31": + "8e3a1312a7d54dc05e661c2af91164b27ec6ba992d37af7c32611c83d970b00e", + "powerpc64-unknown-linux-gnu-0.1.31": + "74ec1054cde973ee495dddc95026f12fa7cf584c1b67b728cdcad118d6524b33", + "powerpc64le-unknown-linux-gnu-0.1.31": + "cdb328074d4f795fee91fbe7e6930149f8b7b5a7921d96e5d7c00b574a4583bf", + "s390x-unknown-linux-gnu-0.1.31": + "90fc1a8614195626642470d4e31b52fd3ac27d5d12df4fe81e008568822c5017", + "x86_64-apple-darwin-0.1.31": + "c10ba963e651ab09a5b1cbb8ac1d0ee74c8f7dca99eab7d41cb9a35b5b7c06b7", + "x86_64-pc-windows-msvc-0.1.31": + "980833bbbbcffb3cf0e2abaf8963cdccfcb4cd378ed980a4168be124efda5c0a", + "x86_64-unknown-linux-gnu-0.1.31": + "f5b4508eb49d8d65fdc712267d18312f4e3d67f168a8d9b4bb24a28bafdaa831", + "x86_64-unknown-linux-musl-0.1.31": + "02ba313bd081d2a99137f123e30692c991d0c6d9e190bdf403fe5b1a53c2bc2e", + "undefined-0.1.30": + "72c816316dc84a6daceadfb856b70f046db7d1a473a16a8bdea5041c786c1693", + "aarch64-apple-darwin-0.1.30": + "2efee289f003bf2033a44396886836dbff9d4e76ad2e0ef6d81d7a39a1068c49", + "aarch64-unknown-linux-gnu-0.1.30": + "169e02774fed015ee7e780b614548f2c0aa9041a6cfb99b7f57cd9bfdebcb367", + "aarch64-unknown-linux-musl-0.1.30": + "35883d461fa233b076a9643e4ca5b0f61ddf0dfc46d545156793beec673acac6", + "arm-unknown-linux-musleabihf-0.1.30": + "673f9a4297e555507cc3e0228693b94d0e2f689022cd04076c49df2b0e84b6ea", + "armv7-unknown-linux-gnueabihf-0.1.30": + "79475a7560e463c484acee1f0da822c32316bc08086445717b5cbb813821593e", + "armv7-unknown-linux-musleabihf-0.1.30": + "168ddee00a64eef97a709084ebafb822bf47ac1fc4962cf44d60a64fb5b8d4c5", + "i686-pc-windows-msvc-0.1.30": + "9c057e5bb6e86da7477fddea1f942cc605c7b780071875fb9b4c3b1931083199", + "i686-unknown-linux-gnu-0.1.30": + "2e3e0925aead2a8e6e2a5dbaa36ac8c292758398d412eab6b01c0651d956df1d", + "i686-unknown-linux-musl-0.1.30": + "6df4acabcc41139433f24d37e4acceeb576826f651b815f3f363afe467e5c5ae", + "powerpc64-unknown-linux-gnu-0.1.30": + "57b9885562cc038d0e784c5875e9e03c7dd13f0b6b3f5fceffb573891ed1b68f", + "powerpc64le-unknown-linux-gnu-0.1.30": + "02f5f9e086980b4429d51c8e73ee5098f69f00edd0684465cc15ee7e2d5eeac0", + "s390x-unknown-linux-gnu-0.1.30": + "e16fdb1ca6941eafdc4ff992ce8e7905c493da3a64000dd7bd362bfc75766627", + "x86_64-apple-darwin-0.1.30": + "a99071ba49044263a24be61aa8341bed035d15f3f1023e3e29eb4522d978a485", + "x86_64-pc-windows-msvc-0.1.30": + "0f8a4b6d093a91b638ac1c9683ed484c491e19911249ce64c26cd31501a90206", + "x86_64-unknown-linux-gnu-0.1.30": + "bf102d20cf00bd2c001610570b6cd1409b63db3f5cef6b55e386d64f3d4724a5", + "x86_64-unknown-linux-musl-0.1.30": + "ff073ae9fce030fab64d1b93fc7a4688a0495eecac7316d55e4dc08a9283a326", + "undefined-0.1.29": + "dad20061d2e13b281925c26f6e1f0872852d095774b241ca8d963a13da4f4249", + "aarch64-apple-darwin-0.1.29": + "a5f4cf59f873ea6ffb8d1c11468936f508e444dba0c8278b8f550e811bcfe77f", + "aarch64-unknown-linux-gnu-0.1.29": + "f4227d02eecfe3f2a7cfb42b25630dd5a4e5f5144231b84b5acdf6be0158a468", + "aarch64-unknown-linux-musl-0.1.29": + "22bf69e1cef9958774751b2770278a0aebaf132c51c04cc6800f0884a18273c3", + "arm-unknown-linux-musleabihf-0.1.29": + "54b34a71c3d3f011f9920caf0b8a9081a62ec16c77e0c69e947c888782f5f6e6", + "armv7-unknown-linux-gnueabihf-0.1.29": + "86c73423657e91cc4e5e1d541f6a061678bb098bb23b74fc44d79524523031af", + "armv7-unknown-linux-musleabihf-0.1.29": + "76108491438a15f9acae142afdec5ca0ea31437ea909240a2534bd7aa45ac96e", + "i686-pc-windows-msvc-0.1.29": + "3dac7e8f710f723accadaf876b7034cd1108509e95fb1ad7fff3a8bf579bda3e", + "i686-unknown-linux-gnu-0.1.29": + "e117aa0b4b1f588699a4259d4e7485938b6aa00d2ab21093ab0047304450fdf1", + "i686-unknown-linux-musl-0.1.29": + "690682d5103b907e43c9704fdd26e5f09ad68894b8135db823b391adef654a91", + "powerpc64-unknown-linux-gnu-0.1.29": + "27aa0b5c7e2278ad74afb27f1f2843ccd6bc0c1c8674e6a10e0bcec73e660012", + "powerpc64le-unknown-linux-gnu-0.1.29": + "90cf042117be9de01e9e2348a7200954fc25c6989b41b4d5e995b8f42dfa5fcc", + "s390x-unknown-linux-gnu-0.1.29": + "4242e2cf825ca433947d44d985eecb11460638f1a8427cc9fe6fa6b70de86c6f", + "x86_64-apple-darwin-0.1.29": + "cb51b2f22f06e99f79ee85f3d353a93a9c25ad674f150490e391166a97fa6db8", + "x86_64-pc-windows-msvc-0.1.29": + "7926be66598e6c0f2b07c6db72a1d9c61f7b1cce72663266dcdcbf4055e1c9a3", + "x86_64-unknown-linux-gnu-0.1.29": + "59e9df30439a01e6852da3f62615d6e6fb8fd79029ee86c7ffdd3fc06c76a84e", + "x86_64-unknown-linux-musl-0.1.29": + "72b43a0e804d033d4064b57acfbd95671abfb0d2c0ddf11bfaf779efdad03e94", + "undefined-0.1.28": + "d6d23768a49cc7ba3a67cded5e826370c6f9e7f5ce6aa69743c5a5deb2f7e08e", + "aarch64-apple-darwin-0.1.28": + "3892e0a04ced4e8a1c900a7577a0c0805f362c5cbe13abc9c822215cb8f2317c", + "aarch64-unknown-linux-gnu-0.1.28": + "6615631b7f8eab6841de405f1978114bba290540fc8b581d4581133dd43d3635", + "aarch64-unknown-linux-musl-0.1.28": + "e6b3421876506904f6aee949303403f5065b00a3be3b799fc921c88e9652bacf", + "arm-unknown-linux-musleabihf-0.1.28": + "23ae513903449d357a452553b9f4f59d7b852507615ddc79136a3c1cec48e5d0", + "armv7-unknown-linux-gnueabihf-0.1.28": + "e6595be0cc281eda4833ea6d398d030a0f8a4f23634004b83a6c0e52805cce78", + "armv7-unknown-linux-musleabihf-0.1.28": + "f24ddffcb5270cb297a5ecdc6a4c59f8be74e47772ddefa26ab2f36339be53bd", + "i686-pc-windows-msvc-0.1.28": + "1eddf62f14320c1049294d2aa3ddefc10f8d309a64735e9b06b1a02e587bc134", + "i686-unknown-linux-gnu-0.1.28": + "6f5627bce734f3a4d3fecb20a047346158d166970e38600eb4c2e4381a3749d6", + "i686-unknown-linux-musl-0.1.28": + "411d3c65c0fe26abc5d6fdc81b3fa5b8a9baf4b431897a52c840779ff1483cd4", + "powerpc64-unknown-linux-gnu-0.1.28": + "39cbd9850e5f40eee31d72403321e00faea9179406d6a670db79b3698eaadf8f", + "powerpc64le-unknown-linux-gnu-0.1.28": + "5a32ff73dbbb335a4b30326ff40b731ce91118d8c792967e274bf43c8811ddc9", + "s390x-unknown-linux-gnu-0.1.28": + "09b41889c9a2c6735f8e8106c31570840ada321c7e574c4e9180ef8e4670f6bc", + "x86_64-apple-darwin-0.1.28": + "a126c460b6cb471c5a9df400773a1e918fdb481db13ce56d072feb5487cb13e8", + "x86_64-pc-windows-msvc-0.1.28": + "5ef7961cf2f35e6df6029c7c83ca3fd08042c9c8b2c692cdeccb19c2a19eb7a6", + "x86_64-unknown-linux-gnu-0.1.28": + "8047abff126ceb1a0e6c3e4f7a6420568e3421b485533f22f30767302ebae235", + "x86_64-unknown-linux-musl-0.1.28": + "2c50282284cf8fdbfa605f6c7c7f2c407be858cc1d36c545571d302da24480c8", + "undefined-0.1.27": + "ca9be4a2ba3ed1bbe4f91530fd65f44e704f968f12c80728d755712f7e5c9d18", + "aarch64-apple-darwin-0.1.27": + "c805ff702e7b5557277154e5d97b0456c811475a704590de8f4e14679efd276b", + "aarch64-unknown-linux-gnu-0.1.27": + "ab1eb8b6e1f7ff05083a03811e33dac1324b20d109747be2aa8f8503800a949b", + "aarch64-unknown-linux-musl-0.1.27": + "7c07173dede199d35061e53827901808dd3cee423ff983e16cc6f5af3343b145", + "arm-unknown-linux-musleabihf-0.1.27": + "ee63d702ddba49e41ecb4073c1ccb75199d61f805b749b9c240c7ae706e641b6", + "armv7-unknown-linux-gnueabihf-0.1.27": + "8a0d62408d061c240fd2db5a50424eae1b37868dbfef9693d8aac2604755a327", + "armv7-unknown-linux-musleabihf-0.1.27": + "3082a815c196f75d80b7104268d6d0c7eb188445fbf5a556d744fd07c371ff94", + "i686-pc-windows-msvc-0.1.27": + "159ae0ab972533827a8a1374145506dc7c761e41f932318b90c5f704d04b6579", + "i686-unknown-linux-gnu-0.1.27": + "1e44735218fec4f95abe3b113c1f7001255a8867166bb007b051f2c930fe0ed3", + "i686-unknown-linux-musl-0.1.27": + "7cc8aab8f6893736847a39075986ed35acc30f75c943202381e287dc3d5a78da", + "powerpc64-unknown-linux-gnu-0.1.27": + "e12e774e4caee36410362bce92ce57f08d438a29178152bc03d097809941b733", + "powerpc64le-unknown-linux-gnu-0.1.27": + "721b6e0dafdd8465d19a22104fc500eb81e9dee1792faba032eec0cea2a9fbca", + "s390x-unknown-linux-gnu-0.1.27": + "4e0697704f335912178816063cec97a5d43da5723e029559ffa245ed6fb73b27", + "x86_64-apple-darwin-0.1.27": + "d2382aa0fa9e42be04bb04132b94765d3f69aeac79c9d4ad3b6066269d0195be", + "x86_64-pc-windows-msvc-0.1.27": + "7e045d7976419e954d8e527f42c27b1726a81ef835747b2b1e4440eb05312b06", + "x86_64-unknown-linux-gnu-0.1.27": + "ffdea092d716bcce4483b29b52c8a14645f4c12c5aa4c012249963d333a0ca7a", + "x86_64-unknown-linux-musl-0.1.27": + "573115039c44ab9c83990bfe9cffdec0ed3d2ee03ad81bb4c391b5e95dbea50b", + "undefined-0.1.26": + "b1187944b39dc0426397b1554fb5c6a862fffdcf4ae46254835b6b286e42b4ab", + "aarch64-apple-darwin-0.1.26": + "37e5e9359c6eb943d31ff0082b0ec5327c93b572a2eafedc8266963181dbb1d0", + "aarch64-unknown-linux-gnu-0.1.26": + "17ebc81973124e4c1c0958ce0eeabb541553d74bccad5a055ab2d33dddd4051b", + "aarch64-unknown-linux-musl-0.1.26": + "9bcedf6847f85a687806a63af1c78d81ad86136074519a2de41120cea1d59ba1", + "arm-unknown-linux-musleabihf-0.1.26": + "b4c4f3acbb11a61074b17c2c3cc18dba861da23cc2f2f512104d4c2710261111", + "armv7-unknown-linux-gnueabihf-0.1.26": + "7c310d13ba517a5cb1e7210b2969a224490d099d2da0012b02613f8448aa7428", + "armv7-unknown-linux-musleabihf-0.1.26": + "1c5900b15c11483d6cc1ecf6aa5c49f5807c2280c8a0333bcd7e47db75635ce0", + "i686-pc-windows-msvc-0.1.26": + "45ad6ac84cf7d4a4195fa96011fb902c7c05221cb65dcb0b84aeeb0194125c76", + "i686-unknown-linux-gnu-0.1.26": + "5f30097ff062c718c40178b904cd654f1259f7ee012db7c102d31af650047602", + "i686-unknown-linux-musl-0.1.26": + "0beb787beb1b8491248977a6407231462b27e47a7678027b3a540bf5f08076b9", + "powerpc64-unknown-linux-gnu-0.1.26": + "576afce4b7a8b8f51b7ac4adb7c93525f6fdf6527e0bbd7a2f0329f3cfb73f89", + "powerpc64le-unknown-linux-gnu-0.1.26": + "98654b9dbf6696391d7362fcf8bb7604afef8e999ffcb645694350e77eb064d8", + "s390x-unknown-linux-gnu-0.1.26": + "7ff5028b7939b346ec195443df9f18155501a1829800d70d9b0face999a4db09", + "x86_64-apple-darwin-0.1.26": + "431a180adf346d96b39f3477a4f26b53741819e0fe411c276c2aa07b90b0a4f5", + "x86_64-pc-windows-msvc-0.1.26": + "874ce589229f3423cd2824dbc4fc1af7c933d0dde544d5883fd68012aaa44f7d", + "x86_64-unknown-linux-gnu-0.1.26": + "27e4edfa8f12986430c2f6265653b7fca3dec9cd8709692b7fb353c5c0f4db82", + "x86_64-unknown-linux-musl-0.1.26": + "39738b23bcedb73e51f2010aac87e759d6b31463af40fba27b5e72cfdb42dd95", + "undefined-0.1.25": + "a5f31208af15c9a4c739abdb04a8daaf4a791c905ec8b95ef4402e7af8d3ccf9", + "aarch64-apple-darwin-0.1.25": + "4971997b9e3abe7fcb6635676db8f3e1d94c4e1939a21024639e6ed08129e512", + "aarch64-unknown-linux-gnu-0.1.25": + "5ab29171ee0b08f2eb3c53416857c4e4737b23fc43ca1e5ec6647e8cd15f94f6", + "aarch64-unknown-linux-musl-0.1.25": + "00b8aa7808e99bb6e8ae07a125f171a4235e3e3f50eb4ac5754bb065ee89df3c", + "arm-unknown-linux-musleabihf-0.1.25": + "24ff2311900171455e909e369e071b419dba3554fa45c01c61e14731f81c936c", + "armv7-unknown-linux-gnueabihf-0.1.25": + "adf4f27836d7dd8e5fbe243eeb15088a47d0aff30e4ed8f0dee5e098e790efd4", + "armv7-unknown-linux-musleabihf-0.1.25": + "b4c36a4eec6fb6f03ef3f7df1b19384d8b0132563e28f67422c557c66a0975f7", + "i686-pc-windows-msvc-0.1.25": + "d647fc906d07c080743b0b0b5eec4e8b40258016b79cff042c47e0ef84464d60", + "i686-unknown-linux-gnu-0.1.25": + "73376185add2a603281bd8d01cca84b9a432228e81d8ab3d801a7493a82d991d", + "i686-unknown-linux-musl-0.1.25": + "ddf82492c02474371c5cae6bc1dabd6f78c307264a8b494300d9eeda443921c0", + "powerpc64-unknown-linux-gnu-0.1.25": + "730ffc370137f938e3dcfd4a3e93ee3824f159aef94d9e992a4791f485501a86", + "powerpc64le-unknown-linux-gnu-0.1.25": + "e8a57fcf40cb53dce733fb9d04f0e0284861992a33b92dec057147ef93bbe857", + "s390x-unknown-linux-gnu-0.1.25": + "a8045c20f903ec32fbbecf63555379b36b7ce1f4b678912c251a501fc2690603", + "x86_64-apple-darwin-0.1.25": + "658de1759adad8218253f142959fba74b1857a3b77fe5e9c75497bea6ab61277", + "x86_64-pc-windows-msvc-0.1.25": + "101807a6fa761be68d02849c648007dbc2575c86014dc5b1cc6e3273a1e51440", + "x86_64-unknown-linux-gnu-0.1.25": + "8bcac2c9d93cf39d248e5284a2dce442a239f69923f999bf87ed39ec010e204a", + "x86_64-unknown-linux-musl-0.1.25": + "d42a18274d064eeb5bc9a14f48b175c7b5d814effd12cd5a32e8c37c1846cda0", + "undefined-0.1.24": + "9a9d91d1a5dcfecf5029931530d417fc3febf4c469d7d7b9567845c4210bb59b", + "aarch64-apple-darwin-0.1.24": + "e87bdea0fdd29327cc94f4be23e75e1894692423f714ef9afd544c3cef53ebea", + "aarch64-unknown-linux-gnu-0.1.24": + "1799b9fdca185a7efb3abdccdee1a6923c233642d2e84413e1e25bfbdf375db0", + "aarch64-unknown-linux-musl-0.1.24": + "c22b8089a79ca82897e5eeca2cd8a9122ef1423c9b73bf1a12e46895beb01106", + "arm-unknown-linux-musleabihf-0.1.24": + "c90fd4f848f5e87de6117c4f2d1ffe32e5b6347c6ba848427f6557451f117e86", + "armv7-unknown-linux-gnueabihf-0.1.24": + "5b729378de4018d9d722bd3daf60c8e0168ebcfbe6ca2a2eb12fb409c8b0979e", + "armv7-unknown-linux-musleabihf-0.1.24": + "8b3184c5339ac0a1221b1c2b43a1a788bcfa483cf99741257be3e54913aaadfe", + "i686-pc-windows-msvc-0.1.24": + "5fd539c4a8b4838e7ccbdc83270e654cf9dc695f6f70063646f7857c05d558fa", + "i686-unknown-linux-gnu-0.1.24": + "cb8fb04212fab42a5c0886f79d75d578d500676aadfe4549a47b3a880072efb4", + "i686-unknown-linux-musl-0.1.24": + "26c5e68560ee87a017f7ff304da8e38a5b81c8eb6c7c4e866167c14fbdba6421", + "powerpc64-unknown-linux-gnu-0.1.24": + "dc8af9b4d77af8a2f7969ea717f855733bd33179aa134cfafa8cf53399cbfe58", + "powerpc64le-unknown-linux-gnu-0.1.24": + "216cd6ddbad3d6249e516562df59d786cb98640cfa6e19a62043b86192afa97a", + "s390x-unknown-linux-gnu-0.1.24": + "45d2fc92dbbcceb2c64176f5d795bb8259cb3f84b5e5f3b2f3d3809ff4e22531", + "x86_64-apple-darwin-0.1.24": + "f2cf50777bf50f004271be23d74b29fcefe80b98f0c5c3026c003df33cb3467d", + "x86_64-pc-windows-msvc-0.1.24": + "c2ac19c64314f45349c1db423b2b246800d9080f023c231a875de1e084e226eb", + "x86_64-unknown-linux-gnu-0.1.24": + "128c23c81dd74f9fa8fe18844b649c0060322ac13e0e1b3a9ceba259b0c10dc6", + "x86_64-unknown-linux-musl-0.1.24": + "8d2eb876a50c8bfd187fbf166dbadd2790ff41cd351a2e9667e43c97567bfdb0", + "undefined-0.1.23": + "5024e379b0f8cdd32a3682dda3bfe228e03876fadc51105af164b7d5f20590c9", + "aarch64-apple-darwin-0.1.23": + "5851419401ceaae8f902cf9f439409e7216abdad4f708fbaedd3d229041aff7c", + "aarch64-unknown-linux-gnu-0.1.23": + "fd322ad0454ad76ba642fecda02d4e2c12971c6c82affdb36f604b1fc9f3481a", + "aarch64-unknown-linux-musl-0.1.23": + "08bd62cafb09d2aea69baf144eb3d4417c9ec2119f02a69103322def653c6ad6", + "arm-unknown-linux-musleabihf-0.1.23": + "0215ea54d551052e90fe6062e574f6fc3888e57a07b5fd790d48750cae037033", + "armv7-unknown-linux-gnueabihf-0.1.23": + "fdb7687c0c3a0cd06c1364379f98641fc58481f05edc32f59dc679abbcab79bc", + "armv7-unknown-linux-musleabihf-0.1.23": + "17972bc9dc7d0d987dd9cb05f7be72dfa8f86c1835b9ccd483e762da20e0dc88", + "i686-pc-windows-msvc-0.1.23": + "8a03b0c564c9b7a82e7811b913b6db0502a05a59baffbc7a5453259f5527dd32", + "i686-unknown-linux-gnu-0.1.23": + "4c65c0772e1f6dbf99923c0564314638df36476c43f2cb394092c72cc79e6c65", + "i686-unknown-linux-musl-0.1.23": + "690afb97130c2d916ddb083c2c853765f6cdb477f28c3cc9e197a2ceae2622d2", + "powerpc64-unknown-linux-gnu-0.1.23": + "0a4bb782d4792b0f1f77249f08841ad82a33f9d46d9bc3f76b330bdcf6cf4726", + "powerpc64le-unknown-linux-gnu-0.1.23": + "bb5cc89be676f9c4e76fa2fc99fbcb9cb9d243f4f27050c115e84ef0824735ff", + "s390x-unknown-linux-gnu-0.1.23": + "0e0f8d08ba4378184819bc02b11e52ceea1bb7aadcf5f70c7c4c01b598c9fd3f", + "x86_64-apple-darwin-0.1.23": + "172e1499a0a02770e7b2544921745596d5c3e7b650043460eda0758249342051", + "x86_64-pc-windows-msvc-0.1.23": + "ad1e99dffc902a3d58589e74180ed4399e59c144bef80cae2027414188f66892", + "x86_64-unknown-linux-gnu-0.1.23": + "81909f58ec476a40998e5ff2b81f8704195140305c8dea58aa041ec1a8e5aa06", + "x86_64-unknown-linux-musl-0.1.23": + "7748461ee4d8922b93843e1850e4dd2defbb1c0b3db8b3c062977637a9d6ffdf", + "undefined-0.1.22": + "20856f7aec12b8c576a8de8a3528de3cdb35789cc3609be580133b59942256c3", + "aarch64-apple-darwin-0.1.22": + "4768499576438c1d7c741b5dc907a5778fd7f52c88555c1eda7288c7c501a0bb", + "aarch64-unknown-linux-gnu-0.1.22": + "bec340cdf59d2451bb22189289e1cfc799c40073a3b40eea62c1efb69c4f13fd", + "aarch64-unknown-linux-musl-0.1.22": + "f8e56575b94adfd190807e248eedac0d4ea5298881e67c00c90f9f7b1940393b", + "arm-unknown-linux-musleabihf-0.1.22": + "e212ab59866890a08f6df8f744e64091609aecbc09eaaa407e70298f0c9fccee", + "armv7-unknown-linux-gnueabihf-0.1.22": + "631d1f8908570a4d0a158de5502f6822ecd80b090f1d71a4642432c988f03097", + "armv7-unknown-linux-musleabihf-0.1.22": + "bc10728ced9bbd5e95b7b55e87e7bdd5c3ed5784ce15350edc99638e9a4220f4", + "i686-pc-windows-msvc-0.1.22": + "e2620f54e81e89071c9bec1bb3ee2c20856a47290b940965a1c2a8f172a44e69", + "i686-unknown-linux-gnu-0.1.22": + "869b6b8587f5fde32dade9ecc1eabbf0a2c41395d0d5936ad7e0ac3d5d3539db", + "i686-unknown-linux-musl-0.1.22": + "7453ffa73990121103a0cec73ba1cfdb16141276c13925a6e043dd70f35381c1", + "powerpc64-unknown-linux-gnu-0.1.22": + "859f3bef8acadaa80c653748dfcb71bae18cc00024c4b74b28a6a3a9b8e058d1", + "powerpc64le-unknown-linux-gnu-0.1.22": + "d39570a41d46206ef04eb2e258e6d005db9cfb797f44cc810001341eb5d46076", + "s390x-unknown-linux-gnu-0.1.22": + "46a306e508b48b3ba404ea10cf13ec18a44caa8851d1ef8e7cad90ac0d665d03", + "x86_64-apple-darwin-0.1.22": + "a46107c1844b21b96b6ed4c222925bcd8b1429ad24d56a3cf41ecb9732554a5a", + "x86_64-pc-windows-msvc-0.1.22": + "7c597a925a893d6e326d3dbb2971883728968ef815168048896ede472563bc35", + "x86_64-unknown-linux-gnu-0.1.22": + "9c17b11bd3991ae98b5333378127aba0ba51888b6969427259b51fbda6bbf955", + "x86_64-unknown-linux-musl-0.1.22": + "6f80cd8ad79c119ed6882bc9c5b8f860f7e554f87b97830a4ebf1e5b746d5e70", + "undefined-0.1.21": + "eae4d4641e57ef2eec75d9f76653b8a3a0dc0b91b3dcc8fbbb2ce4456a08fcfe", + "aarch64-apple-darwin-0.1.21": + "1e7788eb132a6e8b1c81829d81cdbb8ba0b26fe098320217284d4af4332fe606", + "aarch64-unknown-linux-gnu-0.1.21": + "a749bb07a4fb16dfc1942868544043483a233956a882af2944036cd081e54280", + "aarch64-unknown-linux-musl-0.1.21": + "2386ec124440ae73d3a74af4f80685210b2dc7a06266546f21987db557186242", + "armv7-unknown-linux-gnueabihf-0.1.21": + "0a6978192ca8a1a3c0ba9981a946a876c2ab6f06f6e223e79fe77d786b786e67", + "armv7-unknown-linux-musleabihf-0.1.21": + "53ceb4be6f4f036e482c22189c3198f755055725864c38df4cb5928b0e08b0de", + "i686-pc-windows-msvc-0.1.21": + "8713eda354e6dfe9b5d4802c3da111c76210dd7dc671df62fe2fbbfa50522ab8", + "i686-unknown-linux-gnu-0.1.21": + "667846071d7b7dc76d2425270ef569774d18defa59c6ea335c53cca27e1cd3ed", + "i686-unknown-linux-musl-0.1.21": + "531750c37b6aa1694f3e3999dedbe504dd9178196af66db8d9e9412136761143", + "powerpc64-unknown-linux-gnu-0.1.21": + "62713acd9cad5cefc99637f81d995b7d61a900f5a0a15d454ca30ceebd79bae1", + "powerpc64le-unknown-linux-gnu-0.1.21": + "95aad3d08499e9e369d49a02e70ec5ad3502cceedcc08d5de04c490406b1ed90", + "s390x-unknown-linux-gnu-0.1.21": + "f781f57cd8976449e83f7233271021e57646eac516f81c61b284db54759545ab", + "x86_64-apple-darwin-0.1.21": + "02bf25cc3f25c6a70d4c7f40a23c1122aecb0191824e9fedea4814e8295d09e6", + "x86_64-pc-windows-msvc-0.1.21": + "d453b672f4db4a5fed1d7cefec2696b7c6e534f340da22f2d275b0e093c29e60", + "x86_64-unknown-linux-gnu-0.1.21": + "1926f6112b03934f9e4b5caf14f15dc284e5129d1f8572ec55269afb798ed3a7", + "x86_64-unknown-linux-musl-0.1.21": + "999773834330b6b20174f4486d2ddb19e51dc812291189cfb509aa1e1a3d6b6c", + "undefined-0.1.20": + "e0ae591d4c14f0cb6b67ca4d64183fec0130e08a623fdaa991ef707f10908865", + "aarch64-apple-darwin-0.1.20": + "7d6b1bb7e4e044a1f04a541703ea9de0df57111dab57863d82602d848556bc23", + "aarch64-unknown-linux-gnu-0.1.20": + "8dc61e683cbcfda8f3584cf3c58a70fb8f574e1b882e5c94c6b6bc3c00eff44f", + "aarch64-unknown-linux-musl-0.1.20": + "9a4337d01191a16cdc875ee8ee19f884e948a2b5ce8b07f8a7ec1672292cc63a", + "armv7-unknown-linux-gnueabihf-0.1.20": + "aa3ec54087cf351d2016f61ef327eb85117d005b1b6e21027996b7b12e9ce08f", + "armv7-unknown-linux-musleabihf-0.1.20": + "692c438a97afadf193c03ce2de4aee1dc5714ebdb3f8de6a52ed93411927eee4", + "i686-pc-windows-msvc-0.1.20": + "b20110c34f308608d2061786c334e6004e2e91ec165232689fb6c2a4209889c9", + "i686-unknown-linux-gnu-0.1.20": + "e1c1d3947fb72d83a6dc1498c0cebf6ec3be4c963543636ce8fe476731ced694", + "i686-unknown-linux-musl-0.1.20": + "035bfabc092e230a89fcacfd7e0e77ce7e70f03c4e76307cbaa80f2036a38829", + "powerpc64-unknown-linux-gnu-0.1.20": + "49ea75ecbcf149991ddb7ccb9401be88852ff0475e60d55d54bcd4abccf6181e", + "powerpc64le-unknown-linux-gnu-0.1.20": + "a40ccdc8dd695e5b3d767ecec98875615e94ac8cb4c3f81f990c7a619e85fc5d", + "s390x-unknown-linux-gnu-0.1.20": + "b8afa3df67516e9ed86bfd6caf889a21337e20f03f356079e85546ac1912d731", + "x86_64-apple-darwin-0.1.20": + "baff815f3fe568af2440ae4da23b8a1a97c00c6c2710c980f0b0eaff22002ffd", + "x86_64-pc-windows-msvc-0.1.20": + "9be323847cfab082cb2dfa75a5f42631efcd7c1ffbab96d0f36cd7afef4a0c9a", + "x86_64-unknown-linux-gnu-0.1.20": + "88cc7354f27134acf45df679bd6e529191409183a936a974ead9ff2714c3e6ce", + "x86_64-unknown-linux-musl-0.1.20": + "db28ca169154ce55ea7356071dbbed94fc5cc94b3564cd58bb458342788ac45e", + "undefined-0.1.19": + "a0e28df167a8184016b0b8e571eed6d1aeac2cfe63b34e1a26bbb611ebe67657", + "aarch64-apple-darwin-0.1.19": + "1ac97b4bedad801cd5860a83e92e092e9e04246fd7028393ba6b5c2f76fc1dff", + "aarch64-unknown-linux-gnu-0.1.19": + "c9371f7189f129b01bce0a9923d6067ecd77de57860ec3071f163d7ee247fe45", + "aarch64-unknown-linux-musl-0.1.19": + "aa56f9002481cc5e3994d1afd61c03b766967946ceafb95d460203369f262eec", + "armv7-unknown-linux-gnueabihf-0.1.19": + "2d832319b08d16df798accec166f257afb5d308f17a93927f1f2e4b9f9b52e92", + "armv7-unknown-linux-musleabihf-0.1.19": + "bd404945a5f8a46b5b88c2a0fa1f23394cb02cc22c523fb6b248e77c629e6982", + "i686-pc-windows-msvc-0.1.19": + "0c22efc82e8aafd73b1183bebc36f5712df260df6b42b1b4649a16143c1a47bc", + "i686-unknown-linux-gnu-0.1.19": + "fb85b8910523422ccc81822614dac97cf8f2de258b535c7d177fc5932e64a766", + "i686-unknown-linux-musl-0.1.19": + "559720353183dbcb4c29ed359988159369660b80b41e6bc60b47ee48d74caeec", + "powerpc64-unknown-linux-gnu-0.1.19": + "9bb39a224f870c168a1fe5568a9bb16aa358899fe2a74c8870545c058270cf87", + "powerpc64le-unknown-linux-gnu-0.1.19": + "2c131f1139079ab740f8ab9b24865df3fa1d64d8a2f6608a331915e8ecf071ec", + "s390x-unknown-linux-gnu-0.1.19": + "a8cd88c4a007e7bb6260f8b3a226611a3a509fc37d924af651e41ae9302a41fc", + "x86_64-apple-darwin-0.1.19": + "35a276f51381ba7497a3e1d7fec3c47688f485045d65d8922d7ec30f1da489cb", + "x86_64-pc-windows-msvc-0.1.19": + "41f9663eb2407ad661d0f204dcf479a93257a72be06d36e787b0dea93fcc2e0e", + "x86_64-unknown-linux-gnu-0.1.19": + "ab187b253f9f7ffb0063e827cf5efbedb0482d013ac619f6b28158941ca8d5f7", + "x86_64-unknown-linux-musl-0.1.19": + "10e5e7f2007f363717a69393c7c4fee3b7ca8f16d1ae7a4e2cbfa67f7bc41bc7", + "undefined-0.1.18": + "87d953dc58d3936c299609b1697b6d17ca85407edc177d293c98bb9451f8e5ff", + "aarch64-apple-darwin-0.1.18": + "1806f3ada6ab943d86aa45a336e690f66b160145fe85f2adb82f3fcaf4eef925", + "aarch64-unknown-linux-gnu-0.1.18": + "db4eaf43f593b4b7ae8bbd0235e850aa7a18b7e8d8a20141e99866d43967f868", + "aarch64-unknown-linux-musl-0.1.18": + "bd15842c9b530b544b21597cc2212e2e28b1e18b83a27d344482c9df6800c604", + "armv7-unknown-linux-gnueabihf-0.1.18": + "c2971d604eea6d3869bab0d7a292d16f5c8167d48f85b22f6c16fe27e947e26f", + "armv7-unknown-linux-musleabihf-0.1.18": + "4875b208471317c9a7212bb4cdab14b0b350ab35a9c21c7481ebbdf09b4983e9", + "i686-pc-windows-msvc-0.1.18": + "f4e17a94f14bc775dbef4fffc59ce6290e05806e93c348d60e82adc4d9850d51", + "i686-unknown-linux-gnu-0.1.18": + "6a06f1dddfe7dbfe8a09ff2c1d2971204095300edb5bd39ba3b6b289220d52b0", + "i686-unknown-linux-musl-0.1.18": + "12300f65ab5d023e3708327b826de20d7a0451539379fcbf223c6125d221a159", + "powerpc64-unknown-linux-gnu-0.1.18": + "fd8262bc61f6ca8f051b3f5abe0e5d5f5fb25002d0940760a949d5ed61838a97", + "powerpc64le-unknown-linux-gnu-0.1.18": + "557f836ed5c52678db56a90db9b5ce91396d80ce14ac94141a10eea57c44e693", + "s390x-unknown-linux-gnu-0.1.18": + "651f6a6e81939f5e9ed781111f581b71a9ccd3f9dfd269a7d72ffd860d852e58", + "x86_64-apple-darwin-0.1.18": + "a54f1b97fef0d94834e77bb5c013b26be6e94ce888172c80d671453aa12e3cbd", + "x86_64-pc-windows-msvc-0.1.18": + "c34cf263728d784ec98eb6bfda4adb2d7e9ab5f649af8e22a05b60253f919668", + "x86_64-unknown-linux-gnu-0.1.18": + "605e49d8dc48081ef8ba32212df2f17f02e531c02de36b5caf417bd97818fc3a", + "x86_64-unknown-linux-musl-0.1.18": + "ed1e5264e84246f91e1f2dbb642eff24fbce273ded3bac337930a0c6ef9ad6b3", + "undefined-0.1.17": + "7ecfb6fc6c19e3c85cc2ecae0271da16b43bead58b2f0d91fd1c24d1c0f1ae0e", + "aarch64-apple-darwin-0.1.17": + "8f6d1b142dfc4d2040b86a94956eb3c2f5436fd0e889e0d0d1c59dbb8fbbf9de", + "aarch64-unknown-linux-gnu-0.1.17": + "f2aa28f1f9e35c67eb1f4e20d372eca5474c7421b0f1f416210f6542942c5a26", + "aarch64-unknown-linux-musl-0.1.17": + "34fd79808e301a31b884fe98ef2da209883d00f6253cd75df8966744075599ca", + "armv7-unknown-linux-gnueabihf-0.1.17": + "06ae3888af28eab2827e836acde849b4caa993c302a296e35b7275d16346ecba", + "armv7-unknown-linux-musleabihf-0.1.17": + "95bbff6685491e1c9768bb68e35e8a9973abfa65218fc36404f0ad03ddb9dd06", + "i686-pc-windows-msvc-0.1.17": + "7d90730e88affcc9ef564e75d477fa03d341d6bd0473b7ed8060bd5845a73548", + "i686-unknown-linux-gnu-0.1.17": + "7cb5dc29a6bc9d46758f121007d6ed9bedd0969db30214205a298c2b70805605", + "i686-unknown-linux-musl-0.1.17": + "70167e21f118995d5d64ad653eb17430bda962806b6d2df767773db6b33ba444", + "powerpc64-unknown-linux-gnu-0.1.17": + "40f920c10951a89a967b7d6722c74c88038b8c978e3651d5e99b9a1145604df4", + "powerpc64le-unknown-linux-gnu-0.1.17": + "e76e43e9eda10c3730e1b36856a510458a708cfab150a888c8a96ca21234de7f", + "s390x-unknown-linux-gnu-0.1.17": + "de8ae6042474e876d1235a09a771a274f848db13c82229bc9d7d63d5c89f8ce6", + "x86_64-apple-darwin-0.1.17": + "957fbe84e1fb1a7e8b43ed4db7bd5ef5ea3b3f996c92144d5eaf6b3e259859cd", + "x86_64-pc-windows-msvc-0.1.17": + "bd7c736a62f8a102e31a425f4a614de586be30a7c5dbe782bec99c838edd8cdd", + "x86_64-unknown-linux-gnu-0.1.17": + "add91a881b3de0a2defa6cf363bbbbfb5dc58e85cff52e8164052e86fee73809", + "x86_64-unknown-linux-musl-0.1.17": + "d793d93fa5eac748c1ca84ae28f1ba3fbe6d0ec4093818f960e8378d3c012c3f", + "undefined-0.1.16": + "8cffa14f967e4900606afb952a1f5efe92e93a550792cd7ba77784fd7a149d0f", + "aarch64-apple-darwin-0.1.16": + "915b89c135b3890f086149cc50019fb6b243a26311dfe69d7f00204fb6035c87", + "aarch64-unknown-linux-gnu-0.1.16": + "ca18e5b1c9d776130d67e6b7a4f22d14e6abd65c84106fb8b3b2c097bff18f90", + "aarch64-unknown-linux-musl-0.1.16": + "64d8c04ce2b251e34f38f14eeca5d126a05a97bd5734ea77dab2c48a7923921f", + "armv7-unknown-linux-gnueabihf-0.1.16": + "216e542e2c7a22b2325ed7b0f94c1b6491c4dd3297fb595e166f7cce2ea6a0fa", + "armv7-unknown-linux-musleabihf-0.1.16": + "f886aba91e4a79f07899eb97dbde5ffcbcff93b750fff9ccd6a0361fc97c3fab", + "i686-pc-windows-msvc-0.1.16": + "6dbcc9df5402155a8514b60b07b48d09cb402ee34ed07a2450298d5e75b2ce11", + "i686-unknown-linux-gnu-0.1.16": + "ea109c8a25ff78e99318af5c0e8ef9348ff64af2ee718345a4a1e87d0e1e4820", + "i686-unknown-linux-musl-0.1.16": + "48f35670fffab656a342201eca3b6c1c0279cab52fc11b5b42fb87df8fff5297", + "powerpc64-unknown-linux-gnu-0.1.16": + "636ecb9fcf40a7e0d970ec0526cbc7803de8800d8f6945fa0005add0334c7770", + "powerpc64le-unknown-linux-gnu-0.1.16": + "2b07b26602e6d39481e3db5cebe3456190d281327590ef03279357d8b05305ee", + "s390x-unknown-linux-gnu-0.1.16": + "9db4724da884ff01b394c7499b0520f977d10f20f697f6bb5e9b2e01d50470e2", + "x86_64-apple-darwin-0.1.16": + "daf6316c3e5e610ed99c1eb054bcf9dcc66f970b96a334f7bf6d4eb0d211736d", + "x86_64-pc-windows-msvc-0.1.16": + "73659c150df62c0c42d8f195763fc270a213383fbcf413f746bb026878fa1d93", + "x86_64-unknown-linux-gnu-0.1.16": + "84b15dbd298969ecf2bffb22a3e1003df085579d53d39a6bb87d5813a14e10f2", + "x86_64-unknown-linux-musl-0.1.16": + "1d76289dea83224d61eb84284f00136a1275234e7537baba44ca3c9e696dab05", + "undefined-0.1.15": + "55d165ea2c9ab28351c0f5f680c21a66bc8b8c7799ac39162ca5044d0e23a3f4", + "aarch64-apple-darwin-0.1.15": + "df9bab49d9a171bfafb619422ec8c88c0bea930fb69ddd6c8884420b9cf7a13d", + "aarch64-unknown-linux-gnu-0.1.15": + "33c5c5340b0c29381b0dcfc0458194800a74866301fd6f64efb1e77e4491beba", + "aarch64-unknown-linux-musl-0.1.15": + "ae21b106eb5dd26f76d163613746ae869ff5c6f111aad2a7b482f906a8de81f0", + "armv7-unknown-linux-gnueabihf-0.1.15": + "9bc6769404a17f24340ae39c1b23a495c405644d3c003719145d92596b1559f5", + "armv7-unknown-linux-musleabihf-0.1.15": + "5d678a5a06561c01e8052528186394a45eabcb37595c4540205c292d8d9f2f82", + "i686-pc-windows-msvc-0.1.15": + "84cfd219b31f5cde825d212012652ab326a81d621faf86c08b03b0b85e72ae4c", + "i686-unknown-linux-gnu-0.1.15": + "56ceeb2d72f0ae1fa2852b4951bb0c64c5502472a867532ca157c89e93ade4c2", + "i686-unknown-linux-musl-0.1.15": + "62b821fd3e94190b2f7427a6a805b0b9308e21383a8c3161bc4ab7d777ef40b0", + "powerpc64-unknown-linux-gnu-0.1.15": + "f06fbd8a50544d9e76d1e0a984a5fc17fcaddf237e28f2874d8a6f01ea5034a0", + "powerpc64le-unknown-linux-gnu-0.1.15": + "14f177d8e9c83356e57f7f3f54c1dcca28f47bd784278436207c6149244ee1d5", + "s390x-unknown-linux-gnu-0.1.15": + "cb714eab80809c6b921c2b4f7b81e2c166c07a75c990032ee6d5e939986beabe", + "x86_64-apple-darwin-0.1.15": + "8cb18f0aa3d61dea3b3d8dc98aaea6b9f1f8677d43db89a0c69b53c86ad6a9c5", + "x86_64-pc-windows-msvc-0.1.15": + "dfe55955cc7ab137b0dfb186f0e6108f320d79383761d62415ea554167cecb42", + "x86_64-unknown-linux-gnu-0.1.15": + "00a37907aa7985e88584ab4765905b720fa8b9088d1bcae7611c10f398299c5d", + "x86_64-unknown-linux-musl-0.1.15": + "5f7378a55671fa53e32cf5cc8beaf2cca40db95a579faaaa1310399f9329d27c", + "undefined-0.1.14": + "19be86f31cbf3d4c5f7094fc77652c57cd05f70876d22df469d85c52b2108047", + "aarch64-apple-darwin-0.1.14": + "793d267ae803c4c59b9d825bbacd09d4f1a06579567a7ea9aa458e2986b5b778", + "aarch64-unknown-linux-gnu-0.1.14": + "fd82838503cd540c5a2aebb38b0c539912c858ff6b8e6c4b74b90a190442a0db", + "aarch64-unknown-linux-musl-0.1.14": + "ef9e8a2cb2a440d8b6b8fddd00f7d7d91b5f060ac8e2142b6ad778a85f00fda5", + "armv7-unknown-linux-gnueabihf-0.1.14": + "03ad6b59053a933de33a4779484ea275fa7e885a8dfe833153eb1cc24b3009ff", + "armv7-unknown-linux-musleabihf-0.1.14": + "ddebfea1674aeb6534181d034477c39d7ccc15065e34e7c9c4abe1333f5f0890", + "i686-pc-windows-msvc-0.1.14": + "365b29899ee7e83057850fc25e231a33f27671785724b0718bda07fce311de1a", + "i686-unknown-linux-gnu-0.1.14": + "f3983d685e27a55554b6107d59db017addebacf143daeceaf15f7a81a0286006", + "i686-unknown-linux-musl-0.1.14": + "84f6644fb06ef46478c68e55b367ecfceebbed80c7e3b5e2b8af70d7fdee6c87", + "powerpc64-unknown-linux-gnu-0.1.14": + "bd21243c9d1679e27ce5d0651cac380521743d20bf996ba146b7a98c9c975dd2", + "powerpc64le-unknown-linux-gnu-0.1.14": + "25f42e9e3fd230e7cc9f416143dd0aa6a5806f306a1abb4d02989edcf938000c", + "s390x-unknown-linux-gnu-0.1.14": + "15ce4609be46217639b0b589398bbc6ead801cb42c750b0c734d51e2384e9be1", + "x86_64-apple-darwin-0.1.14": + "c8d471a0c6f5a710508284cc260005e2d535ecb255b5f2ddc8b362057d8cd80d", + "x86_64-pc-windows-msvc-0.1.14": + "eba641a900d26feb5158fb131a80bb7bbb4ce4bec71284753345f23f885414f9", + "x86_64-unknown-linux-gnu-0.1.14": + "394c421302ba972fffdd674a0a57f7189d8cc5a728fac8a175027abf833eee59", + "x86_64-unknown-linux-musl-0.1.14": + "3c26c7a3e236d9f5d10aa6f32a8751322e8719812424b0b05ede1023f16dbd52", + "undefined-0.1.13": + "859b13879d2a6f97c3c4d8928cb6a81b067b022b4e5b6c8e75bba099570bd0fe", + "aarch64-apple-darwin-0.1.13": + "9d7a71dbb75dbabcbaace98d06517caa691ec8dab8ecbda3afee44ac9cb1e1c3", + "aarch64-unknown-linux-gnu-0.1.13": + "16429c1a00b0a1fb653ae8a104d5af121bc765f047a7b750f356515c50c226c7", + "aarch64-unknown-linux-musl-0.1.13": + "c07044d21142e308961c1509975b71f52bc2f298497869ba40aa84fefa3807cd", + "armv7-unknown-linux-gnueabihf-0.1.13": + "7a62ee6b4e669ea1aec3ab05da021e59ae8b226f524fdc610e14cfafc5b513d7", + "armv7-unknown-linux-musleabihf-0.1.13": + "24c717aa7d4b8cc2e0b2378d2b6097adc376cb8422733a0478f0696ef4f2b5a9", + "i686-pc-windows-msvc-0.1.13": + "5e75f004ece194c6c0bbec894f229bae440556c3c43df6d6a33a93b287a6ef96", + "i686-unknown-linux-gnu-0.1.13": + "3a74bace4da3dbdc3f36e7720d7f6bc56098716e7c3e949664b301136fdf3dee", + "i686-unknown-linux-musl-0.1.13": + "d9c18676b96654a7133cf9a9f1dbfc47b37bf02ba8f7ab9f5f0307a3d6483311", + "powerpc64-unknown-linux-gnu-0.1.13": + "2ffd41af6962f46807f64a44e30c7d5faac3fa8faa1bb1dd65f03cd49e61f66c", + "powerpc64le-unknown-linux-gnu-0.1.13": + "9fcb334fa7d99f732628214f2af386183fccaa7abbf9157df0966b619f741131", + "s390x-unknown-linux-gnu-0.1.13": + "e575fd873988078a20d99346ba0c4964e6fbc322700c8d2541e9fe9e07eee113", + "x86_64-apple-darwin-0.1.13": + "ad133fc0c67cbe2d578631d77d2f6442626c77a1e144bbda2912b7af9085e91a", + "x86_64-pc-windows-msvc-0.1.13": + "f61cc5c329abc535248cce0912fe01c20e7c99ae9bead6015842f8c5fd3cdfeb", + "x86_64-unknown-linux-gnu-0.1.13": + "2bfc6a542a3df6af6f56ccd8ec9f1b0596fff62b11650b0bdb830f10ee4e2d64", + "x86_64-unknown-linux-musl-0.1.13": + "5e771e72b3dd42d99a354fc4ce9be047e4d9fc1a653b2f551128a3b4fd533d28", + "undefined-0.1.12": + "e16d94a2d6365a99d88168175325bc1f9f7e9f72eadb136691150e3fdad4491b", + "aarch64-apple-darwin-0.1.12": + "c27629967760a84caeae66a130bb4c53dc1da0386122a4e67eeb19a0a163311e", + "aarch64-unknown-linux-gnu-0.1.12": + "84b611afe5b7234585999a9ed2e24b542b8d3cb438595f9564629cae6d6a7580", + "aarch64-unknown-linux-musl-0.1.12": + "c9abbf7d6c9ebe737e3b881243297eeb6d67b5a8fd458b9d55deb80b29b45fb8", + "armv7-unknown-linux-gnueabihf-0.1.12": + "1b3bd6f3e8d8080481af2c231fb72defd0d0c63eab2e28528ca420cfbc1b71cf", + "armv7-unknown-linux-musleabihf-0.1.12": + "d74b4a43ddd2601b18e2f4bedd9bcdd84bbd64fba2e4bfb169cda95bbabc88b4", + "i686-pc-windows-msvc-0.1.12": + "6424486541fbdb17c3dd9144e690e3e86c318374342f02db94fc2a369ba31a14", + "i686-unknown-linux-gnu-0.1.12": + "84caece3b6498801a9fca6ae91c341c4287a6f16d3a089199636259b00217bef", + "i686-unknown-linux-musl-0.1.12": + "3daee4d2580054255a78d73eba040a247b1bc1db559726a4be0a4029b9bd1006", + "powerpc64-unknown-linux-gnu-0.1.12": + "588ea9f541451f435eca5811d970e528cf599fc7054d258821f96a87af51eadc", + "powerpc64le-unknown-linux-gnu-0.1.12": + "91c60c49b0309f2f51919a6603eeb03ae32dd7ead8f9f3f390929703577a1ac6", + "s390x-unknown-linux-gnu-0.1.12": + "54334b0bf35ef275a092f4567539066d4a25c59de08bee9dcfa1bb3eaa2348b8", + "x86_64-apple-darwin-0.1.12": + "5ce7d6c25e68cb96ed21773fba9bb9cebca81dac70ab7dce86e620eacf547f24", + "x86_64-pc-windows-msvc-0.1.12": + "c458aa2416bde29315d73356ac34f6639cf55305018bec226c0e310343d6af07", + "x86_64-unknown-linux-gnu-0.1.12": + "fb1f56e7485b6c94364d11f227107fdc74799e8c91ca5321c35e8a19828d7a72", + "x86_64-unknown-linux-musl-0.1.12": + "3d4fe441702e719156c373caffbfccd75254594113d8e3ef5e43d871fad7c722", + "undefined-0.1.11": + "ce4fd6fad4986f5ee738455e251825de4094f48c86555e9b4b3adafc1a88ed27", + "aarch64-apple-darwin-0.1.11": + "64e0aeae1d5135684c65e5d41741f1b2eba5c60e574dfef7386712b259066d95", + "aarch64-unknown-linux-gnu-0.1.11": + "56a7edd9bfadab67100bde6aca3012c9d7d8619405ebb360eae50b88ba2c6dff", + "aarch64-unknown-linux-musl-0.1.11": + "0c890bb996c6431149583a402d5bfc3124da92b6e65ec3ee3a961935b06f8cfd", + "armv7-unknown-linux-gnueabihf-0.1.11": + "d26ac8502154f45e080c8330c58842e33e2330a73937a8f8be0d02f0d20391ee", + "armv7-unknown-linux-musleabihf-0.1.11": + "b7b3e0ba037f28994bbe99abba47ca2fe651e451c533fa54927ab61d21bacb9f", + "i686-pc-windows-msvc-0.1.11": + "75e74c43bf6aeb3cd83a7b7a1f578c2247c48a03fa421317ca7f27f881c0890e", + "i686-unknown-linux-gnu-0.1.11": + "f8d63781a8a0d3452f7322268a4bfb3a6e06816b76deafde660d53bbc2d790d9", + "i686-unknown-linux-musl-0.1.11": + "fef030f0adb05a19072a8a4f042a5e8f55102633653cc092841ab5ea6fef342d", + "powerpc64-unknown-linux-gnu-0.1.11": + "de28ad908376178c3a66bb71a1e882bca9d30964c068c2d84e26982da5fa12b4", + "powerpc64le-unknown-linux-gnu-0.1.11": + "62454fa7c614b129bfdfebd8ed1928b66e379ba4f3da14750255fcd936890256", + "s390x-unknown-linux-gnu-0.1.11": + "75915f9b4efb686247e6524cc467f7d498054915c1aa9888eafc5d3385c3e904", + "x86_64-apple-darwin-0.1.11": + "62f2c6696fdf8bf394662cad54244411b9e96908de9e52b3743955b0d94bd8d4", + "x86_64-pc-windows-msvc-0.1.11": + "e3e49f27f032c195f01d33df30dff16c9ce7d6ac60512c1af117fc4597d0e632", + "x86_64-unknown-linux-gnu-0.1.11": + "8b1d098549f46814ed40975db6e88aba2eb541196bea54753b08f789b6db8384", + "x86_64-unknown-linux-musl-0.1.11": + "a74b6e51ccf087f78814eecd449ad759f55a633015d9762f06d134394e6122fa", + "undefined-0.1.10": + "cf57c25c9b806efdc8f81ff1e66df985513caf28a4508b6399d1e125fabbe359", + "aarch64-apple-darwin-0.1.10": + "1febf66f3377f28d59cedaf16ca08fdf0b18a19dff201ee29cfd4c09b5672a7e", + "aarch64-unknown-linux-gnu-0.1.10": + "88d6b781dfaef6676eb1aae170a8dd18dc0935bb49e6ef4fff0cb33733d3b7ac", + "aarch64-unknown-linux-musl-0.1.10": + "bc7b0d6bbd58eb6eb00ef0fa3bc4ef2fb54c693c0027bcfec8787259de6ab9e3", + "armv7-unknown-linux-gnueabihf-0.1.10": + "c3a6624ce92cce721d32327b7354b656272ee593b1fe97ed8221b429b103a353", + "armv7-unknown-linux-musleabihf-0.1.10": + "b3ac69be2544c280acf6ef4aef660bbc78b000bfe08d46156833031359a3fe8f", + "i686-pc-windows-msvc-0.1.10": + "354b9be42669c2b3e90a3d0e900264fdab89212c0159551a4ef3d2bb273a84a4", + "i686-unknown-linux-gnu-0.1.10": + "665208a455b369b36af3558a2bc75248eb357d54eeaf84b6aa06673c69b7e5ee", + "i686-unknown-linux-musl-0.1.10": + "d2c152c9192eb565917089a2c5d0b5462d01a3e6799ae9e37fc11f4b32e97291", + "powerpc64-unknown-linux-gnu-0.1.10": + "69ab3b4a36ee75892e4a242fd030dbbe11f8028c84b318196496d8ce2e368fc3", + "powerpc64le-unknown-linux-gnu-0.1.10": + "6d037c45c46ceb8b760c8c80e37b0f9cb5cb194ec0ed152ee6b43b3700a1bd37", + "s390x-unknown-linux-gnu-0.1.10": + "bd2bb41a6efb3df0f8336685708963d37cc019ab6782af2d9f5a0e8e08e5f199", + "x86_64-apple-darwin-0.1.10": + "349e36a0b1806d6760b7529384b94b450dffb0284bf541f50f1b9880a4c40667", + "x86_64-pc-windows-msvc-0.1.10": + "d2842d27994304c8613a1ef366386f1cc7d15c05fba3c48b5b115ccb4b59a88a", + "x86_64-unknown-linux-gnu-0.1.10": + "94c6a8bdde7151ea9587f866f47f5d376acedd90606c546bac9585d3ad5b4426", + "x86_64-unknown-linux-musl-0.1.10": + "ff6b01c23bab0333dc258d9decaeddd500d7bcfb3bd6a1c47c12b449e9430bfa", + "undefined-0.1.9": + "5ac47ac172b0d451bb9820174d2b1ddbf1f99a257d512f065735d3a0dec44854", + "aarch64-apple-darwin-0.1.9": + "0b92f201c4f48a54a23074001e490722d8a532043566f3b24fdfddcee5dbbb81", + "aarch64-unknown-linux-gnu-0.1.9": + "51e3791eff68824daf1360631aa2f11f98f3728d5d342cadef191f53e9321c61", + "aarch64-unknown-linux-musl-0.1.9": + "9b00d23f7d7267af182641df08c2c120271164c803f31e9cfb6de62ef1facb87", + "armv7-unknown-linux-gnueabihf-0.1.9": + "8e0c5b9838daf8403dbfc5f6befa54440afbbecc54eddb446265c6db3b3e91ba", + "armv7-unknown-linux-musleabihf-0.1.9": + "0569e3dd62ed50478f1b546d7c32bdfbbf8fc7a9bfd5331794733f89bc1ea114", + "i686-pc-windows-msvc-0.1.9": + "1b6bf7348f81c34912bdf7bf5ff57911849820f198dce12e737f635f87b79cda", + "i686-unknown-linux-gnu-0.1.9": + "3fed572fce343c86737e3912f86dce47a26611b07c86b2ff3be0f4936861a1d3", + "i686-unknown-linux-musl-0.1.9": + "e3f71bc7566e407c88caa0acf98fd2d7267a0e88ba53ca8d8ebd0018ef1a0ede", + "powerpc64-unknown-linux-gnu-0.1.9": + "c2918765883475223e63f9281fc43695f311162a5583e21bc20f86dc5bd124d8", + "powerpc64le-unknown-linux-gnu-0.1.9": + "6571b7c86c31db0e0bca2a002566c94a557968fd58b8f9c7d38539b89cac47ce", + "s390x-unknown-linux-gnu-0.1.9": + "2c7c5a7409a6ecf47062b29342f4a792c689170d9bea4ae9e3db81c6a134bfd3", + "x86_64-apple-darwin-0.1.9": + "a2cbd617b00e26d633ce0622b97ef96282e4924d0aef222754412d2c2ab7e625", + "x86_64-pc-windows-msvc-0.1.9": + "0de903c0c36b91dd1d734d61a1677afbd80e6c0db3c91d775ba011d710866c60", + "x86_64-unknown-linux-gnu-0.1.9": + "4c6305655fba53bd68dcecebc622e172c9de369543539428a5449b4c6ee53ec0", + "x86_64-unknown-linux-musl-0.1.9": + "93f43d609bc6298af89519fc2a8ddcdc3a494110f64e7238c6f19639b3a45755", + "undefined-0.1.8": + "6ba549d17d0b699fa4c955cdc482bfd5a89d6ec4c382119ab1937f6d75c6770e", + "aarch64-apple-darwin-0.1.8": + "0993fce3759983899a83d6c2727576a4b35176d97c13d1bcbabd41e91f6147fb", + "aarch64-unknown-linux-gnu-0.1.8": + "6a8a4ffa1e7157563706e1fbb5b42936d94bbe57effab8b62aef06c69234558d", + "aarch64-unknown-linux-musl-0.1.8": + "f4ae032d4484c5493584b2effc5936627065440eb4c7fa1265b0f5da904f9538", + "armv7-unknown-linux-gnueabihf-0.1.8": + "eb223bf424c28f7d60f24b1a51a8903746c9020d94fb51c91a62024b5463bf2d", + "armv7-unknown-linux-musleabihf-0.1.8": + "eb060441259b20e77b6115a483d8505ff44cb358449dbcb3d72b9ae561ff7c11", + "i686-pc-windows-msvc-0.1.8": + "71d40d232f81acac3ec4ffeb9a732ec231945093867eae3b1008ed516f588c3c", + "i686-unknown-linux-gnu-0.1.8": + "aaf5320b5305621b5ef850e5dcda5e65946443980147015bdf19472ae3ea5360", + "i686-unknown-linux-musl-0.1.8": + "e68cd09932d18ccde2e48830eb068b5ac01f93d06b0c690f8035b9f3dcf07cd1", + "powerpc64-unknown-linux-gnu-0.1.8": + "3980df97930b76b5b93975321f8662db7f8518229079b383df667e88616afdff", + "powerpc64le-unknown-linux-gnu-0.1.8": + "c76e9a5e285c8f728853749c2cc0f39480d0b59c4215437df5055ae73a7659fc", + "s390x-unknown-linux-gnu-0.1.8": + "ec5ed3af4632c6c8a23364bc88b2f9f2266602219be0eada354d4ad1d2496067", + "x86_64-apple-darwin-0.1.8": + "a6f9188e79a95f5220ce27185283d9aba2fc3ea8cdd2abb9d41eda08a9416fb2", + "x86_64-pc-windows-msvc-0.1.8": + "f7fa2a6ff10c3a0281014acabb463ac5b1ff7b3599b6f91e6f507c0fd52483ea", + "x86_64-unknown-linux-gnu-0.1.8": + "074267e2a2eaed2eb87c3ffc71eb1ce1c21c5594e079ec2f2d5d5ff6815cbdf4", + "x86_64-unknown-linux-musl-0.1.8": + "3d8d92513f85811d1383d74c2b5eeef75002b33f1dfcf48cb46c253c31297cc8", + "undefined-0.1.7": + "9729f66c74df1341f05b8e3ef4b02598caa234c1fdfd834adb7435b3ad7107a9", + "aarch64-apple-darwin-0.1.7": + "020cd34efacc144b7dcd0bd1813ca1e8153cbb281b6fb4506be80714ad2322da", + "aarch64-unknown-linux-gnu-0.1.7": + "e349b8e6959ec7840178e48bc06be3a6c41c35dabb7243bd7627ad0c8b9b962b", + "aarch64-unknown-linux-musl-0.1.7": + "8fec50377df06f83dab2248f7397de8250e531e24ef2d2f840e74b55469e4d64", + "armv7-unknown-linux-gnueabihf-0.1.7": + "d07ee44215d486aab894a054576f45efa65cbc45d026785187053aa33f8e195e", + "armv7-unknown-linux-musleabihf-0.1.7": + "f795784c9d352afbf3b7fdbe2109bbd664c65217e6cdbd55efa00f8c383ed2cd", + "i686-pc-windows-msvc-0.1.7": + "6acf1caed9ebc233a3de1cb9fe2ebf20253e4fa915cda65fa53a53a13c860f13", + "i686-unknown-linux-gnu-0.1.7": + "a7022f599dfa97fe21c0926c95b24d04379ec364c8210516525c837e7d19ec9d", + "i686-unknown-linux-musl-0.1.7": + "8045ed3acbf3190daebd5acd62e8707add1b0dd40b138cf9e49934eecb8622d8", + "powerpc64-unknown-linux-gnu-0.1.7": + "52245ab38a7f443e2951814ccb253e4aa11d7c183bbe3ffbd352d5afd6b8bd0a", + "powerpc64le-unknown-linux-gnu-0.1.7": + "1ee56598340ea158ffbfcd3b9ae50e30f3802df5554b1537971531a5b4c8fe23", + "s390x-unknown-linux-gnu-0.1.7": + "179840bf7c06d0d99dbaca52b02a7d697bc43fb48fdf7327b1f4733511d1dc1d", + "x86_64-apple-darwin-0.1.7": + "4a98413d5edae3117d0c0960be2f91dedd88ca0975583819eb520279bcfae55c", + "x86_64-pc-windows-msvc-0.1.7": + "aa20b99f4d687fe95e0ad952300648bad9bc581d034f8fe9952bb1ce3272cc6d", + "x86_64-unknown-linux-gnu-0.1.7": + "60175158c359cf247e67b6499feca8d0848c75d95061b7552dd3c5500938ef63", + "x86_64-unknown-linux-musl-0.1.7": + "d0777ccaf989172b821f7c1a6d2f94b327e527a01ffbd3d5cec1d9d2321ca5db", + "undefined-0.1.6": + "0b1086d16d4fbba5dccb1aed7e8774fbb6d4feccd5cd42efd4509dce521ff698", + "aarch64-apple-darwin-0.1.6": + "3c6f147f2f45d0327803a690722d25ba4c23c4145cf08df971cba161567e448b", + "aarch64-unknown-linux-gnu-0.1.6": + "de9f62f4fbad55c6b8918006e02c65e9cb871d017263f4f1ec3ebb7b6ca87247", + "aarch64-unknown-linux-musl-0.1.6": + "e8a5e657a2837c5522a9f6d5c7b20384cdc53f8841c9190d34cfd251a0087385", + "armv7-unknown-linux-gnueabihf-0.1.6": + "324b4645fe37b68a33fdcd292ba026201c3321882f16ca8293decf943c360426", + "armv7-unknown-linux-musleabihf-0.1.6": + "e4ebba2ab004ea22aa59829bb774230b58e9c750b277a995c3247dcede63ad6f", + "i686-pc-windows-msvc-0.1.6": + "8e6d2180a42c468d72b1ac4bd2b16adfc16021286fe1aae34c27248158fbf25f", + "i686-unknown-linux-gnu-0.1.6": + "332a3a588e95ba99eddbe059d7cf330d98a5d11db4b7d24ef3e9472e046d944b", + "i686-unknown-linux-musl-0.1.6": + "32bd89273ce21fdc064c6bdebcbacc07e74d9ffcd237a2cbdabb522aa5952f7a", + "powerpc64-unknown-linux-gnu-0.1.6": + "7dff85ff980f80915247674288020b9e7050fb42286b73bfa8ea09c6def6aa96", + "powerpc64le-unknown-linux-gnu-0.1.6": + "ad3c76383c5c61e6510057658d013594bf9c34e0d80484de18b8f864ec4dc752", + "s390x-unknown-linux-gnu-0.1.6": + "b58a9ff37ca400c22844e0e0d4aa691b11417b98afe4077a8f2b468aaadd602a", + "x86_64-apple-darwin-0.1.6": + "ac26fa53a156385781959487abe5112d5154bc395eaacbdb21e3ceb20ab5b835", + "x86_64-pc-windows-msvc-0.1.6": + "864a4142b671b1f67fa7e853094e83af8a71445463886f74552636ac7aaac985", + "x86_64-unknown-linux-gnu-0.1.6": + "7dc7a615ed6d613ad49d77c0e4a39361a97f43b842e8b14536a00db9671ce5ab", + "x86_64-unknown-linux-musl-0.1.6": + "4d956f457e0f5a2116d4138082f030488865c0c04aa7389a54f4f80ad0868119", + "undefined-0.1.5": + "90eeea76c1c1de3343f97be1f270c990c10193cdea7925a80913cd31aae71d45", + "aarch64-apple-darwin-0.1.5": + "dc62f02d9684e3453ef62d2b8775323a54d89a446e3dbbd94115e809dbd0aa56", + "aarch64-unknown-linux-gnu-0.1.5": + "23d4ac8e358ef51e436e0dc66f120cf5acb86c1cede69d8ee3bed0864a44efdf", + "aarch64-unknown-linux-musl-0.1.5": + "0b4f963239a69e03ea856e52b474c05be06417961ff7003e06bc0f0db1025f1b", + "armv7-unknown-linux-gnueabihf-0.1.5": + "53778c45a8d95bab74b096bad6e5071b45f7b9d379438c770dbebe119bbf55a6", + "armv7-unknown-linux-musleabihf-0.1.5": + "09a37f4749d1efe473aabe8bf7de3429a92456703741eaa5a41aa85eb3a08f51", + "i686-pc-windows-msvc-0.1.5": + "a50ef8b67c8f50e73a080dcf8e1b928c266a6c08d5c5ee8485b2b9e5a0cc57d3", + "i686-unknown-linux-gnu-0.1.5": + "8a9b3fa8c50ab85767db7c633589ce8aae6440ce615e3984c96aa2885b97d949", + "i686-unknown-linux-musl-0.1.5": + "16f37509d028e7dcd28679f9b24cfd5a21751531a05c8f79fefdbd385b81403f", + "powerpc64-unknown-linux-gnu-0.1.5": + "2788c0444cb62cf6536f3cec9996ec1eeba9daf9f039176920e5f55e1ee30e8f", + "powerpc64le-unknown-linux-gnu-0.1.5": + "08a4022f73326145ce468cac03169e1970685f0eb9bdb053bf61ec53f6f769ed", + "s390x-unknown-linux-gnu-0.1.5": + "3763dd278fe3df1e911cb11fd104327a07dead0e642550ee817e956937da61e2", + "x86_64-apple-darwin-0.1.5": + "3559b67be0cc77a944323bafd5e70de8bd2933613f1825d7980fa0b22ba5f465", + "x86_64-pc-windows-msvc-0.1.5": + "5f3f000d8405d0f93756cefeccca7cf529effc0353d2c694a4b05d79be677ead", + "x86_64-unknown-linux-gnu-0.1.5": + "06e1530ca6dd161d7052a26cd08716276d8d6aee90d6e164cf4e05d4f5694312", + "x86_64-unknown-linux-musl-0.1.5": + "6d290240419ba81e789b458b3d0685bb3cf8c61d725fb43949b554c64a50ce9b", + "undefined-0.1.4": + "1fffbd35b2b8feb57d320b5032cd3972b6dbf99606929dc30b8959aaab1e97cd", + "aarch64-apple-darwin-0.1.4": + "20ddf1a3919664d427d2d5ebb9875d9fef39a9ffd6850c036591235678e42609", + "aarch64-unknown-linux-gnu-0.1.4": + "d0341732b39688b2464cceecaf617af40898eb80b1093ced778e91d13837e057", + "aarch64-unknown-linux-musl-0.1.4": + "f05108b90840554a42b3486c1779c283348131093ee459883e3af73c6bff9cd5", + "armv7-unknown-linux-gnueabihf-0.1.4": + "57fd95339e096d1f59641083bc58b42cd8e4b49ac355a40aed2613fbdaf5bafc", + "armv7-unknown-linux-musleabihf-0.1.4": + "9f0a39ce106970b437ab36cd7f04ed9e5790c79632a44c62e7eee3e97fb89fee", + "i686-pc-windows-msvc-0.1.4": + "55619ce61c7b1788cf6c490f45491a11656c1067e2e6e53a759e9eef338538b2", + "i686-unknown-linux-gnu-0.1.4": + "a3d55664de30d58ba26d34106fea81f2532d73afb47d6812efa884d0726dae39", + "i686-unknown-linux-musl-0.1.4": + "c08cdb5232797e88c3bcf817ff1d8c47c2096275574391e30417fd2cc3f7976f", + "powerpc64-unknown-linux-gnu-0.1.4": + "80ac83cbe2ee1b3c8632988d45d1e9873bd665d8ce03275f8c67cb8a5c4ffc6d", + "powerpc64le-unknown-linux-gnu-0.1.4": + "35fa6f4234785dd0a7362fe3e4521caddb8aec3645cc6b55fc196f0e22756019", + "s390x-unknown-linux-gnu-0.1.4": + "9cfe751e4c0d0db2d3693f777966e2e4b9d01f3651314df87871d5807aa1fd7d", + "x86_64-apple-darwin-0.1.4": + "3b0648dffde1337a592963da1cf1e6167d54cb832128bba2a151b23b260decbc", + "x86_64-pc-windows-msvc-0.1.4": + "0e52e5e2f92599f839d2a69739343d80044fe3593f807c9415729f56cdf59673", + "x86_64-unknown-linux-gnu-0.1.4": + "1eb2f8ba39c231a310e41784980c8085eb747711ad59e430e75975a61a0a7fbf", + "x86_64-unknown-linux-musl-0.1.4": + "04789d4a7f5a50524679b0d7f440566cfe69873448f4128815fab1354d3a0bb0", + "undefined-0.1.3": + "0eeba5a57732dc3b0b81fe0b67f01986aac2580ef27275292b97bc1c48837014", + "aarch64-apple-darwin-0.1.3": + "f15e35d795cb370f6ae9d4107961acb3e7ab190196d6f6e1243ed8941947dcff", + "aarch64-unknown-linux-gnu-0.1.3": + "51d4d1c9fcd4db37535b8aa75698efcb38aeaf29a35ad969c2b17d099e7b9b89", + "aarch64-unknown-linux-musl-0.1.3": + "3e15d92c271a426b7bd3fa65e5947aa7d91c97202645eb8269fa483d58d49167", + "armv7-unknown-linux-gnueabihf-0.1.3": + "391828d0f9916852650de441d947e059a6a1c47eb2a96fcb4e3fecde385a6878", + "armv7-unknown-linux-musleabihf-0.1.3": + "7361f722e2cf3e8c16017778140be3f27f3a4a4f0167c1f25682a35dc374e8d4", + "i686-pc-windows-msvc-0.1.3": + "50370c13b2b841c9f48d66ee056caf369ed70ccfe465f1a7caa44457af494cdd", + "i686-unknown-linux-gnu-0.1.3": + "3516336206e39ced43d534e7319ed01722af68cba0b7d110921eb62e1db991cf", + "i686-unknown-linux-musl-0.1.3": + "0738d7d3a2e9bb13fcaa4c1001c2af00295f3e2f76441fb34edbb83a6ba0f433", + "powerpc64-unknown-linux-gnu-0.1.3": + "f5cc9474f9b19d0ad210454eb779b85e2cd3089f0f509da0995f1c90f86ec9cf", + "powerpc64le-unknown-linux-gnu-0.1.3": + "8bd935aa9c9f894e145de738cdd11b97ee8164ac6fee4915d3b5a5d3ac37d121", + "s390x-unknown-linux-gnu-0.1.3": + "c044ef56eb600fff4c734da9912deaf3b20d962679fde9a88eb7de4cc3d77ad5", + "x86_64-apple-darwin-0.1.3": + "e08524327a9c3ca3f087dcec5fa6ab20c35f3714051034a97ea04eda19e7dc04", + "x86_64-pc-windows-msvc-0.1.3": + "c37479397b96f1576b08a2bb82d94fb5228918633b4605e0b580feefc5794467", + "x86_64-unknown-linux-gnu-0.1.3": + "785f82659bb563553adc08608abd65475bce99f080fd01e9f5a358d2e8ddb2a6", + "x86_64-unknown-linux-musl-0.1.3": + "f7355abd4f4013c573d7ae64c0a42986ffc6b08a73ee24e8bff74ee6335136df", + "undefined-0.1.2": + "ba37d11fcbf801bdacdbffac31817f6be7dc4b11155957e98ed94f65e171c436", + "aarch64-apple-darwin-0.1.2": + "13289f543d96c2506f7c3319e8bbc5fb944c8109374b61188593567dc2dae454", + "aarch64-unknown-linux-gnu-0.1.2": + "5d4a1e82e78080ba308a06ecc408b3f17a13077dd35174031ed37646a4c24bfd", + "aarch64-unknown-linux-musl-0.1.2": + "c869e839347f2fd9e0302d25470659df99918ad8bdfad2477a61393a32d1a361", + "armv7-unknown-linux-gnueabihf-0.1.2": + "67f6d19583bb24d628c6d3a97fd412a81b0f15f88491b6b244cda2832365d3a3", + "armv7-unknown-linux-musleabihf-0.1.2": + "7acbfaef69adffb9591766c1e6b25b5750ddac8c43bded8b8b6301852b3bb436", + "i686-pc-windows-msvc-0.1.2": + "7c923a8c0198da91094c96fe9bf9f737e09aa67f569b5c0f76b5f492b9394190", + "i686-unknown-linux-gnu-0.1.2": + "d5462c8746aaf8f36ca43829c6bc71f8ad303bec83d9173f44e1a3ad36d83871", + "i686-unknown-linux-musl-0.1.2": + "aa85ccbac61b7e8153dd7239f9757ca3a95fb01d0782949f554fd88a396edb29", + "powerpc64-unknown-linux-gnu-0.1.2": + "4055b1ce30f7786fa49fcc9dd7eb3b818aa8903930fc49a42dd11ce99507f8d9", + "powerpc64le-unknown-linux-gnu-0.1.2": + "d36b4d8c78ad8816a760f2d888d52c732b2eae5d62fc0830e6918a0732361c96", + "s390x-unknown-linux-gnu-0.1.2": + "5829510eb1684d2f0f58ddab2e80313e5858d5e5be6e315b9b9a74c9742f6fac", + "x86_64-apple-darwin-0.1.2": + "20777b7f904ec9cf7e4f7ee19fe8a0b64afada1a7168908c14557130768f46b7", + "x86_64-pc-windows-msvc-0.1.2": + "35b7fdb10fad5e644125bfb3d7f5aff83d9aca24268701359e9fef767b8a4a15", + "x86_64-unknown-linux-gnu-0.1.2": + "89624cd11aa20bc4a841bdcb110940ecb9f05555d79c3f8f4758e34d76c5c7ca", + "x86_64-unknown-linux-musl-0.1.2": + "f69cbd79dfea3bd69c4db064565f9eaebb86db2c0ba0609c090be86366d5db42", + "undefined-0.1.1": + "525a76cf1603007fff9d1909126b2f2d3068b1cfa0e0f20dd41769a5efe87808", + "aarch64-apple-darwin-0.1.1": + "ff595133104cd486c7d852f68d5fa82bafddc7cedcc5087432fd55f0681af89a", + "aarch64-unknown-linux-gnu-0.1.1": + "4919f30de5b5321df003f4c73cd8d43e6d1b28da2050e221e7b574398a6c48d8", + "aarch64-unknown-linux-musl-0.1.1": + "1a4382a0e417658c531ad4377f3d2ef95c55cd0bf52b9e854b7a46dc7ba679fe", + "armv7-unknown-linux-gnueabihf-0.1.1": + "96f169f7bbc78bcef25f4a36ec51baf9cf2ecb4f3628267ca1cba780e9f4434a", + "armv7-unknown-linux-musleabihf-0.1.1": + "581d354ec9b3504a133863e2a7ffde8bec2cce12f13e9fffed8f8bcfb28e2a24", + "i686-pc-windows-msvc-0.1.1": + "f8abfe07f7c80e6f0b0bc41b827735e6342bfa14ef302195b23d9d548a3e4827", + "i686-unknown-linux-gnu-0.1.1": + "b976191b1a507b709e95efee48befbf41df0e31cb882a07d4c9a928070985a68", + "i686-unknown-linux-musl-0.1.1": + "ee9702c41ad0606c5b811b62acdbc5a82d814ddcf90b6d9e4f337ac6d5692f97", + "powerpc64-unknown-linux-gnu-0.1.1": + "62cbd638e66db9eddfe05a4d21eb9b3c611b81f8f941c0b93bd8e4c0adb80426", + "powerpc64le-unknown-linux-gnu-0.1.1": + "b0b8107d6f18c9ddfb287a5f25ff01c6b9505aae1e1001be19acfa0c0b024799", + "s390x-unknown-linux-gnu-0.1.1": + "5b50e4cadb4e5ab9f2022c976f41c171fb92c4ed57b3366d8b89397d0de4735b", + "x86_64-apple-darwin-0.1.1": + "dde96aad74a1abd6ba3440eceebca2a5c9f29aecf9178dda0b10d1177cfa3a8d", + "x86_64-pc-windows-msvc-0.1.1": + "2f47b60169f343f0ee64cda77392aab96b77444e52b2e800d881263f33630abe", + "x86_64-unknown-linux-gnu-0.1.1": + "f9d426e72ae4fccb849cef5e944ab8391accde203966f6e309dcc2505379f341", + "x86_64-unknown-linux-musl-0.1.1": + "05fbfb6d1f46b2fda2bbb916b5e0c5e396dc01e8f5b14cc2a9b46f427539a380", + "undefined-0.1.0": + "e745f9958b6cf7c413f52d56e4005e0a8809bdc0237d26fd53555948f4fab8d8", + "aarch64-apple-darwin-0.1.0": + "955d8dcb920b0a544f3595ebf35b813912fefedf4e18f8ac6a984a0532f9e35e", + "aarch64-unknown-linux-gnu-0.1.0": + "fbd2a9edbe98517ba8eb89e8650a411498b5da7b5e6470f3a0cd072bd31f7b79", + "aarch64-unknown-linux-musl-0.1.0": + "492c26b75153aefae58a2f81f4582dc20e2c7b686b284dbb085a7bc0a6270430", + "armv7-unknown-linux-gnueabihf-0.1.0": + "674bf524bcd8b6ed0b9ed42873bcf18af09352ea91777ecec1f1c6bc174f9837", + "armv7-unknown-linux-musleabihf-0.1.0": + "8cfbe423184a860e805dc1b7a2df7b390e0c605cea77ad8dacd8968fca650a41", + "i686-pc-windows-msvc-0.1.0": + "75ae72a862cf609e2141eb5fbd8206cae861e9368c27eff72f34911739cb4a3e", + "i686-unknown-linux-gnu-0.1.0": + "961e44ac4d75e10f64154dcdefa40650767727fba08d73de140b8bb071db0918", + "i686-unknown-linux-musl-0.1.0": + "7db329f27696a0ea70cf36ea6a437eac6ac8740a462d130af1c96fa5c5ae7539", + "powerpc64-unknown-linux-gnu-0.1.0": + "0b5996241dbd3c774bbd76fbb682496367773871787132e3a917f251419ff647", + "powerpc64le-unknown-linux-gnu-0.1.0": + "2d53a5bdf82f26702d5e8db20981b048265040fde49e3e5f1bc8add56ca72ff4", + "s390x-unknown-linux-gnu-0.1.0": + "d9ea9847f045366b428e679d9e44ccce53119f9ed6b2bd167563ef865097695a", + "x86_64-apple-darwin-0.1.0": + "e8e386f588f8fb1a51e309e89da771febda1dc34e99fce5ebf042211389e7c01", + "x86_64-pc-windows-msvc-0.1.0": + "d9a55a65d761831e073a9461a3d5f4462203e991b814522f27dad12ddfab0183", + "x86_64-unknown-linux-gnu-0.1.0": + "43a5253b18dee80d3e259dc0df39db39728296d0a506ab89974d3fc15d8e3a16", + "x86_64-unknown-linux-musl-0.1.0": + "9caa5b457d1adbd30b28444bfccb6c789702e3bb260e286d8f3278bd0cb02af6", + "undefined-0.0.5": + "5eaac1dcbcf6e25b7e2cf73aee3c9ced014605bcd3fe055e337e505ece443835", + "aarch64-apple-darwin-0.0.5": + "887f58afbcdb879bcb07a0d5f99106a10b8023d4b104882627a93798629c7ed8", + "aarch64-unknown-linux-gnu-0.0.5": + "ac9aa3b0ecb1655baafe87be9fdc6e4f904fc7856779e292e8d55d679867f033", + "aarch64-unknown-linux-musl-0.0.5": + "e7ae701ed98ccbe51ef07345c9721b73afac8e68d0c95f9739e2eb367856bf15", + "armv7-unknown-linux-gnueabihf-0.0.5": + "697804a6c83cf1fcfad284baaf72a7a5d03228759aefeccc191a4ed4d6e2ff89", + "armv7-unknown-linux-musleabihf-0.0.5": + "23d2fa787666ed1b4418d584758789805d0954e36e221ec9d58376b5630d3fcc", + "i686-pc-windows-msvc-0.0.5": + "ba05493ffbb4b848ac333278471f119c58bff3ff56a4de9c98449c3cde5b27d4", + "i686-unknown-linux-gnu-0.0.5": + "b867363feedcce39bb6935ad12a597e6474280f69b6c759cc0ee00d0d9859427", + "i686-unknown-linux-musl-0.0.5": + "40e56b614a64d0b2001738f41808f543cd3e43a0bcc4df70d4c28b92376ddf84", + "powerpc64-unknown-linux-gnu-0.0.5": + "0742fd23ced7fafba5ecd580bd47dacd5613acf4b962385909032f1f6d484cb7", + "powerpc64le-unknown-linux-gnu-0.0.5": + "a7f847c0490388a9f970559ff88f935d83373efda94f9db260cec26aa85f11a8", + "s390x-unknown-linux-gnu-0.0.5": + "27fd1a54606ee68d07d5acd2a6000497f43fb1b87203a0c0c92da9cc77007c74", + "x86_64-apple-darwin-0.0.5": + "9a62a8b6d8cefb8716aae62e1deb34df18b4fa6cfc5069c5ef645193c5a9f6c6", + "x86_64-pc-windows-msvc-0.0.5": + "952e3e9ca0e88ad49c516ddaaa6625b0f818b34d83b3ff65f7557c3e07d90c2d", + "x86_64-unknown-linux-gnu-0.0.5": + "c0f3bc450ffac667dd3c12e2fb221177262d60ccac0521797bb4f4fef14cfad3", + "x86_64-unknown-linux-musl-0.0.5": + "705bbe04a93a9d4d9db5224c2f980a88bba272538a33a78ea2e966f46b4d5eb7", +}; diff --git a/src/download/checksum/update-known-checksums.ts b/src/download/checksum/update-known-checksums.ts index ce93616..77f7698 100644 --- a/src/download/checksum/update-known-checksums.ts +++ b/src/download/checksum/update-known-checksums.ts @@ -1,39 +1,39 @@ -import {promises as fs} from 'fs' -import * as tc from '@actions/tool-cache' +import { promises as fs } from "fs"; +import * as tc from "@actions/tool-cache"; export async function updateChecksums( filePath: string, - downloadUrls: string[] + downloadUrls: string[], ): Promise { - await fs.rm(filePath) + await fs.rm(filePath); await fs.appendFile( filePath, - '// AUTOGENERATED_DO_NOT_EDIT\nexport const KNOWN_CHECKSUMS: {[key: string]: string} = {\n' - ) - let firstLine = true + "// AUTOGENERATED_DO_NOT_EDIT\nexport const KNOWN_CHECKSUMS: {[key: string]: string} = {\n", + ); + let firstLine = true; for (const downloadUrl of downloadUrls) { - const content = await downloadAssetContent(downloadUrl) - const checksum = content.split(' ')[0].trim() - const key = getKey(downloadUrl) + const content = await downloadAssetContent(downloadUrl); + const checksum = content.split(" ")[0].trim(); + const key = getKey(downloadUrl); if (!firstLine) { - await fs.appendFile(filePath, ',\n') + await fs.appendFile(filePath, ",\n"); } - await fs.appendFile(filePath, ` '${key}':\n '${checksum}'`) - firstLine = false + await fs.appendFile(filePath, ` '${key}':\n '${checksum}'`); + firstLine = false; } - await fs.appendFile(filePath, '}\n') + await fs.appendFile(filePath, "}\n"); } function getKey(downloadUrl: string): string { // https://github.com/astral-sh/uv/releases/download/0.3.2/uv-aarch64-apple-darwin.tar.gz.sha256 - const parts = downloadUrl.split('/') - const fileName = parts[parts.length - 1] - const name = fileName.split('.')[0].split('uv-')[1] - const version = parts[parts.length - 2] - return `${name}-${version}` + const parts = downloadUrl.split("/"); + const fileName = parts[parts.length - 1]; + const name = fileName.split(".")[0].split("uv-")[1]; + const version = parts[parts.length - 2]; + return `${name}-${version}`; } async function downloadAssetContent(downloadUrl: string): Promise { - const downloadPath = await tc.downloadTool(downloadUrl) - const content = await fs.readFile(downloadPath, 'utf8') - return content + const downloadPath = await tc.downloadTool(downloadUrl); + const content = await fs.readFile(downloadPath, "utf8"); + return content; } diff --git a/src/download/download-latest.ts b/src/download/download-latest.ts index 3dcad7a..43787ee 100644 --- a/src/download/download-latest.ts +++ b/src/download/download-latest.ts @@ -1,47 +1,52 @@ -import * as core from '@actions/core' -import * as tc from '@actions/tool-cache' -import * as exec from '@actions/exec' -import * as path from 'path' -import {Architecture, Platform} from '../utils/platforms' -import {validateChecksum} from './checksum/checksum' -import {OWNER, REPO, TOOL_CACHE_NAME} from '../utils/utils' +import * as core from "@actions/core"; +import * as tc from "@actions/tool-cache"; +import * as exec from "@actions/exec"; +import * as path from "path"; +import { Architecture, Platform } from "../utils/platforms"; +import { validateChecksum } from "./checksum/checksum"; +import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/utils"; export async function downloadLatest( platform: Platform, arch: Architecture, checkSum: string | undefined, - githubToken: string | undefined -): Promise<{cachedToolDir: string; version: string}> { - const artifact = `uv-${arch}-${platform}` - let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/latest/download/${artifact}` - if (platform === 'pc-windows-msvc') { - downloadUrl += '.zip' + githubToken: string | undefined, +): Promise<{ cachedToolDir: string; version: string }> { + const artifact = `uv-${arch}-${platform}`; + let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/latest/download/${artifact}`; + if (platform === "pc-windows-msvc") { + downloadUrl += ".zip"; } else { - downloadUrl += '.tar.gz' + downloadUrl += ".tar.gz"; } - core.info(`Downloading uv from "${downloadUrl}" ...`) + core.info(`Downloading uv from "${downloadUrl}" ...`); const downloadPath = await tc.downloadTool( downloadUrl, undefined, - githubToken - ) - let uvExecutablePath: string - let uvDir: string - if (platform === 'pc-windows-msvc') { - uvDir = await tc.extractZip(downloadPath) + githubToken, + ); + let uvExecutablePath: string; + let uvDir: string; + if (platform === "pc-windows-msvc") { + uvDir = await tc.extractZip(downloadPath); // On windows extracting the zip does not create an intermediate directory - uvExecutablePath = path.join(uvDir, 'uv.exe') + uvExecutablePath = path.join(uvDir, "uv.exe"); } else { - const extractedDir = await tc.extractTar(downloadPath) - uvDir = path.join(extractedDir, artifact) - uvExecutablePath = path.join(uvDir, 'uv') + const extractedDir = await tc.extractTar(downloadPath); + uvDir = path.join(extractedDir, artifact); + uvExecutablePath = path.join(uvDir, "uv"); } - const version = await getVersion(uvExecutablePath) - await validateChecksum(checkSum, downloadPath, arch, platform, version) - const cachedToolDir = await tc.cacheDir(uvDir, TOOL_CACHE_NAME, version, arch) + const version = await getVersion(uvExecutablePath); + await validateChecksum(checkSum, downloadPath, arch, platform, version); + const cachedToolDir = await tc.cacheDir( + uvDir, + TOOL_CACHE_NAME, + version, + arch, + ); - return {cachedToolDir, version} + return { cachedToolDir, version }; } async function getVersion(uvExecutablePath: string): Promise { @@ -50,17 +55,17 @@ async function getVersion(uvExecutablePath: string): Promise { // uv 0.3.1 (be17d132a 2024-08-21) const options: exec.ExecOptions = { - silent: !core.isDebug() - } - const execArgs = ['--version'] + silent: !core.isDebug(), + }; + const execArgs = ["--version"]; - let output = '' + let output = ""; options.listeners = { stdout: (data: Buffer) => { - output += data.toString() - } - } - await exec.exec(uvExecutablePath, execArgs, options) - const parts = output.split(' ') - return parts[1] + output += data.toString(); + }, + }; + await exec.exec(uvExecutablePath, execArgs, options); + const parts = output.split(" "); + return parts[1]; } diff --git a/src/download/download-version.ts b/src/download/download-version.ts index 33eb09c..977934c 100644 --- a/src/download/download-version.ts +++ b/src/download/download-version.ts @@ -1,18 +1,18 @@ -import * as core from '@actions/core' -import * as tc from '@actions/tool-cache' -import * as path from 'path' -import {OWNER, REPO, TOOL_CACHE_NAME} from '../utils/utils' -import {Architecture, Platform} from '../utils/platforms' -import {validateChecksum} from './checksum/checksum' +import * as core from "@actions/core"; +import * as tc from "@actions/tool-cache"; +import * as path from "path"; +import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/utils"; +import { Architecture, Platform } from "../utils/platforms"; +import { validateChecksum } from "./checksum/checksum"; export function tryGetFromToolCache( arch: Architecture, - version: string + version: string, ): string | undefined { - core.debug(`Trying to get uv from tool cache for ${version}...`) - const cachedVersions = tc.findAllVersions(TOOL_CACHE_NAME, arch) - core.debug(`Cached versions: ${cachedVersions}`) - return tc.find(TOOL_CACHE_NAME, version, arch) + core.debug(`Trying to get uv from tool cache for ${version}...`); + const cachedVersions = tc.findAllVersions(TOOL_CACHE_NAME, arch); + core.debug(`Cached versions: ${cachedVersions}`); + return tc.find(TOOL_CACHE_NAME, version, arch); } export async function downloadVersion( @@ -20,32 +20,32 @@ export async function downloadVersion( arch: Architecture, version: string, checkSum: string | undefined, - githubToken: string | undefined + githubToken: string | undefined, ): Promise { - const artifact = `uv-${arch}-${platform}` - let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${version}/${artifact}` - if (platform === 'pc-windows-msvc') { - downloadUrl += '.zip' + const artifact = `uv-${arch}-${platform}`; + let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${version}/${artifact}`; + if (platform === "pc-windows-msvc") { + downloadUrl += ".zip"; } else { - downloadUrl += '.tar.gz' + downloadUrl += ".tar.gz"; } - core.info(`Downloading uv from "${downloadUrl}" ...`) + core.info(`Downloading uv from "${downloadUrl}" ...`); const downloadPath = await tc.downloadTool( downloadUrl, undefined, - githubToken - ) - await validateChecksum(checkSum, downloadPath, arch, platform, version) + githubToken, + ); + await validateChecksum(checkSum, downloadPath, arch, platform, version); - let uvDir: string - if (platform === 'pc-windows-msvc') { - uvDir = await tc.extractZip(downloadPath) + let uvDir: string; + if (platform === "pc-windows-msvc") { + uvDir = await tc.extractZip(downloadPath); // On windows extracting the zip does not create an intermediate directory } else { - const extractedDir = await tc.extractTar(downloadPath) - uvDir = path.join(extractedDir, artifact) + const extractedDir = await tc.extractTar(downloadPath); + uvDir = path.join(extractedDir, artifact); } - return await tc.cacheDir(uvDir, TOOL_CACHE_NAME, version, arch) + return await tc.cacheDir(uvDir, TOOL_CACHE_NAME, version, arch); } diff --git a/src/save-cache.ts b/src/save-cache.ts index 0a5e980..64ff536 100644 --- a/src/save-cache.ts +++ b/src/save-cache.ts @@ -1,49 +1,52 @@ -import * as cache from '@actions/cache' -import * as core from '@actions/core' -import * as exec from '@actions/exec' -import {STATE_CACHE_MATCHED_KEY, STATE_CACHE_KEY} from './cache/restore-cache' -import {cacheLocalPath, enableCache} from './utils/inputs' +import * as cache from "@actions/cache"; +import * as core from "@actions/core"; +import * as exec from "@actions/exec"; +import { + STATE_CACHE_MATCHED_KEY, + STATE_CACHE_KEY, +} from "./cache/restore-cache"; +import { cacheLocalPath, enableCache } from "./utils/inputs"; export async function run(): Promise { try { if (enableCache) { - await saveCache() + await saveCache(); } } catch (error) { - const err = error as Error - core.setFailed(err.message) + const err = error as Error; + core.setFailed(err.message); } - process.exit(0) + process.exit(0); } async function saveCache(): Promise { - const cacheKey = core.getState(STATE_CACHE_KEY) - const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY) + const cacheKey = core.getState(STATE_CACHE_KEY); + const matchedKey = core.getState(STATE_CACHE_MATCHED_KEY); if (!cacheKey) { - core.warning('Error retrieving cache key from state.') - return + core.warning("Error retrieving cache key from state."); + return; } else if (matchedKey === cacheKey) { - core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`) - return + core.info(`Cache hit occurred on key ${cacheKey}, not saving cache.`); + return; } - await pruneCache() + await pruneCache(); - core.info(`Saving cache path: ${cacheLocalPath}`) - await cache.saveCache([cacheLocalPath], cacheKey) + core.info(`Saving cache path: ${cacheLocalPath}`); + await cache.saveCache([cacheLocalPath], cacheKey); - core.info(`cache saved with the key: ${cacheKey}`) + core.info(`cache saved with the key: ${cacheKey}`); } async function pruneCache(): Promise { const options: exec.ExecOptions = { - silent: !core.isDebug() - } - const execArgs = ['cache', 'prune', '--ci'] + silent: !core.isDebug(), + }; + const execArgs = ["cache", "prune", "--ci"]; - core.info('Pruning cache...') - await exec.exec('uv', execArgs, options) + core.info("Pruning cache..."); + await exec.exec("uv", execArgs, options); } -run() +run(); diff --git a/src/setup-uv.ts b/src/setup-uv.ts index a986fc2..d899281 100644 --- a/src/setup-uv.ts +++ b/src/setup-uv.ts @@ -1,51 +1,59 @@ -import * as core from '@actions/core' -import * as path from 'path' -import {downloadVersion, tryGetFromToolCache} from './download/download-version' -import {restoreCache} from './cache/restore-cache' +import * as core from "@actions/core"; +import * as path from "path"; +import { + downloadVersion, + tryGetFromToolCache, +} from "./download/download-version"; +import { restoreCache } from "./cache/restore-cache"; -import {downloadLatest} from './download/download-latest' -import {Architecture, getArch, getPlatform, Platform} from './utils/platforms' +import { downloadLatest } from "./download/download-latest"; +import { + Architecture, + getArch, + getPlatform, + Platform, +} from "./utils/platforms"; import { cacheLocalPath, checkSum, enableCache, githubToken, - version -} from './utils/inputs' + version, +} from "./utils/inputs"; async function run(): Promise { - const platform = getPlatform() - const arch = getArch() + const platform = getPlatform(); + const arch = getArch(); try { if (platform === undefined) { - throw new Error(`Unsupported platform: ${process.platform}`) + throw new Error(`Unsupported platform: ${process.platform}`); } if (arch === undefined) { - throw new Error(`Unsupported architecture: ${process.arch}`) + throw new Error(`Unsupported architecture: ${process.arch}`); } const setupResult = await setupUv( platform, arch, version, checkSum, - githubToken - ) + githubToken, + ); - addUvToPath(setupResult.uvDir) - core.setOutput('uv-version', version) - core.info(`Successfully installed uv version ${version}`) + addUvToPath(setupResult.uvDir); + core.setOutput("uv-version", version); + core.info(`Successfully installed uv version ${version}`); - addMatchers() - setCacheDir(cacheLocalPath) + addMatchers(); + setCacheDir(cacheLocalPath); if (enableCache) { - await restoreCache(setupResult.version) + await restoreCache(setupResult.version); } } catch (err) { - core.setFailed((err as Error).message) + core.setFailed((err as Error).message); } - process.exit(0) + process.exit(0); } async function setupUv( @@ -53,47 +61,47 @@ async function setupUv( arch: Architecture, versionInput: string, checkSum: string | undefined, - githubToken: string | undefined -): Promise<{uvDir: string; version: string}> { - let installedPath: string | undefined - let cachedToolDir: string - let version: string - if (versionInput === 'latest') { - const result = await downloadLatest(platform, arch, checkSum, githubToken) - version = result.version - cachedToolDir = result.cachedToolDir + githubToken: string | undefined, +): Promise<{ uvDir: string; version: string }> { + let installedPath: string | undefined; + let cachedToolDir: string; + let version: string; + if (versionInput === "latest") { + const result = await downloadLatest(platform, arch, checkSum, githubToken); + version = result.version; + cachedToolDir = result.cachedToolDir; } else { - version = versionInput - installedPath = tryGetFromToolCache(arch, versionInput) + version = versionInput; + installedPath = tryGetFromToolCache(arch, versionInput); if (installedPath) { - core.info(`Found uv in tool-cache for ${versionInput}`) - return {uvDir: installedPath, version} + core.info(`Found uv in tool-cache for ${versionInput}`); + return { uvDir: installedPath, version }; } cachedToolDir = await downloadVersion( platform, arch, versionInput, checkSum, - githubToken - ) + githubToken, + ); } - return {uvDir: cachedToolDir, version} + return { uvDir: cachedToolDir, version }; } function addUvToPath(cachedPath: string): void { - core.addPath(cachedPath) - core.info(`Added ${cachedPath} to the path`) + core.addPath(cachedPath); + core.info(`Added ${cachedPath} to the path`); } function setCacheDir(cacheLocalPath: string): void { - core.exportVariable('UV_CACHE_DIR', cacheLocalPath) - core.info(`Set UV_CACHE_DIR to ${cacheLocalPath}`) + core.exportVariable("UV_CACHE_DIR", cacheLocalPath); + core.info(`Set UV_CACHE_DIR to ${cacheLocalPath}`); } function addMatchers(): void { - const matchersPath = path.join(__dirname, `..${path.sep}..`, '.github') - core.info(`##[add-matcher]${path.join(matchersPath, 'python.json')}`) + const matchersPath = path.join(__dirname, `..${path.sep}..`, ".github"); + core.info(`##[add-matcher]${path.join(matchersPath, "python.json")}`); } -run() +run(); diff --git a/src/update-default-version.ts b/src/update-default-version.ts index c0c9c4d..f9addff 100644 --- a/src/update-default-version.ts +++ b/src/update-default-version.ts @@ -1,65 +1,65 @@ -import * as github from '@actions/github' -import * as core from '@actions/core' +import * as github from "@actions/github"; +import * as core from "@actions/core"; -import {OWNER, REPO} from './utils/utils' -import {createReadStream, promises as fs} from 'fs' -import * as readline from 'readline' -import * as semver from 'semver' +import { OWNER, REPO } from "./utils/utils"; +import { createReadStream, promises as fs } from "fs"; +import * as readline from "readline"; +import * as semver from "semver"; -import {updateChecksums} from './download/checksum/update-known-checksums' +import { updateChecksums } from "./download/checksum/update-known-checksums"; async function run(): Promise { - const checksumFilePath = process.argv.slice(2)[0] - const defaultVersionFilePath = process.argv.slice(2)[1] - const github_token = process.argv.slice(2)[2] + const checksumFilePath = process.argv.slice(2)[0]; + const defaultVersionFilePath = process.argv.slice(2)[1]; + const github_token = process.argv.slice(2)[2]; - const octokit = github.getOctokit(github_token) + const octokit = github.getOctokit(github_token); const response = await octokit.paginate(octokit.rest.repos.listReleases, { owner: OWNER, - repo: REPO - }) - const downloadUrls: string[] = response.flatMap(release => + repo: REPO, + }); + const downloadUrls: string[] = response.flatMap((release) => release.assets - .filter(asset => asset.name.endsWith('.sha256')) - .map(asset => asset.browser_download_url) - ) - await updateChecksums(checksumFilePath, downloadUrls) + .filter((asset) => asset.name.endsWith(".sha256")) + .map((asset) => asset.browser_download_url), + ); + await updateChecksums(checksumFilePath, downloadUrls); const latestVersion = response - .map(release => release.tag_name) - .sort(semver.rcompare)[0] - core.setOutput('latest-version', latestVersion) - await updateDefaultVersion(defaultVersionFilePath, latestVersion) + .map((release) => release.tag_name) + .sort(semver.rcompare)[0]; + core.setOutput("latest-version", latestVersion); + await updateDefaultVersion(defaultVersionFilePath, latestVersion); } async function updateDefaultVersion( filePath: string, - latestVersion: string + latestVersion: string, ): Promise { - const fileStream = createReadStream(filePath) + const fileStream = createReadStream(filePath); const rl = readline.createInterface({ - input: fileStream - }) + input: fileStream, + }); - let foundDescription = false - const lines = [] + let foundDescription = false; + const lines = []; for await (let line of rl) { if ( !foundDescription && line.includes("description: 'The version of uv to install'") ) { - foundDescription = true - } else if (foundDescription && line.includes('default: ')) { - line = line.replace(/'[^']*'/, `'${latestVersion}'`) - foundDescription = false + foundDescription = true; + } else if (foundDescription && line.includes("default: ")) { + line = line.replace(/'[^']*'/, `'${latestVersion}'`); + foundDescription = false; } - lines.push(line) + lines.push(line); } - await fs.writeFile(filePath, lines.join('\n')) + await fs.writeFile(filePath, lines.join("\n")); } -run() +run(); diff --git a/src/utils/inputs.ts b/src/utils/inputs.ts index b5ecc24..dd582a7 100644 --- a/src/utils/inputs.ts +++ b/src/utils/inputs.ts @@ -1,9 +1,9 @@ -import * as core from '@actions/core' +import * as core from "@actions/core"; -export const version = core.getInput('version') -export const checkSum = core.getInput('checksum') -export const enableCache = core.getInput('enable-cache') === 'true' -export const cacheSuffix = core.getInput('cache-suffix') || '' -export const cacheLocalPath = core.getInput('cache-local-path') -export const githubToken = core.getInput('github-token') -export const cacheDependencyGlob = core.getInput('cache-dependency-glob') +export const version = core.getInput("version"); +export const checkSum = core.getInput("checksum"); +export const enableCache = core.getInput("enable-cache") === "true"; +export const cacheSuffix = core.getInput("cache-suffix") || ""; +export const cacheLocalPath = core.getInput("cache-local-path"); +export const githubToken = core.getInput("github-token"); +export const cacheDependencyGlob = core.getInput("cache-dependency-glob"); diff --git a/src/utils/platforms.ts b/src/utils/platforms.ts index f9e88ad..d9aeebe 100644 --- a/src/utils/platforms.ts +++ b/src/utils/platforms.ts @@ -1,33 +1,33 @@ export type Platform = - | 'unknown-linux-gnu' - | 'unknown-linux-musl' - | 'unknown-linux-musleabihf' - | 'apple-darwin' - | 'pc-windows-msvc' -export type Architecture = 'i686' | 'x86_64' | 'aarch64' + | "unknown-linux-gnu" + | "unknown-linux-musl" + | "unknown-linux-musleabihf" + | "apple-darwin" + | "pc-windows-msvc"; +export type Architecture = "i686" | "x86_64" | "aarch64"; export function getArch(): Architecture | undefined { - const arch = process.arch - const archMapping: {[key: string]: Architecture} = { - ia32: 'i686', - x64: 'x86_64', - arm64: 'aarch64' - } + const arch = process.arch; + const archMapping: { [key: string]: Architecture } = { + ia32: "i686", + x64: "x86_64", + arm64: "aarch64", + }; if (arch in archMapping) { - return archMapping[arch] + return archMapping[arch]; } } export function getPlatform(): Platform | undefined { - const platform = process.platform - const platformMapping: {[key: string]: Platform} = { - linux: 'unknown-linux-gnu', - darwin: 'apple-darwin', - win32: 'pc-windows-msvc' - } + const platform = process.platform; + const platformMapping: { [key: string]: Platform } = { + linux: "unknown-linux-gnu", + darwin: "apple-darwin", + win32: "pc-windows-msvc", + }; if (platform in platformMapping) { - return platformMapping[platform] + return platformMapping[platform]; } } diff --git a/src/utils/utils.ts b/src/utils/utils.ts index fa540c2..987ae8a 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -1,3 +1,3 @@ -export const REPO = 'uv' -export const OWNER = 'astral-sh' -export const TOOL_CACHE_NAME = 'uv' +export const REPO = "uv"; +export const OWNER = "astral-sh"; +export const TOOL_CACHE_NAME = "uv"; From 1f78a33fdbef9c9df60a3dc8abd63327cc3b333f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:24:04 -0400 Subject: [PATCH 18/23] Bump @types/node from 22.5.3 to 22.5.4 (#44) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a66155..efaba4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@octokit/rest": "^21.0.2" }, "devDependencies": { - "@types/node": "^22.5.3", + "@types/node": "^22.5.4", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.18.0", @@ -2099,9 +2099,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", "dependencies": { "undici-types": "~6.19.2" } @@ -9567,9 +9567,9 @@ "dev": true }, "@types/node": { - "version": "22.5.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", - "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", + "version": "22.5.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", "requires": { "undici-types": "~6.19.2" } diff --git a/package.json b/package.json index 944f7e3..89a0b51 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@octokit/rest": "^21.0.2" }, "devDependencies": { - "@types/node": "^22.5.3", + "@types/node": "^22.5.4", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^7.15.0", "@typescript-eslint/parser": "^7.18.0", From bd99ba67dcfee6c3164c643cc8f3fe3f597ca607 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:24:12 -0400 Subject: [PATCH 19/23] Bump eslint-plugin-jest from 28.8.2 to 28.8.3 (#43) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index efaba4e..1ed2af4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.30.0", - "eslint-plugin-jest": "^28.8.2", + "eslint-plugin-jest": "^28.8.3", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", "js-yaml": "^4.1.0", @@ -3919,9 +3919,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.2.tgz", - "integrity": "sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==", + "version": "28.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", + "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -10964,9 +10964,9 @@ } }, "eslint-plugin-jest": { - "version": "28.8.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.2.tgz", - "integrity": "sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==", + "version": "28.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", + "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", "dev": true, "requires": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" diff --git a/package.json b/package.json index 89a0b51..1507c2e 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "eslint": "^8.57.0", "eslint-plugin-github": "^5.0.1", "eslint-plugin-import": "^2.30.0", - "eslint-plugin-jest": "^28.8.2", + "eslint-plugin-jest": "^28.8.3", "eslint-plugin-prettier": "^5.2.1", "jest": "^29.7.0", "js-yaml": "^4.1.0", From a6cb892a364df5173cda51e6c237427d0a7c2212 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:24:18 -0400 Subject: [PATCH 20/23] Bump peter-evans/create-pull-request from 7.0.0 to 7.0.1 (#42) --- .github/workflows/update-default-version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml index 5c0709f..f59ab89 100644 --- a/.github/workflows/update-default-version.yml +++ b/.github/workflows/update-default-version.yml @@ -18,7 +18,7 @@ jobs: secrets.GITHUB_TOKEN }} - run: npm install && npm run all - name: Create Pull Request - uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 + uses: peter-evans/create-pull-request@8867c4aba1b742c39f8d0ba35429c2dfa4b6cb20 # v7.0.1 with: commit-message: "chore: update checksums" title: From bfebbf80cba1823e8a2740921f28c024d9217737 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 5 Sep 2024 09:24:32 -0400 Subject: [PATCH 21/23] Change default to `"latest"` (#37) ## Summary Also did some light editing of the README. --- README.md | 86 +++++++++++++++++++++++++----------------------------- action.yml | 2 +- 2 files changed, 40 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 35304c5..f3be5ea 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs.astral.sh/uv/). -- Install a version of uv and add it to the path +- Install a version of uv and add it to PATH - Cache the installed version of uv to speed up consecutive runs on self-hosted runners - Register problem matchers for error output -- Optional: Cache the uv cache -- Optional: Verify the checksum of the downloaded uv executable +- (Optional) Persist the uv's cache in the GitHub Actions Cache +- (Optional) Verify the checksum of the downloaded uv executable ## Contents @@ -26,35 +26,28 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs Example workflow in a real world project can be found [here](https://github.com/eifinger/hass-weenect/blob/main/.github/workflows/ci.yml) -### Install specific version - -You can also specify a specific version of uv +### Install the latest version (default) ```yaml -- name: Install a specific version - uses: astral-sh/setup-uv@v1 - with: - version: "0.4.4" -``` - -### Install latest version - -By default this action installs the version defined as `default` in `action.yml`. This gets -automatically updated in a new release of this action when a new version of uv is released. If you -don't want to wait for a new release of this action you can use `version: latest`. - -> [!WARNING] -> Using the `latest` version means that the uv executable gets downloaded every single time instead -> of loaded from the tools cache. This can take up to 20s depending on the download speed. This does -> not affect the uv cache. - -```yaml -- name: Install a specific version +- name: Install the latest version of uv uses: astral-sh/setup-uv@v1 with: version: "latest" ``` +> [!TIP] Using `latest` requires that uv download the executable on every run, which incurs a cost +> (especially on self-hosted runners). As an alternative, consider pinning the version to a specific +> release. + +### Install a specific version + +```yaml +- name: Install a specific version of uv + uses: astral-sh/setup-uv@v1 + with: + version: "0.4.4" +``` + ### Validate checksum You can also specify a checksum to validate the downloaded file. Checksums up to the default version @@ -71,9 +64,9 @@ are automatically verified by this action. The sha265 hashes can be found on the ### Enable caching -If you enable caching the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be cached to -the GitHub Actions Cache. This can speed up runs which can reuse the cache by several minutes. The -cache will always be reused on self-hosted runners. +If you enable caching, the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be cached to +the GitHub Actions Cache. This can speed up runs that reuse the cache by several minutes. The cache +will always be reused on self-hosted runners. You can optionally define a custom cache key suffix. @@ -86,8 +79,8 @@ You can optionally define a custom cache key suffix. cache-suffix: "optional-suffix" ``` -When the cache was successfully restored the output `cache-hit` will be set to `true` and you can -use it in subsequent steps. For the example above you can use it like this: +When the cache was successfully restored, the output `cache-hit` will be set to `true` and you can +use it in subsequent steps. For example, to use the cache in the above case: ```yaml - name: Do something if the cache was restored @@ -97,8 +90,8 @@ use it in subsequent steps. For the example above you can use it like this: #### Local cache path -If you want to save the cache to a local path other than the default path (`/tmp/setup-uv-cache`) -you can specify the path with the `cache-local-path` input. +If you want to save the cache to a local path other than the default path (`/tmp/setup-uv-cache`), +specify the path with the `cache-local-path` input. ```yaml - name: Define a custom uv cache path @@ -110,7 +103,7 @@ you can specify the path with the `cache-local-path` input. #### Cache dependency glob -If you want to control when the cache is invalidated you can specify a glob pattern with the +If you want to control when the cache is invalidated, specify a glob pattern with the `cache-dependency-glob` input. The cache will be invalidated if any file matching the glob pattern changes. The glob matches files relative to the repository root. @@ -132,8 +125,8 @@ changes. The glob matches files relative to the repository root. ### API rate limit -To avoid hitting the error `API rate limit exceeded` you can supply a GitHub token with the -`github-token` input. +To avoid hitting the error `API rate limit exceeded`, supply a GitHub token with the `github-token` +input. ```yaml - name: Install uv and supply a GitHub token @@ -144,12 +137,13 @@ To avoid hitting the error `API rate limit exceeded` you can supply a GitHub tok ## How it works -This action downloads uv from the releases of the [uv repo](https://github.com/astral-sh/uv) and -uses the [GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed -up consecutive runs on self-hosted runners. +This action downloads uv from the uv repo's official +[GitHub Releases](https://github.com/astral-sh/uv) and uses the +[GitHub Actions Toolkit](https://github.com/actions/toolkit) to cache it as a tool to speed up +consecutive runs on self-hosted runners. -The installed version of uv is then added to the runner path so other steps can just use it by -calling `uv`. +The installed version of uv is then added to the runner PATH, enabling subsequent steps to invoke it +by name (`uv`). ## FAQ @@ -157,7 +151,7 @@ calling `uv`. No! This action was modelled as a drop-in replacement for `actions/setup-python` when using uv. -A simple example workflow could look like this: +For example: ```yaml - name: Checkout the repository @@ -170,7 +164,7 @@ A simple example workflow could look like this: run: uv run --frozen pytest ``` -If you want to have a specific python version installed you can use the command +To install a specific version of Python, use [`uv python install`](https://docs.astral.sh/uv/guides/install-python/): ```yaml @@ -184,12 +178,10 @@ If you want to have a specific python version installed you can use the command ### What is the default version? -By default, this action installs the version defined as `default` in `action.yml`. When a new -release of uv is published this triggers an automatic release of this action with the new version as -`default`. +By default, this action installs the latest version of uv. -If you have to know the version installed for other steps of your workflow you can use the -`uv-version` output: +If you require the installed version in subsequent steps of your workflow, use the `uv-version` +output: ```yaml - name: Checkout the repository diff --git a/action.yml b/action.yml index 719dee6..bf24164 100644 --- a/action.yml +++ b/action.yml @@ -4,7 +4,7 @@ author: "eifinger" inputs: version: description: "The version of uv to install" - default: "0.4.4" + default: "latest" checksum: description: "The checksum of the uv version to install" required: false From b3cf8231d56ef60a1c46c50eeadc14e6ea6c7a81 Mon Sep 17 00:00:00 2001 From: Kevin Stillhammer Date: Thu, 5 Sep 2024 15:26:17 +0200 Subject: [PATCH 22/23] Do not change default version on known checksum update (#39) --- .github/release-drafter.yml | 2 +- .github/workflows/update-default-version.yml | 33 - .github/workflows/update-known-checksums.yml | 32 + .../{checkstum.test.ts => checksum.test.ts} | 0 dist/update-known-checksums/index.js | 34737 ++++++++++++++++ package.json | 4 +- src/update-default-version.ts | 65 - src/update-known-checksums.ts | 32 + 8 files changed, 34804 insertions(+), 101 deletions(-) delete mode 100644 .github/workflows/update-default-version.yml create mode 100644 .github/workflows/update-known-checksums.yml rename __tests__/download/checksum/{checkstum.test.ts => checksum.test.ts} (100%) create mode 100644 dist/update-known-checksums/index.js delete mode 100644 src/update-default-version.ts create mode 100644 src/update-known-checksums.ts diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 8cf4416..27d9c22 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -19,7 +19,7 @@ categories: labels: - "maintenance" - "ci" - - "default-version-update" + - "update-known-checksums" - title: "📚 Documentation" labels: - "documentation" diff --git a/.github/workflows/update-default-version.yml b/.github/workflows/update-default-version.yml deleted file mode 100644 index f59ab89..0000000 --- a/.github/workflows/update-default-version.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: "Update default version and checksums" -on: - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: "20" - - name: Update default version and checksums - id: update-default-version - run: - node dist/update-default-version/index.js - src/download/checksum/known-checksums.ts action.yml ${{ - secrets.GITHUB_TOKEN }} - - run: npm install && npm run all - - name: Create Pull Request - uses: peter-evans/create-pull-request@8867c4aba1b742c39f8d0ba35429c2dfa4b6cb20 # v7.0.1 - with: - commit-message: "chore: update checksums" - title: - "chore: update default version to ${{ - steps.update-default-version.outputs.latest-version }}" - body: - "chore: update default version to ${{ - steps.update-default-version.outputs.latest-version }}" - base: main - labels: "automated-pr,default-version-update" - branch: update-default-version-pr - delete-branch: true diff --git a/.github/workflows/update-known-checksums.yml b/.github/workflows/update-known-checksums.yml new file mode 100644 index 0000000..85895b9 --- /dev/null +++ b/.github/workflows/update-known-checksums.yml @@ -0,0 +1,32 @@ +name: "Update known checksums" +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "20" + - name: Update known checksums + id: update-known-checksums + run: + node dist/update-known-checksums/index.js + src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }} + - run: npm install && npm run all + - name: Create Pull Request + uses: peter-evans/create-pull-request@4320041ed380b20e97d388d56a7fb4f9b8c20e79 # v7.0.0 + with: + commit-message: "chore: update known checksums" + title: + "chore: update known checksums for ${{ + steps.update-known-checksums.outputs.latest-version }}" + body: + "chore: update known checksums for ${{ + steps.update-known-checksums.outputs.latest-version }}" + base: main + labels: "automated-pr,update-known-checksums" + branch: update-known-checksums-pr + delete-branch: true diff --git a/__tests__/download/checksum/checkstum.test.ts b/__tests__/download/checksum/checksum.test.ts similarity index 100% rename from __tests__/download/checksum/checkstum.test.ts rename to __tests__/download/checksum/checksum.test.ts diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js new file mode 100644 index 0000000..5a4686d --- /dev/null +++ b/dist/update-known-checksums/index.js @@ -0,0 +1,34737 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 7351: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(2037)); +const utils_1 = __nccwpck_require__(5278); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +function escapeData(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 2186: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(7351); +const file_command_1 = __nccwpck_require__(717); +const utils_1 = __nccwpck_require__(5278); +const os = __importStar(__nccwpck_require__(2037)); +const path = __importStar(__nccwpck_require__(1017)); +const oidc_utils_1 = __nccwpck_require__(8041); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); + } + command_1.issueCommand('set-env', { name }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueFileCommand('PATH', inputPath); + } + else { + command_1.issueCommand('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); + } + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); + } + command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __nccwpck_require__(1327); +Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); +/** + * @deprecated use core.summary + */ +var summary_2 = __nccwpck_require__(1327); +Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); +/** + * Path exports + */ +var path_utils_1 = __nccwpck_require__(2981); +Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); +Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); +Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 717: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const fs = __importStar(__nccwpck_require__(7147)); +const os = __importStar(__nccwpck_require__(2037)); +const uuid_1 = __nccwpck_require__(8974); +const utils_1 = __nccwpck_require__(5278); +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + const convertedValue = utils_1.toCommandValue(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 8041: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OidcClient = void 0; +const http_client_1 = __nccwpck_require__(6255); +const auth_1 = __nccwpck_require__(5526); +const core_1 = __nccwpck_require__(2186); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 2981: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(1017)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 1327: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(2037); +const fs_1 = __nccwpck_require__(7147); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + +/***/ 5278: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 8974: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +Object.defineProperty(exports, "v1", ({ + enumerable: true, + get: function () { + return _v.default; + } +})); +Object.defineProperty(exports, "v3", ({ + enumerable: true, + get: function () { + return _v2.default; + } +})); +Object.defineProperty(exports, "v4", ({ + enumerable: true, + get: function () { + return _v3.default; + } +})); +Object.defineProperty(exports, "v5", ({ + enumerable: true, + get: function () { + return _v4.default; + } +})); +Object.defineProperty(exports, "NIL", ({ + enumerable: true, + get: function () { + return _nil.default; + } +})); +Object.defineProperty(exports, "version", ({ + enumerable: true, + get: function () { + return _version.default; + } +})); +Object.defineProperty(exports, "validate", ({ + enumerable: true, + get: function () { + return _validate.default; + } +})); +Object.defineProperty(exports, "stringify", ({ + enumerable: true, + get: function () { + return _stringify.default; + } +})); +Object.defineProperty(exports, "parse", ({ + enumerable: true, + get: function () { + return _parse.default; + } +})); + +var _v = _interopRequireDefault(__nccwpck_require__(1595)); + +var _v2 = _interopRequireDefault(__nccwpck_require__(6993)); + +var _v3 = _interopRequireDefault(__nccwpck_require__(101)); + +var _v4 = _interopRequireDefault(__nccwpck_require__(6217)); + +var _nil = _interopRequireDefault(__nccwpck_require__(2381)); + +var _version = _interopRequireDefault(__nccwpck_require__(427)); + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), + +/***/ 5842: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('md5').update(bytes).digest(); +} + +var _default = md5; +exports["default"] = _default; + +/***/ }), + +/***/ 2381: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports["default"] = _default; + +/***/ }), + +/***/ 6385: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +var _default = parse; +exports["default"] = _default; + +/***/ }), + +/***/ 6230: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +exports["default"] = _default; + +/***/ }), + +/***/ 9784: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = rng; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} + +/***/ }), + +/***/ 8844: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return _crypto.default.createHash('sha1').update(bytes).digest(); +} + +var _default = sha1; +exports["default"] = _default; + +/***/ }), + +/***/ 1458: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +var _default = stringify; +exports["default"] = _default; + +/***/ }), + +/***/ 1595: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || (0, _stringify.default)(b); +} + +var _default = v1; +exports["default"] = _default; + +/***/ }), + +/***/ 6993: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(5920)); + +var _md = _interopRequireDefault(__nccwpck_require__(5842)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports["default"] = _default; + +/***/ }), + +/***/ 5920: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = _default; +exports.URL = exports.DNS = void 0; + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; + +function _default(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = (0, _parse.default)(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} + +/***/ }), + +/***/ 101: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _rng = _interopRequireDefault(__nccwpck_require__(9784)); + +var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function v4(options, buf, offset) { + options = options || {}; + + const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return (0, _stringify.default)(rnds); +} + +var _default = v4; +exports["default"] = _default; + +/***/ }), + +/***/ 6217: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _v = _interopRequireDefault(__nccwpck_require__(5920)); + +var _sha = _interopRequireDefault(__nccwpck_require__(8844)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; +exports["default"] = _default; + +/***/ }), + +/***/ 2609: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _regex = _interopRequireDefault(__nccwpck_require__(6230)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); +} + +var _default = validate; +exports["default"] = _default; + +/***/ }), + +/***/ 427: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; + +var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +var _default = version; +exports["default"] = _default; + +/***/ }), + +/***/ 1514: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(1576); +const tr = __importStar(__nccwpck_require__(8159)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 8159: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.argStringToArray = exports.ToolRunner = void 0; +const os = __importStar(__nccwpck_require__(2037)); +const events = __importStar(__nccwpck_require__(2361)); +const child = __importStar(__nccwpck_require__(2081)); +const path = __importStar(__nccwpck_require__(1017)); +const io = __importStar(__nccwpck_require__(7436)); +const ioUtil = __importStar(__nccwpck_require__(1962)); +const timers_1 = __nccwpck_require__(9512); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + +/***/ 4087: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Context = void 0; +const fs_1 = __nccwpck_require__(7147); +const os_1 = __nccwpck_require__(2037); +class Context { + /** + * Hydrate the context from the environment + */ + constructor() { + var _a, _b, _c; + this.payload = {}; + if (process.env.GITHUB_EVENT_PATH) { + if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + } + else { + const path = process.env.GITHUB_EVENT_PATH; + process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`); + } + } + this.eventName = process.env.GITHUB_EVENT_NAME; + this.sha = process.env.GITHUB_SHA; + this.ref = process.env.GITHUB_REF; + this.workflow = process.env.GITHUB_WORKFLOW; + this.action = process.env.GITHUB_ACTION; + this.actor = process.env.GITHUB_ACTOR; + this.job = process.env.GITHUB_JOB; + this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10); + this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); + this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; + this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; + this.graphqlUrl = + (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; + } + get issue() { + const payload = this.payload; + return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number }); + } + get repo() { + if (process.env.GITHUB_REPOSITORY) { + const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/'); + return { owner, repo }; + } + if (this.payload.repository) { + return { + owner: this.payload.repository.owner.login, + repo: this.payload.repository.name + }; + } + throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'"); + } +} +exports.Context = Context; +//# sourceMappingURL=context.js.map + +/***/ }), + +/***/ 5438: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getOctokit = exports.context = void 0; +const Context = __importStar(__nccwpck_require__(4087)); +const utils_1 = __nccwpck_require__(3030); +exports.context = new Context.Context(); +/** + * Returns a hydrated octokit ready to use for GitHub Actions + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokit(token, options, ...additionalPlugins) { + const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); +} +exports.getOctokit = getOctokit; +//# sourceMappingURL=github.js.map + +/***/ }), + +/***/ 7914: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0; +const httpClient = __importStar(__nccwpck_require__(6255)); +const undici_1 = __nccwpck_require__(1773); +function getAuthString(token, options) { + if (!token && !options.auth) { + throw new Error('Parameter token or opts.auth is required'); + } + else if (token && options.auth) { + throw new Error('Parameters token and opts.auth may not both be specified'); + } + return typeof options.auth === 'string' ? options.auth : `token ${token}`; +} +exports.getAuthString = getAuthString; +function getProxyAgent(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgent(destinationUrl); +} +exports.getProxyAgent = getProxyAgent; +function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +exports.getProxyAgentDispatcher = getProxyAgentDispatcher; +function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () { + return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; +} +exports.getProxyFetch = getProxyFetch; +function getApiBaseUrl() { + return process.env['GITHUB_API_URL'] || 'https://api.github.com'; +} +exports.getApiBaseUrl = getApiBaseUrl; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 3030: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; +const Context = __importStar(__nccwpck_require__(4087)); +const Utils = __importStar(__nccwpck_require__(7914)); +// octokit + plugins +const core_1 = __nccwpck_require__(6762); +const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044); +const plugin_paginate_rest_1 = __nccwpck_require__(4193); +exports.context = new Context.Context(); +const baseUrl = Utils.getApiBaseUrl(); +exports.defaults = { + baseUrl, + request: { + agent: Utils.getProxyAgent(baseUrl), + fetch: Utils.getProxyFetch(baseUrl) + } +}; +exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); +/** + * Convience function to correctly format Octokit Options to pass into the constructor. + * + * @param token the repo PAT or GITHUB_TOKEN + * @param options other options to set + */ +function getOctokitOptions(token, options) { + const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller + // Auth + const auth = Utils.getAuthString(token, opts); + if (auth) { + opts.auth = auth; + } + return opts; +} +exports.getOctokitOptions = getOctokitOptions; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 5526: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 6255: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(3685)); +const https = __importStar(__nccwpck_require__(5687)); +const pm = __importStar(__nccwpck_require__(9835)); +const tunnel = __importStar(__nccwpck_require__(4294)); +const undici_1 = __nccwpck_require__(1773); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers || (exports.Headers = Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && { + token: `${proxyUrl.username}:${proxyUrl.password}` + }))); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 9835: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + try { + return new URL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new URL(`http://${proxyVar}`); + } + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 1962: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__nccwpck_require__(7147)); +const path = __importStar(__nccwpck_require__(1017)); +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' +exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map + +/***/ }), + +/***/ 7436: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __nccwpck_require__(9491); +const path = __importStar(__nccwpck_require__(1017)); +const ioUtil = __importStar(__nccwpck_require__(1962)); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + +/***/ 2473: +/***/ (function(module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0; +const semver = __importStar(__nccwpck_require__(5911)); +const core_1 = __nccwpck_require__(2186); +// needs to be require for core node modules to be mocked +/* eslint @typescript-eslint/no-require-imports: 0 */ +const os = __nccwpck_require__(2037); +const cp = __nccwpck_require__(2081); +const fs = __nccwpck_require__(7147); +function _findMatch(versionSpec, stable, candidates, archFilter) { + return __awaiter(this, void 0, void 0, function* () { + const platFilter = os.platform(); + let result; + let match; + let file; + for (const candidate of candidates) { + const version = candidate.version; + core_1.debug(`check ${version} satisfies ${versionSpec}`); + if (semver.satisfies(version, versionSpec) && + (!stable || candidate.stable === stable)) { + file = candidate.files.find(item => { + core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); + let chk = item.arch === archFilter && item.platform === platFilter; + if (chk && item.platform_version) { + const osVersion = module.exports._getOsVersion(); + if (osVersion === item.platform_version) { + chk = true; + } + else { + chk = semver.satisfies(osVersion, item.platform_version); + } + } + return chk; + }); + if (file) { + core_1.debug(`matched ${candidate.version}`); + match = candidate; + break; + } + } + } + if (match && file) { + // clone since we're mutating the file list to be only the file that matches + result = Object.assign({}, match); + result.files = [file]; + } + return result; + }); +} +exports._findMatch = _findMatch; +function _getOsVersion() { + // TODO: add windows and other linux, arm variants + // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python) + const plat = os.platform(); + let version = ''; + if (plat === 'darwin') { + version = cp.execSync('sw_vers -productVersion').toString(); + } + else if (plat === 'linux') { + // lsb_release process not in some containers, readfile + // Run cat /etc/lsb-release + // DISTRIB_ID=Ubuntu + // DISTRIB_RELEASE=18.04 + // DISTRIB_CODENAME=bionic + // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" + const lsbContents = module.exports._readLinuxVersionFile(); + if (lsbContents) { + const lines = lsbContents.split('\n'); + for (const line of lines) { + const parts = line.split('='); + if (parts.length === 2 && + (parts[0].trim() === 'VERSION_ID' || + parts[0].trim() === 'DISTRIB_RELEASE')) { + version = parts[1] + .trim() + .replace(/^"/, '') + .replace(/"$/, ''); + break; + } + } + } + } + return version; +} +exports._getOsVersion = _getOsVersion; +function _readLinuxVersionFile() { + const lsbReleaseFile = '/etc/lsb-release'; + const osReleaseFile = '/etc/os-release'; + let contents = ''; + if (fs.existsSync(lsbReleaseFile)) { + contents = fs.readFileSync(lsbReleaseFile).toString(); + } + else if (fs.existsSync(osReleaseFile)) { + contents = fs.readFileSync(osReleaseFile).toString(); + } + return contents; +} +exports._readLinuxVersionFile = _readLinuxVersionFile; +//# sourceMappingURL=manifest.js.map + +/***/ }), + +/***/ 8279: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RetryHelper = void 0; +const core = __importStar(__nccwpck_require__(2186)); +/** + * Internal class for retries + */ +class RetryHelper { + constructor(maxAttempts, minSeconds, maxSeconds) { + if (maxAttempts < 1) { + throw new Error('max attempts should be greater than or equal to 1'); + } + this.maxAttempts = maxAttempts; + this.minSeconds = Math.floor(minSeconds); + this.maxSeconds = Math.floor(maxSeconds); + if (this.minSeconds > this.maxSeconds) { + throw new Error('min seconds should be less than or equal to max seconds'); + } + } + execute(action, isRetryable) { + return __awaiter(this, void 0, void 0, function* () { + let attempt = 1; + while (attempt < this.maxAttempts) { + // Try + try { + return yield action(); + } + catch (err) { + if (isRetryable && !isRetryable(err)) { + throw err; + } + core.info(err.message); + } + // Sleep + const seconds = this.getSleepAmount(); + core.info(`Waiting ${seconds} seconds before trying again`); + yield this.sleep(seconds); + attempt++; + } + // Last attempt + return yield action(); + }); + } + getSleepAmount() { + return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) + + this.minSeconds); + } + sleep(seconds) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => setTimeout(resolve, seconds * 1000)); + }); + } +} +exports.RetryHelper = RetryHelper; +//# sourceMappingURL=retry-helper.js.map + +/***/ }), + +/***/ 7784: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0; +const core = __importStar(__nccwpck_require__(2186)); +const io = __importStar(__nccwpck_require__(7436)); +const fs = __importStar(__nccwpck_require__(7147)); +const mm = __importStar(__nccwpck_require__(2473)); +const os = __importStar(__nccwpck_require__(2037)); +const path = __importStar(__nccwpck_require__(1017)); +const httpm = __importStar(__nccwpck_require__(6255)); +const semver = __importStar(__nccwpck_require__(5911)); +const stream = __importStar(__nccwpck_require__(2781)); +const util = __importStar(__nccwpck_require__(3837)); +const assert_1 = __nccwpck_require__(9491); +const v4_1 = __importDefault(__nccwpck_require__(824)); +const exec_1 = __nccwpck_require__(1514); +const retry_helper_1 = __nccwpck_require__(8279); +class HTTPError extends Error { + constructor(httpStatusCode) { + super(`Unexpected HTTP response: ${httpStatusCode}`); + this.httpStatusCode = httpStatusCode; + Object.setPrototypeOf(this, new.target.prototype); + } +} +exports.HTTPError = HTTPError; +const IS_WINDOWS = process.platform === 'win32'; +const IS_MAC = process.platform === 'darwin'; +const userAgent = 'actions/tool-cache'; +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @param dest path to download tool + * @param auth authorization header + * @param headers other headers + * @returns path to downloaded tool + */ +function downloadTool(url, dest, auth, headers) { + return __awaiter(this, void 0, void 0, function* () { + dest = dest || path.join(_getTempDirectory(), v4_1.default()); + yield io.mkdirP(path.dirname(dest)); + core.debug(`Downloading ${url}`); + core.debug(`Destination ${dest}`); + const maxAttempts = 3; + const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10); + const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); + const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); + return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { + return yield downloadToolAttempt(url, dest || '', auth, headers); + }), (err) => { + if (err instanceof HTTPError && err.httpStatusCode) { + // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests + if (err.httpStatusCode < 500 && + err.httpStatusCode !== 408 && + err.httpStatusCode !== 429) { + return false; + } + } + // Otherwise retry + return true; + }); + }); +} +exports.downloadTool = downloadTool; +function downloadToolAttempt(url, dest, auth, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (fs.existsSync(dest)) { + throw new Error(`Destination file path ${dest} already exists`); + } + // Get the response headers + const http = new httpm.HttpClient(userAgent, [], { + allowRetries: false + }); + if (auth) { + core.debug('set auth'); + if (headers === undefined) { + headers = {}; + } + headers.authorization = auth; + } + const response = yield http.get(url, headers); + if (response.message.statusCode !== 200) { + const err = new HTTPError(response.message.statusCode); + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + throw err; + } + // Download the response body + const pipeline = util.promisify(stream.pipeline); + const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message); + const readStream = responseMessageFactory(); + let succeeded = false; + try { + yield pipeline(readStream, fs.createWriteStream(dest)); + core.debug('download complete'); + succeeded = true; + return dest; + } + finally { + // Error, delete dest before retry + if (!succeeded) { + core.debug('download failed'); + try { + yield io.rmRF(dest); + } + catch (err) { + core.debug(`Failed to delete '${dest}'. ${err.message}`); + } + } + } + }); +} +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +function extract7z(file, dest, _7zPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = yield _createExtractFolder(dest); + const originalCwd = process.cwd(); + process.chdir(dest); + if (_7zPath) { + try { + const logLevel = core.isDebug() ? '-bb1' : '-bb0'; + const args = [ + 'x', + logLevel, + '-bd', + '-sccUTF-8', + file + ]; + const options = { + silent: true + }; + yield exec_1.exec(`"${_7zPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + else { + const escapedScript = path + .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') + .replace(/'/g, "''") + .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + const options = { + silent: true + }; + try { + const powershellPath = yield io.which('powershell', true); + yield exec_1.exec(`"${powershellPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + return dest; + }); +} +exports.extract7z = extract7z; +/** + * Extract a compressed tar archive + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional. + * @returns path to the destination directory + */ +function extractTar(file, dest, flags = 'xz') { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + // Create dest + dest = yield _createExtractFolder(dest); + // Determine whether GNU tar + core.debug('Checking tar --version'); + let versionOutput = ''; + yield exec_1.exec('tar --version', [], { + ignoreReturnCode: true, + silent: true, + listeners: { + stdout: (data) => (versionOutput += data.toString()), + stderr: (data) => (versionOutput += data.toString()) + } + }); + core.debug(versionOutput.trim()); + const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); + // Initialize args + let args; + if (flags instanceof Array) { + args = flags; + } + else { + args = [flags]; + } + if (core.isDebug() && !flags.includes('v')) { + args.push('-v'); + } + let destArg = dest; + let fileArg = file; + if (IS_WINDOWS && isGnuTar) { + args.push('--force-local'); + destArg = dest.replace(/\\/g, '/'); + // Technically only the dest needs to have `/` but for aesthetic consistency + // convert slashes in the file arg too. + fileArg = file.replace(/\\/g, '/'); + } + if (isGnuTar) { + // Suppress warnings when using GNU tar to extract archives created by BSD tar + args.push('--warning=no-unknown-keyword'); + args.push('--overwrite'); + } + args.push('-C', destArg, '-f', fileArg); + yield exec_1.exec(`tar`, args); + return dest; + }); +} +exports.extractTar = extractTar; +/** + * Extract a xar compatible archive + * + * @param file path to the archive + * @param dest destination directory. Optional. + * @param flags flags for the xar. Optional. + * @returns path to the destination directory + */ +function extractXar(file, dest, flags = []) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_MAC, 'extractXar() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = yield _createExtractFolder(dest); + let args; + if (flags instanceof Array) { + args = flags; + } + else { + args = [flags]; + } + args.push('-x', '-C', dest, '-f', file); + if (core.isDebug()) { + args.push('-v'); + } + const xarPath = yield io.which('xar', true); + yield exec_1.exec(`"${xarPath}"`, _unique(args)); + return dest; + }); +} +exports.extractXar = extractXar; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +function extractZip(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = yield _createExtractFolder(dest); + if (IS_WINDOWS) { + yield extractZipWin(file, dest); + } + else { + yield extractZipNix(file, dest); + } + return dest; + }); +} +exports.extractZip = extractZip; +function extractZipWin(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + // build the powershell command + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const pwshPath = yield io.which('pwsh', false); + //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory + //and the -Force flag for Expand-Archive as a fallback + if (pwshPath) { + //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive + const pwshCommand = [ + `$ErrorActionPreference = 'Stop' ;`, + `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`, + `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`, + `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;` + ].join(' '); + const args = [ + '-NoLogo', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + pwshCommand + ]; + core.debug(`Using pwsh at path: ${pwshPath}`); + yield exec_1.exec(`"${pwshPath}"`, args); + } + else { + const powershellCommand = [ + `$ErrorActionPreference = 'Stop' ;`, + `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`, + `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`, + `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }` + ].join(' '); + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + powershellCommand + ]; + const powershellPath = yield io.which('powershell', true); + core.debug(`Using powershell at path: ${powershellPath}`); + yield exec_1.exec(`"${powershellPath}"`, args); + } + }); +} +function extractZipNix(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + const unzipPath = yield io.which('unzip', true); + const args = [file]; + if (!core.isDebug()) { + args.unshift('-q'); + } + args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run + yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); + }); +} +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheDir(sourceDir, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source dir: ${sourceDir}`); + if (!fs.statSync(sourceDir).isDirectory()) { + throw new Error('sourceDir is not a directory'); + } + // Create the tool dir + const destPath = yield _createToolPath(tool, version, arch); + // copy each child item. do not move. move can fail on Windows + // due to anti-virus software having an open handle on a file. + for (const itemName of fs.readdirSync(sourceDir)) { + const s = path.join(sourceDir, itemName); + yield io.cp(s, destPath, { recursive: true }); + } + // write .complete + _completeToolPath(tool, version, arch); + return destPath; + }); +} +exports.cacheDir = cacheDir; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheFile(sourceFile, targetFile, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source file: ${sourceFile}`); + if (!fs.statSync(sourceFile).isFile()) { + throw new Error('sourceFile is not a file'); + } + // create the tool dir + const destFolder = yield _createToolPath(tool, version, arch); + // copy instead of move. move can fail on Windows due to + // anti-virus software having an open handle on a file. + const destPath = path.join(destFolder, targetFile); + core.debug(`destination file ${destPath}`); + yield io.cp(sourceFile, destPath); + // write .complete + _completeToolPath(tool, version, arch); + return destFolder; + }); +} +exports.cacheFile = cacheFile; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +function find(toolName, versionSpec, arch) { + if (!toolName) { + throw new Error('toolName parameter is required'); + } + if (!versionSpec) { + throw new Error('versionSpec parameter is required'); + } + arch = arch || os.arch(); + // attempt to resolve an explicit version + if (!isExplicitVersion(versionSpec)) { + const localVersions = findAllVersions(toolName, arch); + const match = evaluateVersions(localVersions, versionSpec); + versionSpec = match; + } + // check for the explicit version in the cache + let toolPath = ''; + if (versionSpec) { + versionSpec = semver.clean(versionSpec) || ''; + const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch); + core.debug(`checking cache: ${cachePath}`); + if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { + core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); + toolPath = cachePath; + } + else { + core.debug('not found'); + } + } + return toolPath; +} +exports.find = find; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +function findAllVersions(toolName, arch) { + const versions = []; + arch = arch || os.arch(); + const toolPath = path.join(_getCacheDirectory(), toolName); + if (fs.existsSync(toolPath)) { + const children = fs.readdirSync(toolPath); + for (const child of children) { + if (isExplicitVersion(child)) { + const fullPath = path.join(toolPath, child, arch || ''); + if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { + versions.push(child); + } + } + } + } + return versions; +} +exports.findAllVersions = findAllVersions; +function getManifestFromRepo(owner, repo, auth, branch = 'master') { + return __awaiter(this, void 0, void 0, function* () { + let releases = []; + const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; + const http = new httpm.HttpClient('tool-cache'); + const headers = {}; + if (auth) { + core.debug('set auth'); + headers.authorization = auth; + } + const response = yield http.getJson(treeUrl, headers); + if (!response.result) { + return releases; + } + let manifestUrl = ''; + for (const item of response.result.tree) { + if (item.path === 'versions-manifest.json') { + manifestUrl = item.url; + break; + } + } + headers['accept'] = 'application/vnd.github.VERSION.raw'; + let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody(); + if (versionsRaw) { + // shouldn't be needed but protects against invalid json saved with BOM + versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); + try { + releases = JSON.parse(versionsRaw); + } + catch (_a) { + core.debug('Invalid json'); + } + } + return releases; + }); +} +exports.getManifestFromRepo = getManifestFromRepo; +function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) { + return __awaiter(this, void 0, void 0, function* () { + // wrap the internal impl + const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter); + return match; + }); +} +exports.findFromManifest = findFromManifest; +function _createExtractFolder(dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!dest) { + // create a temp dir + dest = path.join(_getTempDirectory(), v4_1.default()); + } + yield io.mkdirP(dest); + return dest; + }); +} +function _createToolPath(tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); + core.debug(`destination ${folderPath}`); + const markerPath = `${folderPath}.complete`; + yield io.rmRF(folderPath); + yield io.rmRF(markerPath); + yield io.mkdirP(folderPath); + return folderPath; + }); +} +function _completeToolPath(tool, version, arch) { + const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); + const markerPath = `${folderPath}.complete`; + fs.writeFileSync(markerPath, ''); + core.debug('finished caching tool'); +} +/** + * Check if version string is explicit + * + * @param versionSpec version string to check + */ +function isExplicitVersion(versionSpec) { + const c = semver.clean(versionSpec) || ''; + core.debug(`isExplicit: ${c}`); + const valid = semver.valid(c) != null; + core.debug(`explicit? ${valid}`); + return valid; +} +exports.isExplicitVersion = isExplicitVersion; +/** + * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec` + * + * @param versions array of versions to evaluate + * @param versionSpec semantic version spec to satisfy + */ +function evaluateVersions(versions, versionSpec) { + let version = ''; + core.debug(`evaluating ${versions.length} versions`); + versions = versions.sort((a, b) => { + if (semver.gt(a, b)) { + return 1; + } + return -1; + }); + for (let i = versions.length - 1; i >= 0; i--) { + const potential = versions[i]; + const satisfied = semver.satisfies(potential, versionSpec); + if (satisfied) { + version = potential; + break; + } + } + if (version) { + core.debug(`matched: ${version}`); + } + else { + core.debug('match not found'); + } + return version; +} +exports.evaluateVersions = evaluateVersions; +/** + * Gets RUNNER_TOOL_CACHE + */ +function _getCacheDirectory() { + const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; + assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); + return cacheDirectory; +} +/** + * Gets RUNNER_TEMP + */ +function _getTempDirectory() { + const tempDirectory = process.env['RUNNER_TEMP'] || ''; + assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); + return tempDirectory; +} +/** + * Gets a global variable + */ +function _getGlobal(key, defaultValue) { + /* eslint-disable @typescript-eslint/no-explicit-any */ + const value = global[key]; + /* eslint-enable @typescript-eslint/no-explicit-any */ + return value !== undefined ? value : defaultValue; +} +/** + * Returns an array of unique values. + * @param values Values to make unique. + */ +function _unique(values) { + return Array.from(new Set(values)); +} +//# sourceMappingURL=tool-cache.js.map + +/***/ }), + +/***/ 334: +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + createTokenAuth: () => createTokenAuth +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/auth.js +var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +var REGEX_IS_INSTALLATION = /^ghs_/; +var REGEX_IS_USER_TO_SERVER = /^ghu_/; +async function auth(token) { + const isApp = token.split(/\./).length === 3; + const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token, + tokenType + }; +} + +// pkg/dist-src/with-authorization-prefix.js +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } + return `token ${token}`; +} + +// pkg/dist-src/hook.js +async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge( + route, + parameters + ); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} + +// pkg/dist-src/index.js +var createTokenAuth = function createTokenAuth2(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } + if (typeof token !== "string") { + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); + } + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 6762: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + Octokit: () => Octokit +}); +module.exports = __toCommonJS(dist_src_exports); +var import_universal_user_agent = __nccwpck_require__(5030); +var import_before_after_hook = __nccwpck_require__(3682); +var import_request = __nccwpck_require__(6234); +var import_graphql = __nccwpck_require__(8467); +var import_auth_token = __nccwpck_require__(334); + +// pkg/dist-src/version.js +var VERSION = "5.2.0"; + +// pkg/dist-src/index.js +var noop = () => { +}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; +var Octokit = class { + static { + this.VERSION = VERSION; + } + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + super( + Object.assign( + {}, + defaults, + options, + options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static { + this.plugins = []; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static { + this.plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + } + }; + return NewOctokit; + } + constructor(options = {}) { + const hook = new import_before_after_hook.Collection(); + const requestDefaults = { + baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; + requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } + this.request = import_request.request.defaults(requestDefaults); + this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults); + this.log = Object.assign( + { + debug: noop, + info: noop, + warn: consoleWarn, + error: consoleError + }, + options.log + ); + this.hook = hook; + if (!options.authStrategy) { + if (!options.auth) { + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + const auth = (0, import_auth_token.createTokenAuth)(options.auth); + hook.wrap("request", auth.hook); + this.auth = auth; + } + } else { + const { authStrategy, ...otherOptions } = options; + const auth = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); + hook.wrap("request", auth.hook); + this.auth = auth; + } + const classConstructor = this.constructor; + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); + } + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 9440: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + endpoint: () => endpoint +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/defaults.js +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "9.0.5"; + +// pkg/dist-src/defaults.js +var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; + +// pkg/dist-src/util/lowercase-keys.js +function lowercaseKeys(object) { + if (!object) { + return {}; + } + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} + +// pkg/dist-src/util/is-plain-object.js +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); +} + +// pkg/dist-src/util/merge-deep.js +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; +} + +// pkg/dist-src/util/remove-undefined-properties.js +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === void 0) { + delete obj[key]; + } + } + return obj; +} + +// pkg/dist-src/merge.js +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; +} + +// pkg/dist-src/util/add-query-parameters.js +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("&"); +} + +// pkg/dist-src/util/extract-url-variable-names.js +var urlVariableRegex = /\{[^}]+\}/g; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); + if (!matches) { + return []; + } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} + +// pkg/dist-src/util/omit.js +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; +} + +// pkg/dist-src/util/url-template.js +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(/\/$/, ""); + } +} + +// pkg/dist-src/parse.js +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(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } + } + 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 + ); +} + +// pkg/dist-src/endpoint-with-defaults.js +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} + +// pkg/dist-src/with-defaults.js +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 + }); +} + +// pkg/dist-src/index.js +var endpoint = withDefaults(null, DEFAULTS); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 8467: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + GraphqlResponseError: () => GraphqlResponseError, + graphql: () => graphql2, + withCustomRequest: () => withCustomRequest +}); +module.exports = __toCommonJS(dist_src_exports); +var import_request3 = __nccwpck_require__(6234); +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "7.1.0"; + +// pkg/dist-src/with-defaults.js +var import_request2 = __nccwpck_require__(6234); + +// pkg/dist-src/graphql.js +var import_request = __nccwpck_require__(6234); + +// pkg/dist-src/error.js +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors: +` + data.errors.map((e) => ` - ${e.message}`).join("\n"); +} +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request2; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; + this.errors = response.errors; + this.data = response.data; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } +}; + +// pkg/dist-src/graphql.js +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); + } + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); + } + } + const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + if (!result.variables) { + result.variables = {}; + } + result.variables[key] = parsedOptions[key]; + return result; + }, {}); + const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + return request2(requestOptions).then((response) => { + if (response.data.errors) { + const headers = {}; + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); + } + return response.data.data; + }); +} + +// pkg/dist-src/with-defaults.js +function withDefaults(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: newRequest.endpoint + }); +} + +// pkg/dist-src/index.js +var graphql2 = withDefaults(import_request3.request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 4193: +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + composePaginateRest: () => composePaginateRest, + isPaginatingEndpoint: () => isPaginatingEndpoint, + paginateRest: () => paginateRest, + paginatingEndpoints: () => paginatingEndpoints +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/version.js +var VERSION = "9.0.0"; + +// pkg/dist-src/normalize-paginated-list-response.js +function normalizePaginatedListResponse(response) { + if (!response.data) { + return { + ...response, + data: [] + }; + } + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) + return response; + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + response.data.total_count = totalCount; + return response; +} + +// pkg/dist-src/iterator.js +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) + return { done: true }; + try { + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^>]+)>;\s*rel="next"/ + ) || [])[1]; + return { value: normalizedResponse }; + } catch (error) { + if (error.status !== 409) + throw error; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + }) + }; +} + +// pkg/dist-src/paginate.js +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = void 0; + } + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); +} +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { + if (result.done) { + return results; + } + let earlyExit = false; + function done() { + earlyExit = true; + } + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); + if (earlyExit) { + return results; + } + return gather(octokit, results, iterator2, mapFn); + }); +} + +// pkg/dist-src/compose-paginate.js +var composePaginateRest = Object.assign(paginate, { + iterator +}); + +// pkg/dist-src/generated/paginating-endpoints.js +var paginatingEndpoints = [ + "GET /advisories", + "GET /app/hook/deliveries", + "GET /app/installation-requests", + "GET /app/installations", + "GET /assignments/{assignment_id}/accepted_assignments", + "GET /classrooms", + "GET /classrooms/{classroom_id}/assignments", + "GET /enterprises/{enterprise}/dependabot/alerts", + "GET /enterprises/{enterprise}/secret-scanning/alerts", + "GET /events", + "GET /gists", + "GET /gists/public", + "GET /gists/starred", + "GET /gists/{gist_id}/comments", + "GET /gists/{gist_id}/commits", + "GET /gists/{gist_id}/forks", + "GET /installation/repositories", + "GET /issues", + "GET /licenses", + "GET /marketplace_listing/plans", + "GET /marketplace_listing/plans/{plan_id}/accounts", + "GET /marketplace_listing/stubbed/plans", + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", + "GET /networks/{owner}/{repo}/events", + "GET /notifications", + "GET /organizations", + "GET /orgs/{org}/actions/cache/usage-by-repository", + "GET /orgs/{org}/actions/permissions/repositories", + "GET /orgs/{org}/actions/runners", + "GET /orgs/{org}/actions/secrets", + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", + "GET /orgs/{org}/actions/variables", + "GET /orgs/{org}/actions/variables/{name}/repositories", + "GET /orgs/{org}/blocks", + "GET /orgs/{org}/code-scanning/alerts", + "GET /orgs/{org}/codespaces", + "GET /orgs/{org}/codespaces/secrets", + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", + "GET /orgs/{org}/copilot/billing/seats", + "GET /orgs/{org}/dependabot/alerts", + "GET /orgs/{org}/dependabot/secrets", + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", + "GET /orgs/{org}/events", + "GET /orgs/{org}/failed_invitations", + "GET /orgs/{org}/hooks", + "GET /orgs/{org}/hooks/{hook_id}/deliveries", + "GET /orgs/{org}/installations", + "GET /orgs/{org}/invitations", + "GET /orgs/{org}/invitations/{invitation_id}/teams", + "GET /orgs/{org}/issues", + "GET /orgs/{org}/members", + "GET /orgs/{org}/members/{username}/codespaces", + "GET /orgs/{org}/migrations", + "GET /orgs/{org}/migrations/{migration_id}/repositories", + "GET /orgs/{org}/outside_collaborators", + "GET /orgs/{org}/packages", + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + "GET /orgs/{org}/personal-access-token-requests", + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", + "GET /orgs/{org}/personal-access-tokens", + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", + "GET /orgs/{org}/projects", + "GET /orgs/{org}/public_members", + "GET /orgs/{org}/repos", + "GET /orgs/{org}/rulesets", + "GET /orgs/{org}/secret-scanning/alerts", + "GET /orgs/{org}/security-advisories", + "GET /orgs/{org}/teams", + "GET /orgs/{org}/teams/{team_slug}/discussions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/invitations", + "GET /orgs/{org}/teams/{team_slug}/members", + "GET /orgs/{org}/teams/{team_slug}/projects", + "GET /orgs/{org}/teams/{team_slug}/repos", + "GET /orgs/{org}/teams/{team_slug}/teams", + "GET /projects/columns/{column_id}/cards", + "GET /projects/{project_id}/collaborators", + "GET /projects/{project_id}/columns", + "GET /repos/{owner}/{repo}/actions/artifacts", + "GET /repos/{owner}/{repo}/actions/caches", + "GET /repos/{owner}/{repo}/actions/organization-secrets", + "GET /repos/{owner}/{repo}/actions/organization-variables", + "GET /repos/{owner}/{repo}/actions/runners", + "GET /repos/{owner}/{repo}/actions/runs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", + "GET /repos/{owner}/{repo}/actions/secrets", + "GET /repos/{owner}/{repo}/actions/variables", + "GET /repos/{owner}/{repo}/actions/workflows", + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", + "GET /repos/{owner}/{repo}/activity", + "GET /repos/{owner}/{repo}/assignees", + "GET /repos/{owner}/{repo}/branches", + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", + "GET /repos/{owner}/{repo}/code-scanning/alerts", + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + "GET /repos/{owner}/{repo}/code-scanning/analyses", + "GET /repos/{owner}/{repo}/codespaces", + "GET /repos/{owner}/{repo}/codespaces/devcontainers", + "GET /repos/{owner}/{repo}/codespaces/secrets", + "GET /repos/{owner}/{repo}/collaborators", + "GET /repos/{owner}/{repo}/comments", + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/commits", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", + "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", + "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", + "GET /repos/{owner}/{repo}/commits/{ref}/status", + "GET /repos/{owner}/{repo}/commits/{ref}/statuses", + "GET /repos/{owner}/{repo}/contributors", + "GET /repos/{owner}/{repo}/dependabot/alerts", + "GET /repos/{owner}/{repo}/dependabot/secrets", + "GET /repos/{owner}/{repo}/deployments", + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", + "GET /repos/{owner}/{repo}/environments", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", + "GET /repos/{owner}/{repo}/events", + "GET /repos/{owner}/{repo}/forks", + "GET /repos/{owner}/{repo}/hooks", + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", + "GET /repos/{owner}/{repo}/invitations", + "GET /repos/{owner}/{repo}/issues", + "GET /repos/{owner}/{repo}/issues/comments", + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/issues/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", + "GET /repos/{owner}/{repo}/issues/{issue_number}/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", + "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", + "GET /repos/{owner}/{repo}/keys", + "GET /repos/{owner}/{repo}/labels", + "GET /repos/{owner}/{repo}/milestones", + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", + "GET /repos/{owner}/{repo}/notifications", + "GET /repos/{owner}/{repo}/pages/builds", + "GET /repos/{owner}/{repo}/projects", + "GET /repos/{owner}/{repo}/pulls", + "GET /repos/{owner}/{repo}/pulls/comments", + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", + "GET /repos/{owner}/{repo}/releases", + "GET /repos/{owner}/{repo}/releases/{release_id}/assets", + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", + "GET /repos/{owner}/{repo}/rules/branches/{branch}", + "GET /repos/{owner}/{repo}/rulesets", + "GET /repos/{owner}/{repo}/secret-scanning/alerts", + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", + "GET /repos/{owner}/{repo}/security-advisories", + "GET /repos/{owner}/{repo}/stargazers", + "GET /repos/{owner}/{repo}/subscribers", + "GET /repos/{owner}/{repo}/tags", + "GET /repos/{owner}/{repo}/teams", + "GET /repos/{owner}/{repo}/topics", + "GET /repositories", + "GET /repositories/{repository_id}/environments/{environment_name}/secrets", + "GET /repositories/{repository_id}/environments/{environment_name}/variables", + "GET /search/code", + "GET /search/commits", + "GET /search/issues", + "GET /search/labels", + "GET /search/repositories", + "GET /search/topics", + "GET /search/users", + "GET /teams/{team_id}/discussions", + "GET /teams/{team_id}/discussions/{discussion_number}/comments", + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /teams/{team_id}/discussions/{discussion_number}/reactions", + "GET /teams/{team_id}/invitations", + "GET /teams/{team_id}/members", + "GET /teams/{team_id}/projects", + "GET /teams/{team_id}/repos", + "GET /teams/{team_id}/teams", + "GET /user/blocks", + "GET /user/codespaces", + "GET /user/codespaces/secrets", + "GET /user/emails", + "GET /user/followers", + "GET /user/following", + "GET /user/gpg_keys", + "GET /user/installations", + "GET /user/installations/{installation_id}/repositories", + "GET /user/issues", + "GET /user/keys", + "GET /user/marketplace_purchases", + "GET /user/marketplace_purchases/stubbed", + "GET /user/memberships/orgs", + "GET /user/migrations", + "GET /user/migrations/{migration_id}/repositories", + "GET /user/orgs", + "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", + "GET /user/public_emails", + "GET /user/repos", + "GET /user/repository_invitations", + "GET /user/social_accounts", + "GET /user/ssh_signing_keys", + "GET /user/starred", + "GET /user/subscriptions", + "GET /user/teams", + "GET /users", + "GET /users/{username}/events", + "GET /users/{username}/events/orgs/{org}", + "GET /users/{username}/events/public", + "GET /users/{username}/followers", + "GET /users/{username}/following", + "GET /users/{username}/gists", + "GET /users/{username}/gpg_keys", + "GET /users/{username}/keys", + "GET /users/{username}/orgs", + "GET /users/{username}/packages", + "GET /users/{username}/projects", + "GET /users/{username}/received_events", + "GET /users/{username}/received_events/public", + "GET /users/{username}/repos", + "GET /users/{username}/social_accounts", + "GET /users/{username}/ssh_signing_keys", + "GET /users/{username}/starred", + "GET /users/{username}/subscriptions" +]; + +// pkg/dist-src/paginating-endpoints.js +function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); + } else { + return false; + } +} + +// pkg/dist-src/index.js +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 3044: +/***/ ((module) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + legacyRestEndpointMethods: () => legacyRestEndpointMethods, + restEndpointMethods: () => restEndpointMethods +}); +module.exports = __toCommonJS(dist_src_exports); + +// pkg/dist-src/version.js +var VERSION = "10.0.0"; + +// pkg/dist-src/generated/endpoints.js +var Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repositories/{repository_id}/environments/{environment_name}/variables" + ], + createOrUpdateEnvironmentSecret: [ + "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteEnvironmentSecret: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: [ + "GET /orgs/{org}/actions/cache/usage-by-repository" + ], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/selected-actions" + ], + getAllowedActionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getEnvironmentPublicKey: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key" + ], + getEnvironmentSecret: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + getEnvironmentVariable: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions/workflow" + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/workflow" + ], + getGithubActionsPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions" + ], + getGithubActionsPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions" + ], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + getRepoPermissions: [ + "GET /repos/{owner}/{repo}/actions/permissions", + {}, + { renamed: ["actions", "getGithubActionsPermissionsRepository"] } + ], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" + ], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/access" + ], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" + ], + getWorkflowRunUsage: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" + ], + getWorkflowUsage: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" + ], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets" + ], + listEnvironmentVariables: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables" + ], + listJobsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" + ], + listJobsForWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" + ], + listLabelsForSelfHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/runners/{runner_id}/labels" + ], + listLabelsForSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: [ + "GET /repos/{owner}/{repo}/actions/organization-secrets" + ], + listRepoOrganizationVariables: [ + "GET /repos/{owner}/{repo}/actions/organization-variables" + ], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/downloads" + ], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + listSelectedReposForOrgVariable: [ + "GET /orgs/{org}/actions/variables/{name}/repositories" + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/repositories" + ], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" + ], + listWorkflowRuns: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" + ], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" + ], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgVariable: [ + "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + reviewCustomGatesForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" + ], + reviewPendingDeploymentsForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + setAllowedActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/selected-actions" + ], + setAllowedActionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels" + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/workflow" + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow" + ], + setGithubActionsPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions" + ], + setGithubActionsPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories" + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories" + ], + setWorkflowAccessToRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/access" + ], + updateEnvironmentVariable: [ + "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: [ + "PATCH /repos/{owner}/{repo}/actions/variables/{name}" + ] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: [ + "DELETE /notifications/threads/{thread_id}/subscription" + ], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: [ + "GET /notifications/threads/{thread_id}/subscription" + ], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: [ + "GET /users/{username}/events/orgs/{org}" + ], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: [ + "GET /users/{username}/received_events/public" + ], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/notifications" + ], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: [ + "PUT /notifications/threads/{thread_id}/subscription" + ], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } + ], + addRepoToInstallationForAuthenticatedUser: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}" + ], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: [ + "POST /app/installations/{installation_id}/access_tokens" + ], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: [ + "GET /marketplace_listing/accounts/{account_id}" + ], + getSubscriptionPlanForAccountStubbed: [ + "GET /marketplace_listing/stubbed/accounts/{account_id}" + ], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: [ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" + ], + listInstallationReposForAuthenticatedUser: [ + "GET /user/installations/{installation_id}/repositories" + ], + listInstallationRequestsForAuthenticatedApp: [ + "GET /app/installation-requests" + ], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: [ + "GET /user/marketplace_purchases/stubbed" + ], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: [ + "POST /app/hook/deliveries/{delivery_id}/attempts" + ], + removeRepoFromInstallation: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } + ], + removeRepoFromInstallationForAuthenticatedUser: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}" + ], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: [ + "DELETE /app/installations/{installation_id}/suspended" + ], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: [ + "GET /users/{username}/settings/billing/actions" + ], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: [ + "GET /users/{username}/settings/billing/packages" + ], + getSharedStorageBillingOrg: [ + "GET /orgs/{org}/settings/billing/shared-storage" + ], + getSharedStorageBillingUser: [ + "GET /users/{username}/settings/billing/shared-storage" + ] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: [ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" + ], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: [ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" + ], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: [ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" + ], + rerequestSuite: [ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" + ], + setSuitesPreferences: [ + "PATCH /repos/{owner}/{repo}/check-suites/preferences" + ], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + deleteAnalysis: [ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", + {}, + { renamedParameters: { alert_id: "alert_number" } } + ], + getAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" + ], + getCodeqlDatabase: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + listAlertInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" + ], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + {}, + { renamed: ["codeScanning", "listAlertInstances"] } + ], + listCodeqlDatabases: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" + ], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" + ], + updateDefaultSetup: [ + "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" + ], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + codespaceMachinesForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/machines" + ], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + createOrUpdateSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}" + ], + createWithPrForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" + ], + createWithRepoForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/codespaces" + ], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + deleteSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}" + ], + exportForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/exports" + ], + getCodespacesForUserInOrg: [ + "GET /orgs/{org}/members/{username}/codespaces" + ], + getExportDetailsForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/exports/{export_id}" + ], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: [ + "GET /user/codespaces/secrets/public-key" + ], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + getSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}" + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/devcontainers" + ], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: [ + "GET /orgs/{org}/codespaces", + {}, + { renamedParameters: { org_id: "org" } } + ], + listInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces" + ], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}/repositories" + ], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + preFlightWithRepoForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/new" + ], + publishForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/publish" + ], + removeRepositoryForSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + repoMachinesForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/machines" + ], + setRepositoriesForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" + ], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + copilot: { + addCopilotForBusinessSeatsForTeams: [ + "POST /orgs/{org}/copilot/billing/selected_teams" + ], + addCopilotForBusinessSeatsForUsers: [ + "POST /orgs/{org}/copilot/billing/selected_users" + ], + cancelCopilotSeatAssignmentForTeams: [ + "DELETE /orgs/{org}/copilot/billing/selected_teams" + ], + cancelCopilotSeatAssignmentForUsers: [ + "DELETE /orgs/{org}/copilot/billing/selected_users" + ], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatAssignmentDetailsForUser: [ + "GET /orgs/{org}/members/{username}/copilot" + ], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] + }, + dependabot: { + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/dependabot/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" + ] + }, + dependencyGraph: { + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots" + ], + diffRange: [ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" + ], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] + }, + emojis: { get: ["GET /emojis"] }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: [ + "GET /user/interaction-limits", + {}, + { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } + ], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: [ + "DELETE /repos/{owner}/{repo}/interaction-limits" + ], + removeRestrictionsForYourPublicRepos: [ + "DELETE /user/interaction-limits", + {}, + { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } + ], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: [ + "PUT /user/interaction-limits", + {}, + { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } + ] + }, + issues: { + addAssignees: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" + ], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" + ], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" + ], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: [ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" + ], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" + ], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: [ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" + ], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + removeAssignees: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + removeLabel: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" + ], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: [ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" + ] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: [ + "POST /markdown/raw", + { headers: { "content-type": "text/plain; charset=utf-8" } } + ] + }, + meta: { + get: ["GET /meta"], + getAllVersions: ["GET /versions"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + cancelImport: ["DELETE /repos/{owner}/{repo}/import"], + deleteArchiveForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/archive" + ], + deleteArchiveForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/archive" + ], + downloadArchiveForOrg: [ + "GET /orgs/{org}/migrations/{migration_id}/archive" + ], + getArchiveForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/archive" + ], + getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], + getImportStatus: ["GET /repos/{owner}/{repo}/import"], + getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/repositories" + ], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: [ + "GET /user/migrations/{migration_id}/repositories", + {}, + { renamed: ["migrations", "listReposForAuthenticatedUser"] } + ], + mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], + setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + startImport: ["PUT /repos/{owner}/{repo}/import"], + unlockRepoForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" + ], + unlockRepoForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" + ], + updateImport: ["PATCH /repos/{owner}/{repo}/import"] + }, + orgs: { + addSecurityManagerTeam: [ + "PUT /orgs/{org}/security-managers/teams/{team_slug}" + ], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: [ + "PUT /orgs/{org}/outside_collaborators/{username}" + ], + createInvitation: ["POST /orgs/{org}/invitations"], + createWebhook: ["POST /orgs/{org}/hooks"], + delete: ["DELETE /orgs/{org}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: [ + "POST /orgs/{org}/{security_product}/{enablement}" + ], + get: ["GET /orgs/{org}"], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: [ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: [ + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" + ], + listPatGrantRequestRepositories: [ + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" + ], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: [ + "DELETE /orgs/{org}/outside_collaborators/{username}" + ], + removePublicMembershipForAuthenticatedUser: [ + "DELETE /orgs/{org}/public_members/{username}" + ], + removeSecurityManagerTeam: [ + "DELETE /orgs/{org}/security-managers/teams/{team_slug}" + ], + reviewPatGrantRequest: [ + "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" + ], + reviewPatGrantRequestsInBulk: [ + "POST /orgs/{org}/personal-access-token-requests" + ], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: [ + "PUT /orgs/{org}/public_members/{username}" + ], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateMembershipForAuthenticatedUser: [ + "PATCH /user/memberships/orgs/{org}" + ], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}" + ], + deletePackageForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}" + ], + deletePackageForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}" + ], + deletePackageVersionForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + {}, + { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions", + {}, + { + renamed: [ + "packages", + "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" + ] + } + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions" + ], + getPackageForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}" + ], + getPackageForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}" + ], + getPackageForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}" + ], + getPackageVersionForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + listDockerMigrationConflictingPackagesForAuthenticatedUser: [ + "GET /user/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForOrganization: [ + "GET /orgs/{org}/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForUser: [ + "GET /users/{username}/docker/conflicts" + ], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageVersionForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + delete: ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: [ + "GET /projects/{project_id}/collaborators/{username}/permission" + ], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: [ + "DELETE /projects/{project_id}/collaborators/{username}" + ], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" + ], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + deletePendingReview: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + deleteReviewComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ], + dismissReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" + ], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" + ], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + listReviewComments: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + requestReviewers: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + submitReview: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" + ], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" + ], + updateReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + updateReviewComment: [ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ] + }, + rateLimit: { get: ["GET /rate_limit"] }, + reactions: { + createForCommitComment: [ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + createForIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" + ], + createForIssueComment: [ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + createForPullRequestReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + createForRelease: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + createForTeamDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + createForTeamDiscussionInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ], + deleteForCommitComment: [ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ], + deleteForIssueComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForPullRequestComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForRelease: [ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" + ], + deleteForTeamDiscussion: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" + ], + deleteForTeamDiscussionComment: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" + ], + listForCommitComment: [ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: [ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + listForPullRequestReviewComment: [ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + listForRelease: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + listForTeamDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + listForTeamDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ] + }, + repos: { + acceptInvitation: [ + "PATCH /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } + ], + acceptInvitationForAuthenticatedUser: [ + "PATCH /user/repository_invitations/{invitation_id}" + ], + addAppAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + addTeamAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + addUserAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + checkAutomatedSecurityFixes: [ + "GET /repos/{owner}/{repo}/automated-security-fixes" + ], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkVulnerabilityAlerts: [ + "GET /repos/{owner}/{repo}/vulnerability-alerts" + ], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: [ + "GET /repos/{owner}/{repo}/compare/{basehead}" + ], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: [ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + createCommitSignatureProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + createDeploymentProtectionRule: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + createDeploymentStatus: [ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateEnvironment: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}" + ], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], + createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], + createUsingTemplate: [ + "POST /repos/{template_owner}/{template_repo}/generate" + ], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: [ + "DELETE /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } + ], + declineInvitationForAuthenticatedUser: [ + "DELETE /user/repository_invitations/{invitation_id}" + ], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + deleteAdminBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + deleteAnEnvironment: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}" + ], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" + ], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: [ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" + ], + deleteDeploymentBranchPolicy: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: [ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: [ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteTagProtection: [ + "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}" + ], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: [ + "DELETE /repos/{owner}/{repo}/automated-security-fixes" + ], + disableDeploymentProtectionRule: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + disablePrivateVulnerabilityReporting: [ + "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + disableVulnerabilityAlerts: [ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts" + ], + downloadArchive: [ + "GET /repos/{owner}/{repo}/zipball/{ref}", + {}, + { renamed: ["repos", "downloadZipballArchive"] } + ], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: [ + "PUT /repos/{owner}/{repo}/automated-security-fixes" + ], + enablePrivateVulnerabilityReporting: [ + "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + enableVulnerabilityAlerts: [ + "PUT /repos/{owner}/{repo}/vulnerability-alerts" + ], + generateReleaseNotes: [ + "POST /repos/{owner}/{repo}/releases/generate-notes" + ], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + getAdminBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + getAllDeploymentProtectionRules: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" + ], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" + ], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection" + ], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: [ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission" + ], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + getDeploymentStatus: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" + ], + getEnvironment: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}" + ], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + getTeamsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" + ], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" + ], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + getWebhookDelivery: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + listActivities: ["GET /repos/{owner}/{repo}/activity"], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" + ], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: [ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses" + ], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" + ], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + listDeploymentStatuses: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" + ], + listReleaseAssets: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets" + ], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" + ], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: [ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeAppAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + removeCollaborator: [ + "DELETE /repos/{owner}/{repo}/collaborators/{username}" + ], + removeStatusCheckContexts: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + removeStatusCheckProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + removeTeamAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + removeUserAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + setAppAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + setStatusCheckContexts: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + setTeamAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + setUserAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection" + ], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: [ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: [ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", + {}, + { renamed: ["repos", "updateStatusCheckProtection"] } + ], + updateStatusCheckProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: [ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + uploadReleaseAsset: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", + { baseUrl: "https://uploads.github.com" } + ] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + getAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/secret-scanning/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ] + }, + securityAdvisories: { + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] + }, + teams: { + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateProjectPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForProjectInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeProjectInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], + addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], + list: ["GET /users"], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } + ], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; +var endpoints_default = Endpoints; + +// pkg/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { + method, + url + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const { decorations, endpointDefaults } = endpointMethodsMap.get(scope).get(methodName); + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); + } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); + } + return newMethods; +} +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + function withDecorations(...args) { + let options = requestWithDefaults.endpoint.merge(...args); + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: void 0 + }); + return requestWithDefaults(options); + } + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } + if (decorations.renamedParameters) { + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; + } + delete options2[name]; + } + } + return requestWithDefaults(options2); + } + return requestWithDefaults(...args); + } + return Object.assign(withDecorations, requestWithDefaults); +} + +// pkg/dist-src/index.js +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit); + return { + ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 537: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + RequestError: () => RequestError +}); +module.exports = __toCommonJS(dist_src_exports); +var import_deprecation = __nccwpck_require__(8932); +var import_once = __toESM(__nccwpck_require__(1223)); +var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var RequestError = class extends Error { + constructor(message, statusCode, options) { + super(message); + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = "HttpError"; + this.status = statusCode; + let headers; + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; + } + if ("response" in options) { + this.response = options.response; + headers = options.response.headers; + } + const requestCopy = Object.assign({}, options.request); + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace( + / .*$/, + " [REDACTED]" + ) + }); + } + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; + Object.defineProperty(this, "code", { + get() { + logOnceCode( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.code` is deprecated, use `error.status`." + ) + ); + return statusCode; + } + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`." + ) + ); + return headers || {}; + } + }); + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 6234: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + request: () => request +}); +module.exports = __toCommonJS(dist_src_exports); +var import_endpoint = __nccwpck_require__(9440); +var import_universal_user_agent = __nccwpck_require__(5030); + +// pkg/dist-src/version.js +var VERSION = "8.4.0"; + +// pkg/dist-src/is-plain-object.js +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); +} + +// pkg/dist-src/fetch-wrapper.js +var import_request_error = __nccwpck_require__(537); + +// pkg/dist-src/get-buffer-response.js +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +// pkg/dist-src/fetch-wrapper.js +function fetchWrapper(requestOptions) { + var _a, _b, _c, _d; + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; + if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + let headers = {}; + let status; + let url; + let { fetch } = globalThis; + if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { + fetch = requestOptions.request.fetch; + } + if (!fetch) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + return fetch(requestOptions.url, { + method: requestOptions.method, + body: requestOptions.body, + redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect, + headers: requestOptions.headers, + signal: (_d = requestOptions.request) == null ? void 0 : _d.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }).then(async (response) => { + url = response.url; + status = response.status; + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); + } + if (status === 204 || status === 205) { + return; + } + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } + throw new import_request_error.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: void 0 + }, + request: requestOptions + }); + } + if (status === 304) { + throw new import_request_error.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } + if (status >= 400) { + const data = await getResponseData(response); + const error = new import_request_error.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } + return parseSuccessResponseBody ? await getResponseData(response) : response.body; + }).then((data) => { + return { + status, + url, + headers, + data + }; + }).catch((error) => { + if (error instanceof import_request_error.RequestError) + throw error; + else if (error.name === "AbortError") + throw error; + let message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + throw new import_request_error.RequestError(message, 500, { + request: requestOptions + }); + }); +} +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + if (/application\/json/.test(contentType)) { + return response.json().catch(() => response.text()).catch(() => ""); + } + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + return getBufferResponse(response); +} +function toErrorMessage(data) { + if (typeof data === "string") + return data; + let suffix; + if ("documentation_url" in data) { + suffix = ` - ${data.documentation_url}`; + } else { + suffix = ""; + } + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`; + } + return `${data.message}${suffix}`; + } + return `Unknown error: ${JSON.stringify(data)}`; +} + +// pkg/dist-src/with-defaults.js +function withDefaults(oldEndpoint, newDefaults) { + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint2.parse(endpointOptions)); + } + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); + }; + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) + }); + return endpointOptions.request.hook(request2, endpointOptions); + }; + return Object.assign(newApi, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) + }); +} + +// pkg/dist-src/index.js +var request = withDefaults(import_endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` + } +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + +/***/ }), + +/***/ 3682: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var register = __nccwpck_require__(4670); +var addHook = __nccwpck_require__(5549); +var removeHook = __nccwpck_require__(6819); + +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind; +var bindable = bind.bind(bind); + +function bindApi(hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook.api = { remove: removeHookRef }; + hook.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind]; + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); + }); +} + +function HookSingular() { + var singularHookName = "h"; + var singularHookState = { + registry: {}, + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; +} + +function HookCollection() { + var state = { + registry: {}, + }; + + var hook = register.bind(null, state); + bindApi(hook, state); + + return hook; +} + +var collectionHookDeprecationMessageDisplayed = false; +function Hook() { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn( + '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' + ); + collectionHookDeprecationMessageDisplayed = true; + } + return HookCollection(); +} + +Hook.Singular = HookSingular.bind(); +Hook.Collection = HookCollection.bind(); + +module.exports = Hook; +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook; +module.exports.Singular = Hook.Singular; +module.exports.Collection = Hook.Collection; + + +/***/ }), + +/***/ 5549: +/***/ ((module) => { + +module.exports = addHook; + +function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; + } + + if (kind === "before") { + hook = function (method, options) { + return Promise.resolve() + .then(orig.bind(null, options)) + .then(method.bind(null, options)); + }; + } + + if (kind === "after") { + hook = function (method, options) { + var result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_; + return orig(result, options); + }) + .then(function () { + return result; + }); + }; + } + + if (kind === "error") { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; + } + + state.registry[name].push({ + hook: hook, + orig: orig, + }); +} + + +/***/ }), + +/***/ 4670: +/***/ ((module) => { + +module.exports = register; + +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + + if (!options) { + options = {}; + } + + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } + + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); + } + + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} + + +/***/ }), + +/***/ 6819: +/***/ ((module) => { + +module.exports = removeHook; + +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); + + if (index === -1) { + return; + } + + state.registry[name].splice(index, 1); +} + + +/***/ }), + +/***/ 8932: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + + this.name = 'Deprecation'; + } + +} + +exports.Deprecation = Deprecation; + + +/***/ }), + +/***/ 1223: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var wrappy = __nccwpck_require__(2940) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + + +/***/ }), + +/***/ 5911: +/***/ ((module, exports) => { + +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 + +// The actual regexps go on exports.re +var re = exports.re = [] +var safeRe = exports.safeRe = [] +var src = exports.src = [] +var t = exports.tokens = {} +var R = 0 + +function tok (n) { + t[n] = R++ +} + +var LETTERDASHNUMBER = '[a-zA-Z0-9-]' + +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +var safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] + +function makeSafeRe (value) { + for (var i = 0; i < safeRegexReplacements.length; i++) { + var token = safeRegexReplacements[i][0] + var max = safeRegexReplacements[i][1] + value = value + .split(token + '*').join(token + '{0,' + max + '}') + .split(token + '+').join(token + '{1,' + max + '}') + } + return value +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +tok('NUMERICIDENTIFIER') +src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' +tok('NUMERICIDENTIFIERLOOSE') +src[t.NUMERICIDENTIFIERLOOSE] = '\\d+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +tok('NONNUMERICIDENTIFIER') +src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +tok('MAINVERSION') +src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')' + +tok('MAINVERSIONLOOSE') +src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +tok('PRERELEASEIDENTIFIER') +src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +tok('PRERELEASEIDENTIFIERLOOSE') +src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +tok('PRERELEASE') +src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' + +tok('PRERELEASELOOSE') +src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +tok('BUILDIDENTIFIER') +src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +tok('BUILD') +src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +tok('FULL') +tok('FULLPLAIN') +src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + + src[t.PRERELEASE] + '?' + + src[t.BUILD] + '?' + +src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +tok('LOOSEPLAIN') +src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + + src[t.PRERELEASELOOSE] + '?' + + src[t.BUILD] + '?' + +tok('LOOSE') +src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' + +tok('GTLT') +src[t.GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +tok('XRANGEIDENTIFIERLOOSE') +src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +tok('XRANGEIDENTIFIER') +src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' + +tok('XRANGEPLAIN') +src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:' + src[t.PRERELEASE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGEPLAINLOOSE') +src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[t.PRERELEASELOOSE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGE') +src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' +tok('XRANGELOOSE') +src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +tok('COERCE') +src[t.COERCE] = '(^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' +tok('COERCERTL') +re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') +safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g') + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +tok('LONETILDE') +src[t.LONETILDE] = '(?:~>?)' + +tok('TILDETRIM') +src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' +re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') +safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g') +var tildeTrimReplace = '$1~' + +tok('TILDE') +src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' +tok('TILDELOOSE') +src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +tok('LONECARET') +src[t.LONECARET] = '(?:\\^)' + +tok('CARETTRIM') +src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' +re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') +safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g') +var caretTrimReplace = '$1^' + +tok('CARET') +src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' +tok('CARETLOOSE') +src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +tok('COMPARATORLOOSE') +src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' +tok('COMPARATOR') +src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +tok('COMPARATORTRIM') +src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') +safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +tok('HYPHENRANGE') +src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAIN] + ')' + + '\\s*$' + +tok('HYPHENRANGELOOSE') +src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +tok('STAR') +src[t.STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + + // Replace all greedy whitespace to prevent regex dos issues. These regex are + // used internally via the safeRe object since all inputs in this library get + // normalized first to trim and collapse all extra whitespace. The original + // regexes are exported for userland consumption and lower level usage. A + // future breaking change could export the safer regex only with a note that + // all input should have extra whitespace removed. + safeRe[i] = new RegExp(makeSafeRe(src[i])) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +SemVer.prototype.compareBuild = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + var i = 0 + do { + var a = this.build[i] + var b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.compareBuild = compareBuild +function compareBuild (a, b, loose) { + var versionA = new SemVer(a, loose) + var versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(b, a, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + if (this.value === '') { + return true + } + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range + .trim() + .split(/\s+/) + .join(' ') + + // First, split based on boolean or || + this.set = this.raw.split('||').map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + this.raw) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, safeRe[t.COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return ( + isSatisfiable(thisComparators, options) && + range.set.some(function (rangeComparators) { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every(function (thisComparator) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) +} + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +function isSatisfiable (comparators, options) { + var result = true + var remainingComparators = comparators.slice() + var testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every(function (otherComparator) { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + pr + } else if (xm) { + ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr + } else if (xp) { + ret = '>=' + M + '.' + m + '.0' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + pr + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(safeRe[t.STAR], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version, options) { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + var match = null + if (!options.rtl) { + match = version.match(safeRe[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + var next + while ((next = safeRe[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + safeRe[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(match[2] + + '.' + (match[3] || '0') + + '.' + (match[4] || '0'), options) +} + + +/***/ }), + +/***/ 4294: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(4219); + + +/***/ }), + +/***/ 4219: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var net = __nccwpck_require__(1808); +var tls = __nccwpck_require__(4404); +var http = __nccwpck_require__(3685); +var https = __nccwpck_require__(5687); +var events = __nccwpck_require__(2361); +var assert = __nccwpck_require__(9491); +var util = __nccwpck_require__(3837); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 1773: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Client = __nccwpck_require__(3598) +const Dispatcher = __nccwpck_require__(412) +const errors = __nccwpck_require__(8045) +const Pool = __nccwpck_require__(4634) +const BalancedPool = __nccwpck_require__(7931) +const Agent = __nccwpck_require__(7890) +const util = __nccwpck_require__(3983) +const { InvalidArgumentError } = errors +const api = __nccwpck_require__(4059) +const buildConnector = __nccwpck_require__(2067) +const MockClient = __nccwpck_require__(8687) +const MockAgent = __nccwpck_require__(6771) +const MockPool = __nccwpck_require__(6193) +const mockErrors = __nccwpck_require__(888) +const ProxyAgent = __nccwpck_require__(7858) +const RetryHandler = __nccwpck_require__(2286) +const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(1892) +const DecoratorHandler = __nccwpck_require__(6930) +const RedirectHandler = __nccwpck_require__(2860) +const createRedirectInterceptor = __nccwpck_require__(8861) + +let hasCrypto +try { + __nccwpck_require__(6113) + hasCrypto = true +} catch { + hasCrypto = false +} + +Object.assign(Dispatcher.prototype, api) + +module.exports.Dispatcher = Dispatcher +module.exports.Client = Client +module.exports.Pool = Pool +module.exports.BalancedPool = BalancedPool +module.exports.Agent = Agent +module.exports.ProxyAgent = ProxyAgent +module.exports.RetryHandler = RetryHandler + +module.exports.DecoratorHandler = DecoratorHandler +module.exports.RedirectHandler = RedirectHandler +module.exports.createRedirectInterceptor = createRedirectInterceptor + +module.exports.buildConnector = buildConnector +module.exports.errors = errors + +function makeDispatcher (fn) { + return (url, opts, handler) => { + if (typeof opts === 'function') { + handler = opts + opts = null + } + + if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) { + throw new InvalidArgumentError('invalid url') + } + + if (opts != null && typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (opts && opts.path != null) { + if (typeof opts.path !== 'string') { + throw new InvalidArgumentError('invalid opts.path') + } + + let path = opts.path + if (!opts.path.startsWith('/')) { + path = `/${path}` + } + + url = new URL(util.parseOrigin(url).origin + path) + } else { + if (!opts) { + opts = typeof url === 'object' ? url : {} + } + + url = util.parseURL(url) + } + + const { agent, dispatcher = getGlobalDispatcher() } = opts + + if (agent) { + throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?') + } + + return fn.call(dispatcher, { + ...opts, + origin: url.origin, + path: url.search ? `${url.pathname}${url.search}` : url.pathname, + method: opts.method || (opts.body ? 'PUT' : 'GET') + }, handler) + } +} + +module.exports.setGlobalDispatcher = setGlobalDispatcher +module.exports.getGlobalDispatcher = getGlobalDispatcher + +if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) { + let fetchImpl = null + module.exports.fetch = async function fetch (resource) { + if (!fetchImpl) { + fetchImpl = (__nccwpck_require__(4881).fetch) + } + + try { + return await fetchImpl(...arguments) + } catch (err) { + if (typeof err === 'object') { + Error.captureStackTrace(err, this) + } + + throw err + } + } + module.exports.Headers = __nccwpck_require__(554).Headers + module.exports.Response = __nccwpck_require__(7823).Response + module.exports.Request = __nccwpck_require__(8359).Request + module.exports.FormData = __nccwpck_require__(2015).FormData + module.exports.File = __nccwpck_require__(8511).File + module.exports.FileReader = __nccwpck_require__(1446).FileReader + + const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(1246) + + module.exports.setGlobalOrigin = setGlobalOrigin + module.exports.getGlobalOrigin = getGlobalOrigin + + const { CacheStorage } = __nccwpck_require__(7907) + const { kConstruct } = __nccwpck_require__(9174) + + // Cache & CacheStorage are tightly coupled with fetch. Even if it may run + // in an older version of Node, it doesn't have any use without fetch. + module.exports.caches = new CacheStorage(kConstruct) +} + +if (util.nodeMajor >= 16) { + const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(1724) + + module.exports.deleteCookie = deleteCookie + module.exports.getCookies = getCookies + module.exports.getSetCookies = getSetCookies + module.exports.setCookie = setCookie + + const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685) + + module.exports.parseMIMEType = parseMIMEType + module.exports.serializeAMimeType = serializeAMimeType +} + +if (util.nodeMajor >= 18 && hasCrypto) { + const { WebSocket } = __nccwpck_require__(4284) + + module.exports.WebSocket = WebSocket +} + +module.exports.request = makeDispatcher(api.request) +module.exports.stream = makeDispatcher(api.stream) +module.exports.pipeline = makeDispatcher(api.pipeline) +module.exports.connect = makeDispatcher(api.connect) +module.exports.upgrade = makeDispatcher(api.upgrade) + +module.exports.MockClient = MockClient +module.exports.MockPool = MockPool +module.exports.MockAgent = MockAgent +module.exports.mockErrors = mockErrors + + +/***/ }), + +/***/ 7890: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { InvalidArgumentError } = __nccwpck_require__(8045) +const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(2785) +const DispatcherBase = __nccwpck_require__(4839) +const Pool = __nccwpck_require__(4634) +const Client = __nccwpck_require__(3598) +const util = __nccwpck_require__(3983) +const createRedirectInterceptor = __nccwpck_require__(8861) +const { WeakRef, FinalizationRegistry } = __nccwpck_require__(6436)() + +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kMaxRedirections = Symbol('maxRedirections') +const kOnDrain = Symbol('onDrain') +const kFactory = Symbol('factory') +const kFinalizer = Symbol('finalizer') +const kOptions = Symbol('options') + +function defaultFactory (origin, opts) { + return opts && opts.connections === 1 + ? new Client(origin, opts) + : new Pool(origin, opts) +} + +class Agent extends DispatcherBase { + constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) { + super() + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (!Number.isInteger(maxRedirections) || maxRedirections < 0) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + if (connect && typeof connect !== 'function') { + connect = { ...connect } + } + + this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent) + ? options.interceptors.Agent + : [createRedirectInterceptor({ maxRedirections })] + + this[kOptions] = { ...util.deepClone(options), connect } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kMaxRedirections] = maxRedirections + this[kFactory] = factory + this[kClients] = new Map() + this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => { + const ref = this[kClients].get(key) + if (ref !== undefined && ref.deref() === undefined) { + this[kClients].delete(key) + } + }) + + const agent = this + + this[kOnDrain] = (origin, targets) => { + agent.emit('drain', origin, [agent, ...targets]) + } + + this[kOnConnect] = (origin, targets) => { + agent.emit('connect', origin, [agent, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + agent.emit('disconnect', origin, [agent, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + agent.emit('connectionError', origin, [agent, ...targets], err) + } + } + + get [kRunning] () { + let ret = 0 + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore next: gc is undeterministic */ + if (client) { + ret += client[kRunning] + } + } + return ret + } + + [kDispatch] (opts, handler) { + let key + if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) { + key = String(opts.origin) + } else { + throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.') + } + + const ref = this[kClients].get(key) + + let dispatcher = ref ? ref.deref() : null + if (!dispatcher) { + dispatcher = this[kFactory](opts.origin, this[kOptions]) + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].set(key, new WeakRef(dispatcher)) + this[kFinalizer].register(dispatcher, key) + } + + return dispatcher.dispatch(opts, handler) + } + + async [kClose] () { + const closePromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + closePromises.push(client.close()) + } + } + + await Promise.all(closePromises) + } + + async [kDestroy] (err) { + const destroyPromises = [] + for (const ref of this[kClients].values()) { + const client = ref.deref() + /* istanbul ignore else: gc is undeterministic */ + if (client) { + destroyPromises.push(client.destroy(err)) + } + } + + await Promise.all(destroyPromises) + } +} + +module.exports = Agent + + +/***/ }), + +/***/ 7032: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { addAbortListener } = __nccwpck_require__(3983) +const { RequestAbortedError } = __nccwpck_require__(8045) + +const kListener = Symbol('kListener') +const kSignal = Symbol('kSignal') + +function abort (self) { + if (self.abort) { + self.abort() + } else { + self.onError(new RequestAbortedError()) + } +} + +function addSignal (self, signal) { + self[kSignal] = null + self[kListener] = null + + if (!signal) { + return + } + + if (signal.aborted) { + abort(self) + return + } + + self[kSignal] = signal + self[kListener] = () => { + abort(self) + } + + addAbortListener(self[kSignal], self[kListener]) +} + +function removeSignal (self) { + if (!self[kSignal]) { + return + } + + if ('removeEventListener' in self[kSignal]) { + self[kSignal].removeEventListener('abort', self[kListener]) + } else { + self[kSignal].removeListener('abort', self[kListener]) + } + + self[kSignal] = null + self[kListener] = null +} + +module.exports = { + addSignal, + removeSignal +} + + +/***/ }), + +/***/ 9744: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { AsyncResource } = __nccwpck_require__(852) +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { addSignal, removeSignal } = __nccwpck_require__(7032) + +class ConnectHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_CONNECT') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.callback = callback + this.abort = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders () { + throw new SocketError('bad connect', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + removeSignal(this) + + this.callback = null + + let headers = rawHeaders + // Indicates is an HTTP2Session + if (headers != null) { + headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + } + + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function connect (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + connect.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const connectHandler = new ConnectHandler(opts, callback) + this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = connect + + +/***/ }), + +/***/ 8752: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + Readable, + Duplex, + PassThrough +} = __nccwpck_require__(2781) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { AsyncResource } = __nccwpck_require__(852) +const { addSignal, removeSignal } = __nccwpck_require__(7032) +const assert = __nccwpck_require__(9491) + +const kResume = Symbol('resume') + +class PipelineRequest extends Readable { + constructor () { + super({ autoDestroy: true }) + + this[kResume] = null + } + + _read () { + const { [kResume]: resume } = this + + if (resume) { + this[kResume] = null + resume() + } + } + + _destroy (err, callback) { + this._read() + + callback(err) + } +} + +class PipelineResponse extends Readable { + constructor (resume) { + super({ autoDestroy: true }) + this[kResume] = resume + } + + _read () { + this[kResume]() + } + + _destroy (err, callback) { + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + callback(err) + } +} + +class PipelineHandler extends AsyncResource { + constructor (opts, handler) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof handler !== 'function') { + throw new InvalidArgumentError('invalid handler') + } + + const { signal, method, opaque, onInfo, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_PIPELINE') + + this.opaque = opaque || null + this.responseHeaders = responseHeaders || null + this.handler = handler + this.abort = null + this.context = null + this.onInfo = onInfo || null + + this.req = new PipelineRequest().on('error', util.nop) + + this.ret = new Duplex({ + readableObjectMode: opts.objectMode, + autoDestroy: true, + read: () => { + const { body } = this + + if (body && body.resume) { + body.resume() + } + }, + write: (chunk, encoding, callback) => { + const { req } = this + + if (req.push(chunk, encoding) || req._readableState.destroyed) { + callback() + } else { + req[kResume] = callback + } + }, + destroy: (err, callback) => { + const { body, req, res, ret, abort } = this + + if (!err && !ret._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (abort && err) { + abort() + } + + util.destroy(body, err) + util.destroy(req, err) + util.destroy(res, err) + + removeSignal(this) + + callback(err) + } + }).on('prefinish', () => { + const { req } = this + + // Node < 15 does not call _final in same tick. + req.push(null) + }) + + this.res = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + const { ret, res } = this + + assert(!res, 'pipeline cannot be retried') + + if (ret.destroyed) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume) { + const { opaque, handler, context } = this + + if (statusCode < 200) { + if (this.onInfo) { + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.onInfo({ statusCode, headers }) + } + return + } + + this.res = new PipelineResponse(resume) + + let body + try { + this.handler = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + body = this.runInAsyncScope(handler, null, { + statusCode, + headers, + opaque, + body: this.res, + context + }) + } catch (err) { + this.res.on('error', util.nop) + throw err + } + + if (!body || typeof body.on !== 'function') { + throw new InvalidReturnValueError('expected Readable') + } + + body + .on('data', (chunk) => { + const { ret, body } = this + + if (!ret.push(chunk) && body.pause) { + body.pause() + } + }) + .on('error', (err) => { + const { ret } = this + + util.destroy(ret, err) + }) + .on('end', () => { + const { ret } = this + + ret.push(null) + }) + .on('close', () => { + const { ret } = this + + if (!ret._readableState.ended) { + util.destroy(ret, new RequestAbortedError()) + } + }) + + this.body = body + } + + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + res.push(null) + } + + onError (err) { + const { ret } = this + this.handler = null + util.destroy(ret, err) + } +} + +function pipeline (opts, handler) { + try { + const pipelineHandler = new PipelineHandler(opts, handler) + this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler) + return pipelineHandler.ret + } catch (err) { + return new PassThrough().destroy(err) + } +} + +module.exports = pipeline + + +/***/ }), + +/***/ 5448: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Readable = __nccwpck_require__(3858) +const { + InvalidArgumentError, + RequestAbortedError +} = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7474) +const { AsyncResource } = __nccwpck_require__(852) +const { addSignal, removeSignal } = __nccwpck_require__(7032) + +class RequestHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) { + throw new InvalidArgumentError('invalid highWaterMark') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_REQUEST') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.res = null + this.abort = null + this.body = body + this.trailers = {} + this.context = null + this.onInfo = onInfo || null + this.throwOnError = throwOnError + this.highWaterMark = highWaterMark + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + const body = new Readable({ resume, abort, contentType, highWaterMark }) + + this.callback = null + this.res = body + if (callback !== null) { + if (this.throwOnError && statusCode >= 400) { + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body, contentType, statusCode, statusMessage, headers } + ) + } else { + this.runInAsyncScope(callback, null, null, { + statusCode, + headers, + trailers: this.trailers, + opaque, + body, + context + }) + } + } + } + + onData (chunk) { + const { res } = this + return res.push(chunk) + } + + onComplete (trailers) { + const { res } = this + + removeSignal(this) + + util.parseHeaders(trailers, this.trailers) + + res.push(null) + } + + onError (err) { + const { res, callback, body, opaque } = this + + removeSignal(this) + + if (callback) { + // TODO: Does this need queueMicrotask? + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (res) { + this.res = null + // Ensure all queued handlers are invoked before destroying res. + queueMicrotask(() => { + util.destroy(res, err) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } +} + +function request (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + request.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new RequestHandler(opts, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = request +module.exports.RequestHandler = RequestHandler + + +/***/ }), + +/***/ 5395: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { finished, PassThrough } = __nccwpck_require__(2781) +const { + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError +} = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { getResolveErrorBodyCallback } = __nccwpck_require__(7474) +const { AsyncResource } = __nccwpck_require__(852) +const { addSignal, removeSignal } = __nccwpck_require__(7032) + +class StreamHandler extends AsyncResource { + constructor (opts, factory, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts + + try { + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('invalid factory') + } + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + if (method === 'CONNECT') { + throw new InvalidArgumentError('invalid method') + } + + if (onInfo && typeof onInfo !== 'function') { + throw new InvalidArgumentError('invalid onInfo callback') + } + + super('UNDICI_STREAM') + } catch (err) { + if (util.isStream(body)) { + util.destroy(body.on('error', util.nop), err) + } + throw err + } + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.factory = factory + this.callback = callback + this.res = null + this.abort = null + this.context = null + this.trailers = null + this.body = body + this.onInfo = onInfo || null + this.throwOnError = throwOnError || false + + if (util.isStream(body)) { + body.on('error', (err) => { + this.onError(err) + }) + } + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = context + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const { factory, opaque, context, callback, responseHeaders } = this + + const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + + if (statusCode < 200) { + if (this.onInfo) { + this.onInfo({ statusCode, headers }) + } + return + } + + this.factory = null + + let res + + if (this.throwOnError && statusCode >= 400) { + const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers + const contentType = parsedHeaders['content-type'] + res = new PassThrough() + + this.callback = null + this.runInAsyncScope(getResolveErrorBodyCallback, null, + { callback, body: res, contentType, statusCode, statusMessage, headers } + ) + } else { + if (factory === null) { + return + } + + res = this.runInAsyncScope(factory, null, { + statusCode, + headers, + opaque, + context + }) + + if ( + !res || + typeof res.write !== 'function' || + typeof res.end !== 'function' || + typeof res.on !== 'function' + ) { + throw new InvalidReturnValueError('expected Writable') + } + + // TODO: Avoid finished. It registers an unnecessary amount of listeners. + finished(res, { readable: false }, (err) => { + const { callback, res, opaque, trailers, abort } = this + + this.res = null + if (err || !res.readable) { + util.destroy(res, err) + } + + this.callback = null + this.runInAsyncScope(callback, null, err || null, { opaque, trailers }) + + if (err) { + abort() + } + }) + } + + res.on('drain', resume) + + this.res = res + + const needDrain = res.writableNeedDrain !== undefined + ? res.writableNeedDrain + : res._writableState && res._writableState.needDrain + + return needDrain !== true + } + + onData (chunk) { + const { res } = this + + return res ? res.write(chunk) : true + } + + onComplete (trailers) { + const { res } = this + + removeSignal(this) + + if (!res) { + return + } + + this.trailers = util.parseHeaders(trailers) + + res.end() + } + + onError (err) { + const { res, callback, opaque, body } = this + + removeSignal(this) + + this.factory = null + + if (res) { + this.res = null + util.destroy(res, err) + } else if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + + if (body) { + this.body = null + util.destroy(body, err) + } + } +} + +function stream (opts, factory, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + stream.call(this, opts, factory, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + this.dispatch(opts, new StreamHandler(opts, factory, callback)) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = stream + + +/***/ }), + +/***/ 6923: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(8045) +const { AsyncResource } = __nccwpck_require__(852) +const util = __nccwpck_require__(3983) +const { addSignal, removeSignal } = __nccwpck_require__(7032) +const assert = __nccwpck_require__(9491) + +class UpgradeHandler extends AsyncResource { + constructor (opts, callback) { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('invalid opts') + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + const { signal, opaque, responseHeaders } = opts + + if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') { + throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget') + } + + super('UNDICI_UPGRADE') + + this.responseHeaders = responseHeaders || null + this.opaque = opaque || null + this.callback = callback + this.abort = null + this.context = null + + addSignal(this, signal) + } + + onConnect (abort, context) { + if (!this.callback) { + throw new RequestAbortedError() + } + + this.abort = abort + this.context = null + } + + onHeaders () { + throw new SocketError('bad upgrade', null) + } + + onUpgrade (statusCode, rawHeaders, socket) { + const { callback, opaque, context } = this + + assert.strictEqual(statusCode, 101) + + removeSignal(this) + + this.callback = null + const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders) + this.runInAsyncScope(callback, null, null, { + headers, + socket, + opaque, + context + }) + } + + onError (err) { + const { callback, opaque } = this + + removeSignal(this) + + if (callback) { + this.callback = null + queueMicrotask(() => { + this.runInAsyncScope(callback, null, err, { opaque }) + }) + } + } +} + +function upgrade (opts, callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + upgrade.call(this, opts, (err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + try { + const upgradeHandler = new UpgradeHandler(opts, callback) + this.dispatch({ + ...opts, + method: opts.method || 'GET', + upgrade: opts.protocol || 'Websocket' + }, upgradeHandler) + } catch (err) { + if (typeof callback !== 'function') { + throw err + } + const opaque = opts && opts.opaque + queueMicrotask(() => callback(err, { opaque })) + } +} + +module.exports = upgrade + + +/***/ }), + +/***/ 4059: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports.request = __nccwpck_require__(5448) +module.exports.stream = __nccwpck_require__(5395) +module.exports.pipeline = __nccwpck_require__(8752) +module.exports.upgrade = __nccwpck_require__(6923) +module.exports.connect = __nccwpck_require__(9744) + + +/***/ }), + +/***/ 3858: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// Ported from https://github.com/nodejs/undici/pull/907 + + + +const assert = __nccwpck_require__(9491) +const { Readable } = __nccwpck_require__(2781) +const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(3983) + +let Blob + +const kConsume = Symbol('kConsume') +const kReading = Symbol('kReading') +const kBody = Symbol('kBody') +const kAbort = Symbol('abort') +const kContentType = Symbol('kContentType') + +const noop = () => {} + +module.exports = class BodyReadable extends Readable { + constructor ({ + resume, + abort, + contentType = '', + highWaterMark = 64 * 1024 // Same as nodejs fs streams. + }) { + super({ + autoDestroy: true, + read: resume, + highWaterMark + }) + + this._readableState.dataEmitted = false + + this[kAbort] = abort + this[kConsume] = null + this[kBody] = null + this[kContentType] = contentType + + // Is stream being consumed through Readable API? + // This is an optimization so that we avoid checking + // for 'data' and 'readable' listeners in the hot path + // inside push(). + this[kReading] = false + } + + destroy (err) { + if (this.destroyed) { + // Node < 16 + return this + } + + if (!err && !this._readableState.endEmitted) { + err = new RequestAbortedError() + } + + if (err) { + this[kAbort]() + } + + return super.destroy(err) + } + + emit (ev, ...args) { + if (ev === 'data') { + // Node < 16.7 + this._readableState.dataEmitted = true + } else if (ev === 'error') { + // Node < 16 + this._readableState.errorEmitted = true + } + return super.emit(ev, ...args) + } + + on (ev, ...args) { + if (ev === 'data' || ev === 'readable') { + this[kReading] = true + } + return super.on(ev, ...args) + } + + addListener (ev, ...args) { + return this.on(ev, ...args) + } + + off (ev, ...args) { + const ret = super.off(ev, ...args) + if (ev === 'data' || ev === 'readable') { + this[kReading] = ( + this.listenerCount('data') > 0 || + this.listenerCount('readable') > 0 + ) + } + return ret + } + + removeListener (ev, ...args) { + return this.off(ev, ...args) + } + + push (chunk) { + if (this[kConsume] && chunk !== null && this.readableLength === 0) { + consumePush(this[kConsume], chunk) + return this[kReading] ? super.push(chunk) : true + } + return super.push(chunk) + } + + // https://fetch.spec.whatwg.org/#dom-body-text + async text () { + return consume(this, 'text') + } + + // https://fetch.spec.whatwg.org/#dom-body-json + async json () { + return consume(this, 'json') + } + + // https://fetch.spec.whatwg.org/#dom-body-blob + async blob () { + return consume(this, 'blob') + } + + // https://fetch.spec.whatwg.org/#dom-body-arraybuffer + async arrayBuffer () { + return consume(this, 'arrayBuffer') + } + + // https://fetch.spec.whatwg.org/#dom-body-formdata + async formData () { + // TODO: Implement. + throw new NotSupportedError() + } + + // https://fetch.spec.whatwg.org/#dom-body-bodyused + get bodyUsed () { + return util.isDisturbed(this) + } + + // https://fetch.spec.whatwg.org/#dom-body-body + get body () { + if (!this[kBody]) { + this[kBody] = ReadableStreamFrom(this) + if (this[kConsume]) { + // TODO: Is this the best way to force a lock? + this[kBody].getReader() // Ensure stream is locked. + assert(this[kBody].locked) + } + } + return this[kBody] + } + + dump (opts) { + let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144 + const signal = opts && opts.signal + + if (signal) { + try { + if (typeof signal !== 'object' || !('aborted' in signal)) { + throw new InvalidArgumentError('signal must be an AbortSignal') + } + util.throwIfAborted(signal) + } catch (err) { + return Promise.reject(err) + } + } + + if (this.closed) { + return Promise.resolve(null) + } + + return new Promise((resolve, reject) => { + const signalListenerCleanup = signal + ? util.addAbortListener(signal, () => { + this.destroy() + }) + : noop + + this + .on('close', function () { + signalListenerCleanup() + if (signal && signal.aborted) { + reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' })) + } else { + resolve(null) + } + }) + .on('error', noop) + .on('data', function (chunk) { + limit -= chunk.length + if (limit <= 0) { + this.destroy() + } + }) + .resume() + }) + } +} + +// https://streams.spec.whatwg.org/#readablestream-locked +function isLocked (self) { + // Consume is an implicit lock. + return (self[kBody] && self[kBody].locked === true) || self[kConsume] +} + +// https://fetch.spec.whatwg.org/#body-unusable +function isUnusable (self) { + return util.isDisturbed(self) || isLocked(self) +} + +async function consume (stream, type) { + if (isUnusable(stream)) { + throw new TypeError('unusable') + } + + assert(!stream[kConsume]) + + return new Promise((resolve, reject) => { + stream[kConsume] = { + type, + stream, + resolve, + reject, + length: 0, + body: [] + } + + stream + .on('error', function (err) { + consumeFinish(this[kConsume], err) + }) + .on('close', function () { + if (this[kConsume].body !== null) { + consumeFinish(this[kConsume], new RequestAbortedError()) + } + }) + + process.nextTick(consumeStart, stream[kConsume]) + }) +} + +function consumeStart (consume) { + if (consume.body === null) { + return + } + + const { _readableState: state } = consume.stream + + for (const chunk of state.buffer) { + consumePush(consume, chunk) + } + + if (state.endEmitted) { + consumeEnd(this[kConsume]) + } else { + consume.stream.on('end', function () { + consumeEnd(this[kConsume]) + }) + } + + consume.stream.resume() + + while (consume.stream.read() != null) { + // Loop + } +} + +function consumeEnd (consume) { + const { type, body, resolve, stream, length } = consume + + try { + if (type === 'text') { + resolve(toUSVString(Buffer.concat(body))) + } else if (type === 'json') { + resolve(JSON.parse(Buffer.concat(body))) + } else if (type === 'arrayBuffer') { + const dst = new Uint8Array(length) + + let pos = 0 + for (const buf of body) { + dst.set(buf, pos) + pos += buf.byteLength + } + + resolve(dst.buffer) + } else if (type === 'blob') { + if (!Blob) { + Blob = (__nccwpck_require__(4300).Blob) + } + resolve(new Blob(body, { type: stream[kContentType] })) + } + + consumeFinish(consume) + } catch (err) { + stream.destroy(err) + } +} + +function consumePush (consume, chunk) { + consume.length += chunk.length + consume.body.push(chunk) +} + +function consumeFinish (consume, err) { + if (consume.body === null) { + return + } + + if (err) { + consume.reject(err) + } else { + consume.resolve() + } + + consume.type = null + consume.stream = null + consume.resolve = null + consume.reject = null + consume.length = 0 + consume.body = null +} + + +/***/ }), + +/***/ 7474: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(9491) +const { + ResponseStatusCodeError +} = __nccwpck_require__(8045) +const { toUSVString } = __nccwpck_require__(3983) + +async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) { + assert(body) + + let chunks = [] + let limit = 0 + + for await (const chunk of body) { + chunks.push(chunk) + limit += chunk.length + if (limit > 128 * 1024) { + chunks = null + break + } + } + + if (statusCode === 204 || !contentType || !chunks) { + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) + return + } + + try { + if (contentType.startsWith('application/json')) { + const payload = JSON.parse(toUSVString(Buffer.concat(chunks))) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + + if (contentType.startsWith('text/')) { + const payload = toUSVString(Buffer.concat(chunks)) + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload)) + return + } + } catch (err) { + // Process in a fallback if error + } + + process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers)) +} + +module.exports = { getResolveErrorBodyCallback } + + +/***/ }), + +/***/ 7931: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + BalancedPoolMissingUpstreamError, + InvalidArgumentError +} = __nccwpck_require__(8045) +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} = __nccwpck_require__(3198) +const Pool = __nccwpck_require__(4634) +const { kUrl, kInterceptors } = __nccwpck_require__(2785) +const { parseOrigin } = __nccwpck_require__(3983) +const kFactory = Symbol('factory') + +const kOptions = Symbol('options') +const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor') +const kCurrentWeight = Symbol('kCurrentWeight') +const kIndex = Symbol('kIndex') +const kWeight = Symbol('kWeight') +const kMaxWeightPerServer = Symbol('kMaxWeightPerServer') +const kErrorPenalty = Symbol('kErrorPenalty') + +function getGreatestCommonDivisor (a, b) { + if (b === 0) return a + return getGreatestCommonDivisor(b, a % b) +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class BalancedPool extends PoolBase { + constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) { + super() + + this[kOptions] = opts + this[kIndex] = -1 + this[kCurrentWeight] = 0 + + this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100 + this[kErrorPenalty] = this[kOptions].errorPenalty || 15 + + if (!Array.isArray(upstreams)) { + upstreams = [upstreams] + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool) + ? opts.interceptors.BalancedPool + : [] + this[kFactory] = factory + + for (const upstream of upstreams) { + this.addUpstream(upstream) + } + this._updateBalancedPoolStats() + } + + addUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + if (this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + ))) { + return this + } + const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions])) + + this[kAddClient](pool) + pool.on('connect', () => { + pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty]) + }) + + pool.on('connectionError', () => { + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + }) + + pool.on('disconnect', (...args) => { + const err = args[2] + if (err && err.code === 'UND_ERR_SOCKET') { + // decrease the weight of the pool. + pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty]) + this._updateBalancedPoolStats() + } + }) + + for (const client of this[kClients]) { + client[kWeight] = this[kMaxWeightPerServer] + } + + this._updateBalancedPoolStats() + + return this + } + + _updateBalancedPoolStats () { + this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0) + } + + removeUpstream (upstream) { + const upstreamOrigin = parseOrigin(upstream).origin + + const pool = this[kClients].find((pool) => ( + pool[kUrl].origin === upstreamOrigin && + pool.closed !== true && + pool.destroyed !== true + )) + + if (pool) { + this[kRemoveClient](pool) + } + + return this + } + + get upstreams () { + return this[kClients] + .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true) + .map((p) => p[kUrl].origin) + } + + [kGetDispatcher] () { + // We validate that pools is greater than 0, + // otherwise we would have to wait until an upstream + // is added, which might never happen. + if (this[kClients].length === 0) { + throw new BalancedPoolMissingUpstreamError() + } + + const dispatcher = this[kClients].find(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + + if (!dispatcher) { + return + } + + const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true) + + if (allClientsBusy) { + return + } + + let counter = 0 + + let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain]) + + while (counter++ < this[kClients].length) { + this[kIndex] = (this[kIndex] + 1) % this[kClients].length + const pool = this[kClients][this[kIndex]] + + // find pool index with the largest weight + if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) { + maxWeightIndex = this[kIndex] + } + + // decrease the current weight every `this[kClients].length`. + if (this[kIndex] === 0) { + // Set the current weight to the next lower weight. + this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor] + + if (this[kCurrentWeight] <= 0) { + this[kCurrentWeight] = this[kMaxWeightPerServer] + } + } + if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) { + return pool + } + } + + this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight] + this[kIndex] = maxWeightIndex + return this[kClients][maxWeightIndex] + } +} + +module.exports = BalancedPool + + +/***/ }), + +/***/ 6101: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kConstruct } = __nccwpck_require__(9174) +const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(2396) +const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(3983) +const { kHeadersList } = __nccwpck_require__(2785) +const { webidl } = __nccwpck_require__(1744) +const { Response, cloneResponse } = __nccwpck_require__(7823) +const { Request } = __nccwpck_require__(8359) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861) +const { fetching } = __nccwpck_require__(4881) +const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(2538) +const assert = __nccwpck_require__(9491) +const { getGlobalDispatcher } = __nccwpck_require__(1892) + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation + * @typedef {Object} CacheBatchOperation + * @property {'delete' | 'put'} type + * @property {any} request + * @property {any} response + * @property {import('../../types/cache').CacheQueryOptions} options + */ + +/** + * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list + * @typedef {[any, any][]} requestResponseList + */ + +class Cache { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list + * @type {requestResponseList} + */ + #relevantRequestResponseList + + constructor () { + if (arguments[0] !== kConstruct) { + webidl.illegalConstructor() + } + + this.#relevantRequestResponseList = arguments[1] + } + + async match (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' }) + + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + const p = await this.matchAll(request, options) + + if (p.length === 0) { + return + } + + return p[0] + } + + async matchAll (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + // 1. + let r = null + + // 2. + if (request !== undefined) { + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { + // 2.2.1 + r = new Request(request)[kState] + } + } + + // 5. + // 5.1 + const responses = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + responses.push(requestResponse[1]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + responses.push(requestResponse[1]) + } + } + + // 5.4 + // We don't implement CORs so we don't need to loop over the responses, yay! + + // 5.5.1 + const responseList = [] + + // 5.5.2 + for (const response of responses) { + // 5.5.2.1 + const responseObject = new Response(response.body?.source ?? null) + const body = responseObject[kState].body + responseObject[kState] = response + responseObject[kState].body = body + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + + responseList.push(responseObject) + } + + // 6. + return Object.freeze(responseList) + } + + async add (request) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' }) + + request = webidl.converters.RequestInfo(request) + + // 1. + const requests = [request] + + // 2. + const responseArrayPromise = this.addAll(requests) + + // 3. + return await responseArrayPromise + } + + async addAll (requests) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' }) + + requests = webidl.converters['sequence'](requests) + + // 1. + const responsePromises = [] + + // 2. + const requestList = [] + + // 3. + for (const request of requests) { + if (typeof request === 'string') { + continue + } + + // 3.1 + const r = request[kState] + + // 3.2 + if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme when method is not GET.' + }) + } + } + + // 4. + /** @type {ReturnType[]} */ + const fetchControllers = [] + + // 5. + for (const request of requests) { + // 5.1 + const r = new Request(request)[kState] + + // 5.2 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Expected http/s scheme.' + }) + } + + // 5.4 + r.initiator = 'fetch' + r.destination = 'subresource' + + // 5.5 + requestList.push(r) + + // 5.6 + const responsePromise = createDeferredPromise() + + // 5.7 + fetchControllers.push(fetching({ + request: r, + dispatcher: getGlobalDispatcher(), + processResponse (response) { + // 1. + if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'Received an invalid status code or the request failed.' + })) + } else if (response.headersList.contains('vary')) { // 2. + // 2.1 + const fieldValues = getFieldValues(response.headersList.get('vary')) + + // 2.2 + for (const fieldValue of fieldValues) { + // 2.2.1 + if (fieldValue === '*') { + responsePromise.reject(webidl.errors.exception({ + header: 'Cache.addAll', + message: 'invalid vary field value' + })) + + for (const controller of fetchControllers) { + controller.abort() + } + + return + } + } + } + }, + processResponseEndOfBody (response) { + // 1. + if (response.aborted) { + responsePromise.reject(new DOMException('aborted', 'AbortError')) + return + } + + // 2. + responsePromise.resolve(response) + } + })) + + // 5.8 + responsePromises.push(responsePromise.promise) + } + + // 6. + const p = Promise.all(responsePromises) + + // 7. + const responses = await p + + // 7.1 + const operations = [] + + // 7.2 + let index = 0 + + // 7.3 + for (const response of responses) { + // 7.3.1 + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 7.3.2 + request: requestList[index], // 7.3.3 + response // 7.3.4 + } + + operations.push(operation) // 7.3.5 + + index++ // 7.3.6 + } + + // 7.5 + const cacheJobPromise = createDeferredPromise() + + // 7.6.1 + let errorData = null + + // 7.6.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 7.6.3 + queueMicrotask(() => { + // 7.6.3.1 + if (errorData === null) { + cacheJobPromise.resolve(undefined) + } else { + // 7.6.3.2 + cacheJobPromise.reject(errorData) + } + }) + + // 7.7 + return cacheJobPromise.promise + } + + async put (request, response) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' }) + + request = webidl.converters.RequestInfo(request) + response = webidl.converters.Response(response) + + // 1. + let innerRequest = null + + // 2. + if (request instanceof Request) { + innerRequest = request[kState] + } else { // 3. + innerRequest = new Request(request)[kState] + } + + // 4. + if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Expected an http/s scheme when method is not GET' + }) + } + + // 5. + const innerResponse = response[kState] + + // 6. + if (innerResponse.status === 206) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got 206 status' + }) + } + + // 7. + if (innerResponse.headersList.contains('vary')) { + // 7.1. + const fieldValues = getFieldValues(innerResponse.headersList.get('vary')) + + // 7.2. + for (const fieldValue of fieldValues) { + // 7.2.1 + if (fieldValue === '*') { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Got * vary field value' + }) + } + } + } + + // 8. + if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) { + throw webidl.errors.exception({ + header: 'Cache.put', + message: 'Response body is locked or disturbed' + }) + } + + // 9. + const clonedResponse = cloneResponse(innerResponse) + + // 10. + const bodyReadPromise = createDeferredPromise() + + // 11. + if (innerResponse.body != null) { + // 11.1 + const stream = innerResponse.body.stream + + // 11.2 + const reader = stream.getReader() + + // 11.3 + readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject) + } else { + bodyReadPromise.resolve(undefined) + } + + // 12. + /** @type {CacheBatchOperation[]} */ + const operations = [] + + // 13. + /** @type {CacheBatchOperation} */ + const operation = { + type: 'put', // 14. + request: innerRequest, // 15. + response: clonedResponse // 16. + } + + // 17. + operations.push(operation) + + // 19. + const bytes = await bodyReadPromise.promise + + if (clonedResponse.body != null) { + clonedResponse.body.source = bytes + } + + // 19.1 + const cacheJobPromise = createDeferredPromise() + + // 19.2.1 + let errorData = null + + // 19.2.2 + try { + this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + // 19.2.3 + queueMicrotask(() => { + // 19.2.3.1 + if (errorData === null) { + cacheJobPromise.resolve() + } else { // 19.2.3.2 + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + async delete (request, options = {}) { + webidl.brandCheck(this, Cache) + webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' }) + + request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + /** + * @type {Request} + */ + let r = null + + if (request instanceof Request) { + r = request[kState] + + if (r.method !== 'GET' && !options.ignoreMethod) { + return false + } + } else { + assert(typeof request === 'string') + + r = new Request(request)[kState] + } + + /** @type {CacheBatchOperation[]} */ + const operations = [] + + /** @type {CacheBatchOperation} */ + const operation = { + type: 'delete', + request: r, + options + } + + operations.push(operation) + + const cacheJobPromise = createDeferredPromise() + + let errorData = null + let requestResponses + + try { + requestResponses = this.#batchCacheOperations(operations) + } catch (e) { + errorData = e + } + + queueMicrotask(() => { + if (errorData === null) { + cacheJobPromise.resolve(!!requestResponses?.length) + } else { + cacheJobPromise.reject(errorData) + } + }) + + return cacheJobPromise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys + * @param {any} request + * @param {import('../../types/cache').CacheQueryOptions} options + * @returns {readonly Request[]} + */ + async keys (request = undefined, options = {}) { + webidl.brandCheck(this, Cache) + + if (request !== undefined) request = webidl.converters.RequestInfo(request) + options = webidl.converters.CacheQueryOptions(options) + + // 1. + let r = null + + // 2. + if (request !== undefined) { + // 2.1 + if (request instanceof Request) { + // 2.1.1 + r = request[kState] + + // 2.1.2 + if (r.method !== 'GET' && !options.ignoreMethod) { + return [] + } + } else if (typeof request === 'string') { // 2.2 + r = new Request(request)[kState] + } + } + + // 4. + const promise = createDeferredPromise() + + // 5. + // 5.1 + const requests = [] + + // 5.2 + if (request === undefined) { + // 5.2.1 + for (const requestResponse of this.#relevantRequestResponseList) { + // 5.2.1.1 + requests.push(requestResponse[0]) + } + } else { // 5.3 + // 5.3.1 + const requestResponses = this.#queryCache(r, options) + + // 5.3.2 + for (const requestResponse of requestResponses) { + // 5.3.2.1 + requests.push(requestResponse[0]) + } + } + + // 5.4 + queueMicrotask(() => { + // 5.4.1 + const requestList = [] + + // 5.4.2 + for (const request of requests) { + const requestObject = new Request('https://a') + requestObject[kState] = request + requestObject[kHeaders][kHeadersList] = request.headersList + requestObject[kHeaders][kGuard] = 'immutable' + requestObject[kRealm] = request.client + + // 5.4.2.1 + requestList.push(requestObject) + } + + // 5.4.3 + promise.resolve(Object.freeze(requestList)) + }) + + return promise.promise + } + + /** + * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm + * @param {CacheBatchOperation[]} operations + * @returns {requestResponseList} + */ + #batchCacheOperations (operations) { + // 1. + const cache = this.#relevantRequestResponseList + + // 2. + const backupCache = [...cache] + + // 3. + const addedItems = [] + + // 4.1 + const resultList = [] + + try { + // 4.2 + for (const operation of operations) { + // 4.2.1 + if (operation.type !== 'delete' && operation.type !== 'put') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'operation type does not match "delete" or "put"' + }) + } + + // 4.2.2 + if (operation.type === 'delete' && operation.response != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'delete operation should not have an associated response' + }) + } + + // 4.2.3 + if (this.#queryCache(operation.request, operation.options, addedItems).length) { + throw new DOMException('???', 'InvalidStateError') + } + + // 4.2.4 + let requestResponses + + // 4.2.5 + if (operation.type === 'delete') { + // 4.2.5.1 + requestResponses = this.#queryCache(operation.request, operation.options) + + // TODO: the spec is wrong, this is needed to pass WPTs + if (requestResponses.length === 0) { + return [] + } + + // 4.2.5.2 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.5.2.1 + cache.splice(idx, 1) + } + } else if (operation.type === 'put') { // 4.2.6 + // 4.2.6.1 + if (operation.response == null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'put operation should have an associated response' + }) + } + + // 4.2.6.2 + const r = operation.request + + // 4.2.6.3 + if (!urlIsHttpHttpsScheme(r.url)) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'expected http or https scheme' + }) + } + + // 4.2.6.4 + if (r.method !== 'GET') { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'not get method' + }) + } + + // 4.2.6.5 + if (operation.options != null) { + throw webidl.errors.exception({ + header: 'Cache.#batchCacheOperations', + message: 'options must not be defined' + }) + } + + // 4.2.6.6 + requestResponses = this.#queryCache(operation.request) + + // 4.2.6.7 + for (const requestResponse of requestResponses) { + const idx = cache.indexOf(requestResponse) + assert(idx !== -1) + + // 4.2.6.7.1 + cache.splice(idx, 1) + } + + // 4.2.6.8 + cache.push([operation.request, operation.response]) + + // 4.2.6.10 + addedItems.push([operation.request, operation.response]) + } + + // 4.2.7 + resultList.push([operation.request, operation.response]) + } + + // 4.3 + return resultList + } catch (e) { // 5. + // 5.1 + this.#relevantRequestResponseList.length = 0 + + // 5.2 + this.#relevantRequestResponseList = backupCache + + // 5.3 + throw e + } + } + + /** + * @see https://w3c.github.io/ServiceWorker/#query-cache + * @param {any} requestQuery + * @param {import('../../types/cache').CacheQueryOptions} options + * @param {requestResponseList} targetStorage + * @returns {requestResponseList} + */ + #queryCache (requestQuery, options, targetStorage) { + /** @type {requestResponseList} */ + const resultList = [] + + const storage = targetStorage ?? this.#relevantRequestResponseList + + for (const requestResponse of storage) { + const [cachedRequest, cachedResponse] = requestResponse + if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) { + resultList.push(requestResponse) + } + } + + return resultList + } + + /** + * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm + * @param {any} requestQuery + * @param {any} request + * @param {any | null} response + * @param {import('../../types/cache').CacheQueryOptions | undefined} options + * @returns {boolean} + */ + #requestMatchesCachedItem (requestQuery, request, response = null, options) { + // if (options?.ignoreMethod === false && request.method === 'GET') { + // return false + // } + + const queryURL = new URL(requestQuery.url) + + const cachedURL = new URL(request.url) + + if (options?.ignoreSearch) { + cachedURL.search = '' + + queryURL.search = '' + } + + if (!urlEquals(queryURL, cachedURL, true)) { + return false + } + + if ( + response == null || + options?.ignoreVary || + !response.headersList.contains('vary') + ) { + return true + } + + const fieldValues = getFieldValues(response.headersList.get('vary')) + + for (const fieldValue of fieldValues) { + if (fieldValue === '*') { + return false + } + + const requestValue = request.headersList.get(fieldValue) + const queryValue = requestQuery.headersList.get(fieldValue) + + // If one has the header and the other doesn't, or one has + // a different value than the other, return false + if (requestValue !== queryValue) { + return false + } + } + + return true + } +} + +Object.defineProperties(Cache.prototype, { + [Symbol.toStringTag]: { + value: 'Cache', + configurable: true + }, + match: kEnumerableProperty, + matchAll: kEnumerableProperty, + add: kEnumerableProperty, + addAll: kEnumerableProperty, + put: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +const cacheQueryOptionConverters = [ + { + key: 'ignoreSearch', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreMethod', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'ignoreVary', + converter: webidl.converters.boolean, + defaultValue: false + } +] + +webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters) + +webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([ + ...cacheQueryOptionConverters, + { + key: 'cacheName', + converter: webidl.converters.DOMString + } +]) + +webidl.converters.Response = webidl.interfaceConverter(Response) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.RequestInfo +) + +module.exports = { + Cache +} + + +/***/ }), + +/***/ 7907: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kConstruct } = __nccwpck_require__(9174) +const { Cache } = __nccwpck_require__(6101) +const { webidl } = __nccwpck_require__(1744) +const { kEnumerableProperty } = __nccwpck_require__(3983) + +class CacheStorage { + /** + * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map + * @type {Map} + */ + async has (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' }) + + cacheName = webidl.converters.DOMString(cacheName) + + // 2.1.1 + // 2.2 + return this.#caches.has(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open + * @param {string} cacheName + * @returns {Promise} + */ + async open (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' }) + + cacheName = webidl.converters.DOMString(cacheName) + + // 2.1 + if (this.#caches.has(cacheName)) { + // await caches.open('v1') !== await caches.open('v1') + + // 2.1.1 + const cache = this.#caches.get(cacheName) + + // 2.1.1.1 + return new Cache(kConstruct, cache) + } + + // 2.2 + const cache = [] + + // 2.3 + this.#caches.set(cacheName, cache) + + // 2.4 + return new Cache(kConstruct, cache) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete + * @param {string} cacheName + * @returns {Promise} + */ + async delete (cacheName) { + webidl.brandCheck(this, CacheStorage) + webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' }) + + cacheName = webidl.converters.DOMString(cacheName) + + return this.#caches.delete(cacheName) + } + + /** + * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys + * @returns {string[]} + */ + async keys () { + webidl.brandCheck(this, CacheStorage) + + // 2.1 + const keys = this.#caches.keys() + + // 2.2 + return [...keys] + } +} + +Object.defineProperties(CacheStorage.prototype, { + [Symbol.toStringTag]: { + value: 'CacheStorage', + configurable: true + }, + match: kEnumerableProperty, + has: kEnumerableProperty, + open: kEnumerableProperty, + delete: kEnumerableProperty, + keys: kEnumerableProperty +}) + +module.exports = { + CacheStorage +} + + +/***/ }), + +/***/ 9174: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +module.exports = { + kConstruct: (__nccwpck_require__(2785).kConstruct) +} + + +/***/ }), + +/***/ 2396: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(9491) +const { URLSerializer } = __nccwpck_require__(685) +const { isValidHeaderName } = __nccwpck_require__(2538) + +/** + * @see https://url.spec.whatwg.org/#concept-url-equals + * @param {URL} A + * @param {URL} B + * @param {boolean | undefined} excludeFragment + * @returns {boolean} + */ +function urlEquals (A, B, excludeFragment = false) { + const serializedA = URLSerializer(A, excludeFragment) + + const serializedB = URLSerializer(B, excludeFragment) + + return serializedA === serializedB +} + +/** + * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262 + * @param {string} header + */ +function fieldValues (header) { + assert(header !== null) + + const values = [] + + for (let value of header.split(',')) { + value = value.trim() + + if (!value.length) { + continue + } else if (!isValidHeaderName(value)) { + continue + } + + values.push(value) + } + + return values +} + +module.exports = { + urlEquals, + fieldValues +} + + +/***/ }), + +/***/ 3598: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// @ts-check + + + +/* global WebAssembly */ + +const assert = __nccwpck_require__(9491) +const net = __nccwpck_require__(1808) +const http = __nccwpck_require__(3685) +const { pipeline } = __nccwpck_require__(2781) +const util = __nccwpck_require__(3983) +const timers = __nccwpck_require__(9459) +const Request = __nccwpck_require__(2905) +const DispatcherBase = __nccwpck_require__(4839) +const { + RequestContentLengthMismatchError, + ResponseContentLengthMismatchError, + InvalidArgumentError, + RequestAbortedError, + HeadersTimeoutError, + HeadersOverflowError, + SocketError, + InformationalError, + BodyTimeoutError, + HTTPParserError, + ResponseExceededMaxSizeError, + ClientDestroyedError +} = __nccwpck_require__(8045) +const buildConnector = __nccwpck_require__(2067) +const { + kUrl, + kReset, + kServerName, + kClient, + kBusy, + kParser, + kConnect, + kBlocking, + kResuming, + kRunning, + kPending, + kSize, + kWriting, + kQueue, + kConnected, + kConnecting, + kNeedDrain, + kNoRef, + kKeepAliveDefaultTimeout, + kHostHeader, + kPendingIdx, + kRunningIdx, + kError, + kPipelining, + kSocket, + kKeepAliveTimeoutValue, + kMaxHeadersSize, + kKeepAliveMaxTimeout, + kKeepAliveTimeoutThreshold, + kHeadersTimeout, + kBodyTimeout, + kStrictContentLength, + kConnector, + kMaxRedirections, + kMaxRequests, + kCounter, + kClose, + kDestroy, + kDispatch, + kInterceptors, + kLocalAddress, + kMaxResponseSize, + kHTTPConnVersion, + // HTTP2 + kHost, + kHTTP2Session, + kHTTP2SessionState, + kHTTP2BuildRequest, + kHTTP2CopyHeaders, + kHTTP1BuildRequest +} = __nccwpck_require__(2785) + +/** @type {import('http2')} */ +let http2 +try { + http2 = __nccwpck_require__(5158) +} catch { + // @ts-ignore + http2 = { constants: {} } +} + +const { + constants: { + HTTP2_HEADER_AUTHORITY, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_CONTENT_LENGTH, + HTTP2_HEADER_EXPECT, + HTTP2_HEADER_STATUS + } +} = http2 + +// Experimental +let h2ExperimentalWarned = false + +const FastBuffer = Buffer[Symbol.species] + +const kClosedResolve = Symbol('kClosedResolve') + +const channels = {} + +try { + const diagnosticsChannel = __nccwpck_require__(7643) + channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders') + channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect') + channels.connectError = diagnosticsChannel.channel('undici:client:connectError') + channels.connected = diagnosticsChannel.channel('undici:client:connected') +} catch { + channels.sendHeaders = { hasSubscribers: false } + channels.beforeConnect = { hasSubscribers: false } + channels.connectError = { hasSubscribers: false } + channels.connected = { hasSubscribers: false } +} + +/** + * @type {import('../types/client').default} + */ +class Client extends DispatcherBase { + /** + * + * @param {string|URL} url + * @param {import('../types/client').Client.Options} options + */ + constructor (url, { + interceptors, + maxHeaderSize, + headersTimeout, + socketTimeout, + requestTimeout, + connectTimeout, + bodyTimeout, + idleTimeout, + keepAlive, + keepAliveTimeout, + maxKeepAliveTimeout, + keepAliveMaxTimeout, + keepAliveTimeoutThreshold, + socketPath, + pipelining, + tls, + strictContentLength, + maxCachedSessions, + maxRedirections, + connect, + maxRequestsPerClient, + localAddress, + maxResponseSize, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + // h2 + allowH2, + maxConcurrentStreams + } = {}) { + super() + + if (keepAlive !== undefined) { + throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead') + } + + if (socketTimeout !== undefined) { + throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead') + } + + if (requestTimeout !== undefined) { + throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead') + } + + if (idleTimeout !== undefined) { + throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead') + } + + if (maxKeepAliveTimeout !== undefined) { + throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead') + } + + if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) { + throw new InvalidArgumentError('invalid maxHeaderSize') + } + + if (socketPath != null && typeof socketPath !== 'string') { + throw new InvalidArgumentError('invalid socketPath') + } + + if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) { + throw new InvalidArgumentError('invalid connectTimeout') + } + + if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveTimeout') + } + + if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) { + throw new InvalidArgumentError('invalid keepAliveMaxTimeout') + } + + if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) { + throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold') + } + + if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('headersTimeout must be a positive integer or zero') + } + + if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) { + throw new InvalidArgumentError('maxRequestsPerClient must be a positive number') + } + + if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) { + throw new InvalidArgumentError('localAddress must be valid string IP address') + } + + if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) { + throw new InvalidArgumentError('maxResponseSize must be a positive number') + } + + if ( + autoSelectFamilyAttemptTimeout != null && + (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1) + ) { + throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number') + } + + // h2 + if (allowH2 != null && typeof allowH2 !== 'boolean') { + throw new InvalidArgumentError('allowH2 must be a valid boolean value') + } + + if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) { + throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client) + ? interceptors.Client + : [createRedirectInterceptor({ maxRedirections })] + this[kUrl] = util.parseOrigin(url) + this[kConnector] = connect + this[kSocket] = null + this[kPipelining] = pipelining != null ? pipelining : 1 + this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize + this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout + this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout + this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold + this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout] + this[kServerName] = null + this[kLocalAddress] = localAddress != null ? localAddress : null + this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming + this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n` + this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3 + this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3 + this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength + this[kMaxRedirections] = maxRedirections + this[kMaxRequests] = maxRequestsPerClient + this[kClosedResolve] = null + this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1 + this[kHTTPConnVersion] = 'h1' + + // HTTP/2 + this[kHTTP2Session] = null + this[kHTTP2SessionState] = !allowH2 + ? null + : { + // streams: null, // Fixed queue of streams - For future support of `push` + openStreams: 0, // Keep track of them to decide wether or not unref the session + maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server + } + this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}` + + // kQueue is built up of 3 sections separated by + // the kRunningIdx and kPendingIdx indices. + // | complete | running | pending | + // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length + // kRunningIdx points to the first running element. + // kPendingIdx points to the first pending element. + // This implements a fast queue with an amortized + // time of O(1). + + this[kQueue] = [] + this[kRunningIdx] = 0 + this[kPendingIdx] = 0 + } + + get pipelining () { + return this[kPipelining] + } + + set pipelining (value) { + this[kPipelining] = value + resume(this, true) + } + + get [kPending] () { + return this[kQueue].length - this[kPendingIdx] + } + + get [kRunning] () { + return this[kPendingIdx] - this[kRunningIdx] + } + + get [kSize] () { + return this[kQueue].length - this[kRunningIdx] + } + + get [kConnected] () { + return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed + } + + get [kBusy] () { + const socket = this[kSocket] + return ( + (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) || + (this[kSize] >= (this[kPipelining] || 1)) || + this[kPending] > 0 + ) + } + + /* istanbul ignore: only used for test */ + [kConnect] (cb) { + connect(this) + this.once('connect', cb) + } + + [kDispatch] (opts, handler) { + const origin = opts.origin || this[kUrl].origin + + const request = this[kHTTPConnVersion] === 'h2' + ? Request[kHTTP2BuildRequest](origin, opts, handler) + : Request[kHTTP1BuildRequest](origin, opts, handler) + + this[kQueue].push(request) + if (this[kResuming]) { + // Do nothing. + } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) { + // Wait a tick in case stream/iterator is ended in the same tick. + this[kResuming] = 1 + process.nextTick(resume, this) + } else { + resume(this, true) + } + + if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) { + this[kNeedDrain] = 2 + } + + return this[kNeedDrain] < 2 + } + + async [kClose] () { + // TODO: for H2 we need to gracefully flush the remaining enqueued + // request and close each stream. + return new Promise((resolve) => { + if (!this[kSize]) { + resolve(null) + } else { + this[kClosedResolve] = resolve + } + }) + } + + async [kDestroy] (err) { + return new Promise((resolve) => { + const requests = this[kQueue].splice(this[kPendingIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + + const callback = () => { + if (this[kClosedResolve]) { + // TODO (fix): Should we error here with ClientDestroyedError? + this[kClosedResolve]() + this[kClosedResolve] = null + } + resolve() + } + + if (this[kHTTP2Session] != null) { + util.destroy(this[kHTTP2Session], err) + this[kHTTP2Session] = null + this[kHTTP2SessionState] = null + } + + if (!this[kSocket]) { + queueMicrotask(callback) + } else { + util.destroy(this[kSocket].on('close', callback), err) + } + + resume(this) + }) + } +} + +function onHttp2SessionError (err) { + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + this[kSocket][kError] = err + + onError(this[kClient], err) +} + +function onHttp2FrameError (type, code, id) { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + + if (id === 0) { + this[kSocket][kError] = err + onError(this[kClient], err) + } +} + +function onHttp2SessionEnd () { + util.destroy(this, new SocketError('other side closed')) + util.destroy(this[kSocket], new SocketError('other side closed')) +} + +function onHTTP2GoAway (code) { + const client = this[kClient] + const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`) + client[kSocket] = null + client[kHTTP2Session] = null + + if (client.destroyed) { + assert(this[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(this, request, err) + } + } else if (client[kRunning] > 0) { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + + errorRequest(client, request, err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', + client[kUrl], + [client], + err + ) + + resume(client) +} + +const constants = __nccwpck_require__(953) +const createRedirectInterceptor = __nccwpck_require__(8861) +const EMPTY_BUF = Buffer.alloc(0) + +async function lazyllhttp () { + const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(1145) : undefined + + let mod + try { + mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(5627), 'base64')) + } catch (e) { + /* istanbul ignore next */ + + // We could check if the error was caused by the simd option not + // being enabled, but the occurring of this other error + // * https://github.com/emscripten-core/emscripten/issues/11495 + // got me to remove that check to avoid breaking Node 12. + mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(1145), 'base64')) + } + + return await WebAssembly.instantiate(mod, { + env: { + /* eslint-disable camelcase */ + + wasm_on_url: (p, at, len) => { + /* istanbul ignore next */ + return 0 + }, + wasm_on_status: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_begin: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageBegin() || 0 + }, + wasm_on_header_field: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_header_value: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0 + }, + wasm_on_body: (p, at, len) => { + assert.strictEqual(currentParser.ptr, p) + const start = at - currentBufferPtr + currentBufferRef.byteOffset + return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0 + }, + wasm_on_message_complete: (p) => { + assert.strictEqual(currentParser.ptr, p) + return currentParser.onMessageComplete() || 0 + } + + /* eslint-enable camelcase */ + } + }) +} + +let llhttpInstance = null +let llhttpPromise = lazyllhttp() +llhttpPromise.catch() + +let currentParser = null +let currentBufferRef = null +let currentBufferSize = 0 +let currentBufferPtr = null + +const TIMEOUT_HEADERS = 1 +const TIMEOUT_BODY = 2 +const TIMEOUT_IDLE = 3 + +class Parser { + constructor (client, socket, { exports }) { + assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0) + + this.llhttp = exports + this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE) + this.client = client + this.socket = socket + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + this.statusCode = null + this.statusText = '' + this.upgrade = false + this.headers = [] + this.headersSize = 0 + this.headersMaxSize = client[kMaxHeadersSize] + this.shouldKeepAlive = false + this.paused = false + this.resume = this.resume.bind(this) + + this.bytesRead = 0 + + this.keepAlive = '' + this.contentLength = '' + this.connection = '' + this.maxResponseSize = client[kMaxResponseSize] + } + + setTimeout (value, type) { + this.timeoutType = type + if (value !== this.timeoutValue) { + timers.clearTimeout(this.timeout) + if (value) { + this.timeout = timers.setTimeout(onParserTimeout, value, this) + // istanbul ignore else: only for jest + if (this.timeout.unref) { + this.timeout.unref() + } + } else { + this.timeout = null + } + this.timeoutValue = value + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + } + + resume () { + if (this.socket.destroyed || !this.paused) { + return + } + + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_resume(this.ptr) + + assert(this.timeoutType === TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + this.paused = false + this.execute(this.socket.read() || EMPTY_BUF) // Flush parser. + this.readMore() + } + + readMore () { + while (!this.paused && this.ptr) { + const chunk = this.socket.read() + if (chunk === null) { + break + } + this.execute(chunk) + } + } + + execute (data) { + assert(this.ptr != null) + assert(currentParser == null) + assert(!this.paused) + + const { socket, llhttp } = this + + if (data.length > currentBufferSize) { + if (currentBufferPtr) { + llhttp.free(currentBufferPtr) + } + currentBufferSize = Math.ceil(data.length / 4096) * 4096 + currentBufferPtr = llhttp.malloc(currentBufferSize) + } + + new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data) + + // Call `execute` on the wasm parser. + // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data, + // and finally the length of bytes to parse. + // The return value is an error code or `constants.ERROR.OK`. + try { + let ret + + try { + currentBufferRef = data + currentParser = this + ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length) + /* eslint-disable-next-line no-useless-catch */ + } catch (err) { + /* istanbul ignore next: difficult to make a test case for */ + throw err + } finally { + currentParser = null + currentBufferRef = null + } + + const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr + + if (ret === constants.ERROR.PAUSED_UPGRADE) { + this.onUpgrade(data.slice(offset)) + } else if (ret === constants.ERROR.PAUSED) { + this.paused = true + socket.unshift(data.slice(offset)) + } else if (ret !== constants.ERROR.OK) { + const ptr = llhttp.llhttp_get_error_reason(this.ptr) + let message = '' + /* istanbul ignore else: difficult to make a test case for */ + if (ptr) { + const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0) + message = + 'Response does not match the HTTP/1.1 protocol (' + + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + + ')' + } + throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset)) + } + } catch (err) { + util.destroy(socket, err) + } + } + + destroy () { + assert(this.ptr != null) + assert(currentParser == null) + + this.llhttp.llhttp_free(this.ptr) + this.ptr = null + + timers.clearTimeout(this.timeout) + this.timeout = null + this.timeoutValue = null + this.timeoutType = null + + this.paused = false + } + + onStatus (buf) { + this.statusText = buf.toString() + } + + onMessageBegin () { + const { socket, client } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + if (!request) { + return -1 + } + } + + onHeaderField (buf) { + const len = this.headers.length + + if ((len & 1) === 0) { + this.headers.push(buf) + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + this.trackHeader(buf.length) + } + + onHeaderValue (buf) { + let len = this.headers.length + + if ((len & 1) === 1) { + this.headers.push(buf) + len += 1 + } else { + this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf]) + } + + const key = this.headers[len - 2] + if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') { + this.keepAlive += buf.toString() + } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') { + this.connection += buf.toString() + } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') { + this.contentLength += buf.toString() + } + + this.trackHeader(buf.length) + } + + trackHeader (len) { + this.headersSize += len + if (this.headersSize >= this.headersMaxSize) { + util.destroy(this.socket, new HeadersOverflowError()) + } + } + + onUpgrade (head) { + const { upgrade, client, socket, headers, statusCode } = this + + assert(upgrade) + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert(!socket.destroyed) + assert(socket === client[kSocket]) + assert(!this.paused) + assert(request.upgrade || request.method === 'CONNECT') + + this.statusCode = null + this.statusText = '' + this.shouldKeepAlive = null + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + socket.unshift(head) + + socket[kParser].destroy() + socket[kParser] = null + + socket[kClient] = null + socket[kError] = null + socket + .removeListener('error', onSocketError) + .removeListener('readable', onSocketReadable) + .removeListener('end', onSocketEnd) + .removeListener('close', onSocketClose) + + client[kSocket] = null + client[kQueue][client[kRunningIdx]++] = null + client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade')) + + try { + request.onUpgrade(statusCode, headers, socket) + } catch (err) { + util.destroy(socket, err) + } + + resume(client) + } + + onHeadersComplete (statusCode, upgrade, shouldKeepAlive) { + const { client, socket, headers, statusText } = this + + /* istanbul ignore next: difficult to make a test case for */ + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + + /* istanbul ignore next: difficult to make a test case for */ + if (!request) { + return -1 + } + + assert(!this.upgrade) + assert(this.statusCode < 200) + + if (statusCode === 100) { + util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket))) + return -1 + } + + /* this can only happen if server is misbehaving */ + if (upgrade && !request.upgrade) { + util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket))) + return -1 + } + + assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS) + + this.statusCode = statusCode + this.shouldKeepAlive = ( + shouldKeepAlive || + // Override llhttp value which does not allow keepAlive for HEAD. + (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive') + ) + + if (this.statusCode >= 200) { + const bodyTimeout = request.bodyTimeout != null + ? request.bodyTimeout + : client[kBodyTimeout] + this.setTimeout(bodyTimeout, TIMEOUT_BODY) + } else if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + if (request.method === 'CONNECT') { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + if (upgrade) { + assert(client[kRunning] === 1) + this.upgrade = true + return 2 + } + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + if (this.shouldKeepAlive && client[kPipelining]) { + const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null + + if (keepAliveTimeout != null) { + const timeout = Math.min( + keepAliveTimeout - client[kKeepAliveTimeoutThreshold], + client[kKeepAliveMaxTimeout] + ) + if (timeout <= 0) { + socket[kReset] = true + } else { + client[kKeepAliveTimeoutValue] = timeout + } + } else { + client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout] + } + } else { + // Stop more requests from being dispatched. + socket[kReset] = true + } + + const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false + + if (request.aborted) { + return -1 + } + + if (request.method === 'HEAD') { + return 1 + } + + if (statusCode < 200) { + return 1 + } + + if (socket[kBlocking]) { + socket[kBlocking] = false + resume(client) + } + + return pause ? constants.ERROR.PAUSED : 0 + } + + onBody (buf) { + const { client, socket, statusCode, maxResponseSize } = this + + if (socket.destroyed) { + return -1 + } + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert.strictEqual(this.timeoutType, TIMEOUT_BODY) + if (this.timeout) { + // istanbul ignore else: only for jest + if (this.timeout.refresh) { + this.timeout.refresh() + } + } + + assert(statusCode >= 200) + + if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) { + util.destroy(socket, new ResponseExceededMaxSizeError()) + return -1 + } + + this.bytesRead += buf.length + + if (request.onData(buf) === false) { + return constants.ERROR.PAUSED + } + } + + onMessageComplete () { + const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this + + if (socket.destroyed && (!statusCode || shouldKeepAlive)) { + return -1 + } + + if (upgrade) { + return + } + + const request = client[kQueue][client[kRunningIdx]] + assert(request) + + assert(statusCode >= 100) + + this.statusCode = null + this.statusText = '' + this.bytesRead = 0 + this.contentLength = '' + this.keepAlive = '' + this.connection = '' + + assert(this.headers.length % 2 === 0) + this.headers = [] + this.headersSize = 0 + + if (statusCode < 200) { + return + } + + /* istanbul ignore next: should be handled by llhttp? */ + if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) { + util.destroy(socket, new ResponseContentLengthMismatchError()) + return -1 + } + + request.onComplete(headers) + + client[kQueue][client[kRunningIdx]++] = null + + if (socket[kWriting]) { + assert.strictEqual(client[kRunning], 0) + // Response completed before request. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (!shouldKeepAlive) { + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (socket[kReset] && client[kRunning] === 0) { + // Destroy socket once all requests have completed. + // The request at the tail of the pipeline is the one + // that requested reset and no further requests should + // have been queued since then. + util.destroy(socket, new InformationalError('reset')) + return constants.ERROR.PAUSED + } else if (client[kPipelining] === 1) { + // We must wait a full event loop cycle to reuse this socket to make sure + // that non-spec compliant servers are not closing the connection even if they + // said they won't. + setImmediate(resume, client) + } else { + resume(client) + } + } +} + +function onParserTimeout (parser) { + const { socket, timeoutType, client } = parser + + /* istanbul ignore else */ + if (timeoutType === TIMEOUT_HEADERS) { + if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) { + assert(!parser.paused, 'cannot be paused while waiting for headers') + util.destroy(socket, new HeadersTimeoutError()) + } + } else if (timeoutType === TIMEOUT_BODY) { + if (!parser.paused) { + util.destroy(socket, new BodyTimeoutError()) + } + } else if (timeoutType === TIMEOUT_IDLE) { + assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]) + util.destroy(socket, new InformationalError('socket idle timeout')) + } +} + +function onSocketReadable () { + const { [kParser]: parser } = this + if (parser) { + parser.readMore() + } +} + +function onSocketError (err) { + const { [kClient]: client, [kParser]: parser } = this + + assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID') + + if (client[kHTTPConnVersion] !== 'h2') { + // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded + // to the user. + if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so for as a valid response. + parser.onMessageComplete() + return + } + } + + this[kError] = err + + onError(this[kClient], err) +} + +function onError (client, err) { + if ( + client[kRunning] === 0 && + err.code !== 'UND_ERR_INFO' && + err.code !== 'UND_ERR_SOCKET' + ) { + // Error is not caused by running request and not a recoverable + // socket error. + + assert(client[kPendingIdx] === client[kRunningIdx]) + + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + assert(client[kSize] === 0) + } +} + +function onSocketEnd () { + const { [kParser]: parser, [kClient]: client } = this + + if (client[kHTTPConnVersion] !== 'h2') { + if (parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + return + } + } + + util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this))) +} + +function onSocketClose () { + const { [kClient]: client, [kParser]: parser } = this + + if (client[kHTTPConnVersion] === 'h1' && parser) { + if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) { + // We treat all incoming data so far as a valid response. + parser.onMessageComplete() + } + + this[kParser].destroy() + this[kParser] = null + } + + const err = this[kError] || new SocketError('closed', util.getSocketInfo(this)) + + client[kSocket] = null + + if (client.destroyed) { + assert(client[kPending] === 0) + + // Fail entire queue. + const requests = client[kQueue].splice(client[kRunningIdx]) + for (let i = 0; i < requests.length; i++) { + const request = requests[i] + errorRequest(client, request, err) + } + } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') { + // Fail head of pipeline. + const request = client[kQueue][client[kRunningIdx]] + client[kQueue][client[kRunningIdx]++] = null + + errorRequest(client, request, err) + } + + client[kPendingIdx] = client[kRunningIdx] + + assert(client[kRunning] === 0) + + client.emit('disconnect', client[kUrl], [client], err) + + resume(client) +} + +async function connect (client) { + assert(!client[kConnecting]) + assert(!client[kSocket]) + + let { host, hostname, protocol, port } = client[kUrl] + + // Resolve ipv6 + if (hostname[0] === '[') { + const idx = hostname.indexOf(']') + + assert(idx !== -1) + const ip = hostname.substring(1, idx) + + assert(net.isIP(ip)) + hostname = ip + } + + client[kConnecting] = true + + if (channels.beforeConnect.hasSubscribers) { + channels.beforeConnect.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector] + }) + } + + try { + const socket = await new Promise((resolve, reject) => { + client[kConnector]({ + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, (err, socket) => { + if (err) { + reject(err) + } else { + resolve(socket) + } + }) + }) + + if (client.destroyed) { + util.destroy(socket.on('error', () => {}), new ClientDestroyedError()) + return + } + + client[kConnecting] = false + + assert(socket) + + const isH2 = socket.alpnProtocol === 'h2' + if (isH2) { + if (!h2ExperimentalWarned) { + h2ExperimentalWarned = true + process.emitWarning('H2 support is experimental, expect them to change at any time.', { + code: 'UNDICI-H2' + }) + } + + const session = http2.connect(client[kUrl], { + createConnection: () => socket, + peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams + }) + + client[kHTTPConnVersion] = 'h2' + session[kClient] = client + session[kSocket] = socket + session.on('error', onHttp2SessionError) + session.on('frameError', onHttp2FrameError) + session.on('end', onHttp2SessionEnd) + session.on('goaway', onHTTP2GoAway) + session.on('close', onSocketClose) + session.unref() + + client[kHTTP2Session] = session + socket[kHTTP2Session] = session + } else { + if (!llhttpInstance) { + llhttpInstance = await llhttpPromise + llhttpPromise = null + } + + socket[kNoRef] = false + socket[kWriting] = false + socket[kReset] = false + socket[kBlocking] = false + socket[kParser] = new Parser(client, socket, llhttpInstance) + } + + socket[kCounter] = 0 + socket[kMaxRequests] = client[kMaxRequests] + socket[kClient] = client + socket[kError] = null + + socket + .on('error', onSocketError) + .on('readable', onSocketReadable) + .on('end', onSocketEnd) + .on('close', onSocketClose) + + client[kSocket] = socket + + if (channels.connected.hasSubscribers) { + channels.connected.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + socket + }) + } + client.emit('connect', client[kUrl], [client]) + } catch (err) { + if (client.destroyed) { + return + } + + client[kConnecting] = false + + if (channels.connectError.hasSubscribers) { + channels.connectError.publish({ + connectParams: { + host, + hostname, + protocol, + port, + servername: client[kServerName], + localAddress: client[kLocalAddress] + }, + connector: client[kConnector], + error: err + }) + } + + if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') { + assert(client[kRunning] === 0) + while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) { + const request = client[kQueue][client[kPendingIdx]++] + errorRequest(client, request, err) + } + } else { + onError(client, err) + } + + client.emit('connectionError', client[kUrl], [client], err) + } + + resume(client) +} + +function emitDrain (client) { + client[kNeedDrain] = 0 + client.emit('drain', client[kUrl], [client]) +} + +function resume (client, sync) { + if (client[kResuming] === 2) { + return + } + + client[kResuming] = 2 + + _resume(client, sync) + client[kResuming] = 0 + + if (client[kRunningIdx] > 256) { + client[kQueue].splice(0, client[kRunningIdx]) + client[kPendingIdx] -= client[kRunningIdx] + client[kRunningIdx] = 0 + } +} + +function _resume (client, sync) { + while (true) { + if (client.destroyed) { + assert(client[kPending] === 0) + return + } + + if (client[kClosedResolve] && !client[kSize]) { + client[kClosedResolve]() + client[kClosedResolve] = null + return + } + + const socket = client[kSocket] + + if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') { + if (client[kSize] === 0) { + if (!socket[kNoRef] && socket.unref) { + socket.unref() + socket[kNoRef] = true + } + } else if (socket[kNoRef] && socket.ref) { + socket.ref() + socket[kNoRef] = false + } + + if (client[kSize] === 0) { + if (socket[kParser].timeoutType !== TIMEOUT_IDLE) { + socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE) + } + } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) { + if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) { + const request = client[kQueue][client[kRunningIdx]] + const headersTimeout = request.headersTimeout != null + ? request.headersTimeout + : client[kHeadersTimeout] + socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS) + } + } + } + + if (client[kBusy]) { + client[kNeedDrain] = 2 + } else if (client[kNeedDrain] === 2) { + if (sync) { + client[kNeedDrain] = 1 + process.nextTick(emitDrain, client) + } else { + emitDrain(client) + } + continue + } + + if (client[kPending] === 0) { + return + } + + if (client[kRunning] >= (client[kPipelining] || 1)) { + return + } + + const request = client[kQueue][client[kPendingIdx]] + + if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) { + if (client[kRunning] > 0) { + return + } + + client[kServerName] = request.servername + + if (socket && socket.servername !== request.servername) { + util.destroy(socket, new InformationalError('servername changed')) + return + } + } + + if (client[kConnecting]) { + return + } + + if (!socket && !client[kHTTP2Session]) { + connect(client) + return + } + + if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) { + return + } + + if (client[kRunning] > 0 && !request.idempotent) { + // Non-idempotent request cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } + + if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) { + // Don't dispatch an upgrade until all preceding requests have completed. + // A misbehaving server might upgrade the connection before all pipelined + // request has completed. + return + } + + if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 && + (util.isStream(request.body) || util.isAsyncIterable(request.body))) { + // Request with stream or iterator body can error while other requests + // are inflight and indirectly error those as well. + // Ensure this doesn't happen by waiting for inflight + // to complete before dispatching. + + // Request with stream or iterator body cannot be retried. + // Ensure that no other requests are inflight and + // could cause failure. + return + } + + if (!request.aborted && write(client, request)) { + client[kPendingIdx]++ + } else { + client[kQueue].splice(client[kPendingIdx], 1) + } + } +} + +// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2 +function shouldSendContentLength (method) { + return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT' +} + +function write (client, request) { + if (client[kHTTPConnVersion] === 'h2') { + writeH2(client, client[kHTTP2Session], request) + return + } + + const { body, method, path, host, upgrade, headers, blocking, reset } = request + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + const bodyLength = util.bodyLength(body) + + let contentLength = bodyLength + + if (contentLength === null) { + contentLength = request.contentLength + } + + if (contentLength === 0 && !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + const socket = client[kSocket] + + try { + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } + + errorRequest(client, request, err || new RequestAbortedError()) + + util.destroy(socket, new InformationalError('aborted')) + }) + } catch (err) { + errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + if (method === 'HEAD') { + // https://github.com/mcollina/undici/issues/258 + // Close after a HEAD request to interop with misbehaving servers + // that may send a body in the response. + + socket[kReset] = true + } + + if (upgrade || method === 'CONNECT') { + // On CONNECT or upgrade, block pipeline from dispatching further + // requests on this connection. + + socket[kReset] = true + } + + if (reset != null) { + socket[kReset] = reset + } + + if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) { + socket[kReset] = true + } + + if (blocking) { + socket[kBlocking] = true + } + + let header = `${method} ${path} HTTP/1.1\r\n` + + if (typeof host === 'string') { + header += `host: ${host}\r\n` + } else { + header += client[kHostHeader] + } + + if (upgrade) { + header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n` + } else if (client[kPipelining] && !socket[kReset]) { + header += 'connection: keep-alive\r\n' + } else { + header += 'connection: close\r\n' + } + + if (headers) { + header += headers + } + + if (channels.sendHeaders.hasSubscribers) { + channels.sendHeaders.publish({ request, headers: header, socket }) + } + + /* istanbul ignore else: assertion */ + if (!body || bodyLength === 0) { + if (contentLength === 0) { + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + assert(contentLength === null, 'no body must not have content length') + socket.write(`${header}\r\n`, 'latin1') + } + request.onRequestSent() + } else if (util.isBuffer(body)) { + assert(contentLength === body.byteLength, 'buffer body must have content length') + + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(body) + socket.uncork() + request.onBodySent(body) + request.onRequestSent() + if (!expectsPayload) { + socket[kReset] = true + } + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload }) + } else { + writeBlob({ body, client, request, socket, contentLength, header, expectsPayload }) + } + } else if (util.isStream(body)) { + writeStream({ body, client, request, socket, contentLength, header, expectsPayload }) + } else if (util.isIterable(body)) { + writeIterable({ body, client, request, socket, contentLength, header, expectsPayload }) + } else { + assert(false) + } + + return true +} + +function writeH2 (client, session, request) { + const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request + + let headers + if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim()) + else headers = reqHeaders + + if (upgrade) { + errorRequest(client, request, new Error('Upgrade not supported for H2')) + return false + } + + try { + // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event? + request.onConnect((err) => { + if (request.aborted || request.completed) { + return + } + + errorRequest(client, request, err || new RequestAbortedError()) + }) + } catch (err) { + errorRequest(client, request, err) + } + + if (request.aborted) { + return false + } + + /** @type {import('node:http2').ClientHttp2Stream} */ + let stream + const h2State = client[kHTTP2SessionState] + + headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost] + headers[HTTP2_HEADER_METHOD] = method + + if (method === 'CONNECT') { + session.ref() + // we are already connected, streams are pending, first request + // will create a new stream. We trigger a request to create the stream and wait until + // `ready` event is triggered + // We disabled endStream to allow the user to write to the stream + stream = session.request(headers, { endStream: false, signal }) + + if (stream.id && !stream.pending) { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + } else { + stream.once('ready', () => { + request.onUpgrade(null, null, stream) + ++h2State.openStreams + }) + } + + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) session.unref() + }) + + return true + } + + // https://tools.ietf.org/html/rfc7540#section-8.3 + // :path and :scheme headers must be omited when sending CONNECT + + headers[HTTP2_HEADER_PATH] = path + headers[HTTP2_HEADER_SCHEME] = 'https' + + // https://tools.ietf.org/html/rfc7231#section-4.3.1 + // https://tools.ietf.org/html/rfc7231#section-4.3.2 + // https://tools.ietf.org/html/rfc7231#section-4.3.5 + + // Sending a payload body on a request that does not + // expect it can cause undefined behavior on some + // servers and corrupt connection state. Do not + // re-use the connection for further requests. + + const expectsPayload = ( + method === 'PUT' || + method === 'POST' || + method === 'PATCH' + ) + + if (body && typeof body.read === 'function') { + // Try to read EOF in order to get length. + body.read(0) + } + + let contentLength = util.bodyLength(body) + + if (contentLength == null) { + contentLength = request.contentLength + } + + if (contentLength === 0 || !expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD NOT send a Content-Length header field when + // the request message does not contain a payload body and the method + // semantics do not anticipate such a body. + + contentLength = null + } + + // https://github.com/nodejs/undici/issues/2046 + // A user agent may send a Content-Length header with 0 value, this should be allowed. + if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) { + if (client[kStrictContentLength]) { + errorRequest(client, request, new RequestContentLengthMismatchError()) + return false + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + if (contentLength != null) { + assert(body, 'no body must not have content length') + headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}` + } + + session.ref() + + const shouldEndStream = method === 'GET' || method === 'HEAD' + if (expectContinue) { + headers[HTTP2_HEADER_EXPECT] = '100-continue' + stream = session.request(headers, { endStream: shouldEndStream, signal }) + + stream.once('continue', writeBodyH2) + } else { + stream = session.request(headers, { + endStream: shouldEndStream, + signal + }) + writeBodyH2() + } + + // Increment counter as we have new several streams open + ++h2State.openStreams + + stream.once('response', headers => { + const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers + + if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) { + stream.pause() + } + }) + + stream.once('end', () => { + request.onComplete([]) + }) + + stream.on('data', (chunk) => { + if (request.onData(chunk) === false) { + stream.pause() + } + }) + + stream.once('close', () => { + h2State.openStreams -= 1 + // TODO(HTTP/2): unref only if current streams count is 0 + if (h2State.openStreams === 0) { + session.unref() + } + }) + + stream.once('error', function (err) { + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + + stream.once('frameError', (type, code) => { + const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`) + errorRequest(client, request, err) + + if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) { + h2State.streams -= 1 + util.destroy(stream, err) + } + }) + + // stream.on('aborted', () => { + // // TODO(HTTP/2): Support aborted + // }) + + // stream.on('timeout', () => { + // // TODO(HTTP/2): Support timeout + // }) + + // stream.on('push', headers => { + // // TODO(HTTP/2): Suppor push + // }) + + // stream.on('trailers', headers => { + // // TODO(HTTP/2): Support trailers + // }) + + return true + + function writeBodyH2 () { + /* istanbul ignore else: assertion */ + if (!body) { + request.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() + request.onBodySent(body) + request.onRequestSent() + } else if (util.isBlobLike(body)) { + if (typeof body.stream === 'function') { + writeIterable({ + client, + request, + contentLength, + h2stream: stream, + expectsPayload, + body: body.stream(), + socket: client[kSocket], + header: '' + }) + } else { + writeBlob({ + body, + client, + request, + contentLength, + expectsPayload, + h2stream: stream, + header: '', + socket: client[kSocket] + }) + } + } else if (util.isStream(body)) { + writeStream({ + body, + client, + request, + contentLength, + expectsPayload, + socket: client[kSocket], + h2stream: stream, + header: '' + }) + } else if (util.isIterable(body)) { + writeIterable({ + body, + client, + request, + contentLength, + expectsPayload, + header: '', + h2stream: stream, + socket: client[kSocket] + }) + } else { + assert(false) + } + } +} + +function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined') + + if (client[kHTTPConnVersion] === 'h2') { + // For HTTP/2, is enough to pipe the stream + const pipe = pipeline( + body, + h2stream, + (err) => { + if (err) { + util.destroy(body, err) + util.destroy(h2stream, err) + } else { + request.onRequestSent() + } + } + ) + + pipe.on('data', onPipeData) + pipe.once('end', () => { + pipe.removeListener('data', onPipeData) + util.destroy(pipe) + }) + + function onPipeData (chunk) { + request.onBodySent(chunk) + } + + return + } + + let finished = false + + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + + const onData = function (chunk) { + if (finished) { + return + } + + try { + if (!writer.write(chunk) && this.pause) { + this.pause() + } + } catch (err) { + util.destroy(this, err) + } + } + const onDrain = function () { + if (finished) { + return + } + + if (body.resume) { + body.resume() + } + } + const onAbort = function () { + if (finished) { + return + } + const err = new RequestAbortedError() + queueMicrotask(() => onFinished(err)) + } + const onFinished = function (err) { + if (finished) { + return + } + + finished = true + + assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1)) + + socket + .off('drain', onDrain) + .off('error', onFinished) + + body + .removeListener('data', onData) + .removeListener('end', onFinished) + .removeListener('error', onFinished) + .removeListener('close', onAbort) + + if (!err) { + try { + writer.end() + } catch (er) { + err = er + } + } + + writer.destroy(err) + + if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) { + util.destroy(body, err) + } else { + util.destroy(body) + } + } + + body + .on('data', onData) + .on('end', onFinished) + .on('error', onFinished) + .on('close', onAbort) + + if (body.resume) { + body.resume() + } + + socket + .on('drain', onDrain) + .on('error', onFinished) +} + +async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength === body.size, 'blob body must have content length') + + const isH2 = client[kHTTPConnVersion] === 'h2' + try { + if (contentLength != null && contentLength !== body.size) { + throw new RequestContentLengthMismatchError() + } + + const buffer = Buffer.from(await body.arrayBuffer()) + + if (isH2) { + h2stream.cork() + h2stream.write(buffer) + h2stream.uncork() + } else { + socket.cork() + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + socket.write(buffer) + socket.uncork() + } + + request.onBodySent(buffer) + request.onRequestSent() + + if (!expectsPayload) { + socket[kReset] = true + } + + resume(client) + } catch (err) { + util.destroy(isH2 ? h2stream : socket, err) + } +} + +async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) { + assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined') + + let callback = null + function onDrain () { + if (callback) { + const cb = callback + callback = null + cb() + } + } + + const waitForDrain = () => new Promise((resolve, reject) => { + assert(callback === null) + + if (socket[kError]) { + reject(socket[kError]) + } else { + callback = resolve + } + }) + + if (client[kHTTPConnVersion] === 'h2') { + h2stream + .on('close', onDrain) + .on('drain', onDrain) + + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + const res = h2stream.write(chunk) + request.onBodySent(chunk) + if (!res) { + await waitForDrain() + } + } + } catch (err) { + h2stream.destroy(err) + } finally { + request.onRequestSent() + h2stream.end() + h2stream + .off('close', onDrain) + .off('drain', onDrain) + } + + return + } + + socket + .on('close', onDrain) + .on('drain', onDrain) + + const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header }) + try { + // It's up to the user to somehow abort the async iterable. + for await (const chunk of body) { + if (socket[kError]) { + throw socket[kError] + } + + if (!writer.write(chunk)) { + await waitForDrain() + } + } + + writer.end() + } catch (err) { + writer.destroy(err) + } finally { + socket + .off('close', onDrain) + .off('drain', onDrain) + } +} + +class AsyncWriter { + constructor ({ socket, request, contentLength, client, expectsPayload, header }) { + this.socket = socket + this.request = request + this.contentLength = contentLength + this.client = client + this.bytesWritten = 0 + this.expectsPayload = expectsPayload + this.header = header + + socket[kWriting] = true + } + + write (chunk) { + const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return false + } + + const len = Buffer.byteLength(chunk) + if (!len) { + return true + } + + // We should defer writing chunks. + if (contentLength !== null && bytesWritten + len > contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } + + process.emitWarning(new RequestContentLengthMismatchError()) + } + + socket.cork() + + if (bytesWritten === 0) { + if (!expectsPayload) { + socket[kReset] = true + } + + if (contentLength === null) { + socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1') + } else { + socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1') + } + } + + if (contentLength === null) { + socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1') + } + + this.bytesWritten += len + + const ret = socket.write(chunk) + + socket.uncork() + + request.onBodySent(chunk) + + if (!ret) { + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + } + + return ret + } + + end () { + const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this + request.onRequestSent() + + socket[kWriting] = false + + if (socket[kError]) { + throw socket[kError] + } + + if (socket.destroyed) { + return + } + + if (bytesWritten === 0) { + if (expectsPayload) { + // https://tools.ietf.org/html/rfc7230#section-3.3.2 + // A user agent SHOULD send a Content-Length in a request message when + // no Transfer-Encoding is sent and the request method defines a meaning + // for an enclosed payload body. + + socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1') + } else { + socket.write(`${header}\r\n`, 'latin1') + } + } else if (contentLength === null) { + socket.write('\r\n0\r\n\r\n', 'latin1') + } + + if (contentLength !== null && bytesWritten !== contentLength) { + if (client[kStrictContentLength]) { + throw new RequestContentLengthMismatchError() + } else { + process.emitWarning(new RequestContentLengthMismatchError()) + } + } + + if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) { + // istanbul ignore else: only for jest + if (socket[kParser].timeout.refresh) { + socket[kParser].timeout.refresh() + } + } + + resume(client) + } + + destroy (err) { + const { socket, client } = this + + socket[kWriting] = false + + if (err) { + assert(client[kRunning] <= 1, 'pipeline should only contain this request') + util.destroy(socket, err) + } + } +} + +function errorRequest (client, request, err) { + try { + request.onError(err) + assert(request.aborted) + } catch (err) { + client.emit('error', err) + } +} + +module.exports = Client + + +/***/ }), + +/***/ 6436: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/* istanbul ignore file: only for Node 12 */ + +const { kConnected, kSize } = __nccwpck_require__(2785) + +class CompatWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value[kConnected] === 0 && this.value[kSize] === 0 + ? undefined + : this.value + } +} + +class CompatFinalizer { + constructor (finalizer) { + this.finalizer = finalizer + } + + register (dispatcher, key) { + if (dispatcher.on) { + dispatcher.on('disconnect', () => { + if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) { + this.finalizer(key) + } + }) + } + } +} + +module.exports = function () { + // FIXME: remove workaround when the Node bug is fixed + // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 + if (process.env.NODE_V8_COVERAGE) { + return { + WeakRef: CompatWeakRef, + FinalizationRegistry: CompatFinalizer + } + } + return { + WeakRef: global.WeakRef || CompatWeakRef, + FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer + } +} + + +/***/ }), + +/***/ 663: +/***/ ((module) => { + +"use strict"; + + +// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size +const maxAttributeValueSize = 1024 + +// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size +const maxNameValuePairSize = 4096 + +module.exports = { + maxAttributeValueSize, + maxNameValuePairSize +} + + +/***/ }), + +/***/ 1724: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { parseSetCookie } = __nccwpck_require__(4408) +const { stringify, getHeadersList } = __nccwpck_require__(3121) +const { webidl } = __nccwpck_require__(1744) +const { Headers } = __nccwpck_require__(554) + +/** + * @typedef {Object} Cookie + * @property {string} name + * @property {string} value + * @property {Date|number|undefined} expires + * @property {number|undefined} maxAge + * @property {string|undefined} domain + * @property {string|undefined} path + * @property {boolean|undefined} secure + * @property {boolean|undefined} httpOnly + * @property {'Strict'|'Lax'|'None'} sameSite + * @property {string[]} unparsed + */ + +/** + * @param {Headers} headers + * @returns {Record} + */ +function getCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookie = headers.get('cookie') + const out = {} + + if (!cookie) { + return out + } + + for (const piece of cookie.split(';')) { + const [name, ...value] = piece.split('=') + + out[name.trim()] = value.join('=') + } + + return out +} + +/** + * @param {Headers} headers + * @param {string} name + * @param {{ path?: string, domain?: string }|undefined} attributes + * @returns {void} + */ +function deleteCookie (headers, name, attributes) { + webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + name = webidl.converters.DOMString(name) + attributes = webidl.converters.DeleteCookieAttributes(attributes) + + // Matches behavior of + // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278 + setCookie(headers, { + name, + value: '', + expires: new Date(0), + ...attributes + }) +} + +/** + * @param {Headers} headers + * @returns {Cookie[]} + */ +function getSetCookies (headers) { + webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + const cookies = getHeadersList(headers).cookies + + if (!cookies) { + return [] + } + + // In older versions of undici, cookies is a list of name:value. + return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair)) +} + +/** + * @param {Headers} headers + * @param {Cookie} cookie + * @returns {void} + */ +function setCookie (headers, cookie) { + webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' }) + + webidl.brandCheck(headers, Headers, { strict: false }) + + cookie = webidl.converters.Cookie(cookie) + + const str = stringify(cookie) + + if (str) { + headers.append('Set-Cookie', stringify(cookie)) + } +} + +webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([ + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + } +]) + +webidl.converters.Cookie = webidl.dictionaryConverter([ + { + converter: webidl.converters.DOMString, + key: 'name' + }, + { + converter: webidl.converters.DOMString, + key: 'value' + }, + { + converter: webidl.nullableConverter((value) => { + if (typeof value === 'number') { + return webidl.converters['unsigned long long'](value) + } + + return new Date(value) + }), + key: 'expires', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters['long long']), + key: 'maxAge', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'domain', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.DOMString), + key: 'path', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'secure', + defaultValue: null + }, + { + converter: webidl.nullableConverter(webidl.converters.boolean), + key: 'httpOnly', + defaultValue: null + }, + { + converter: webidl.converters.USVString, + key: 'sameSite', + allowedValues: ['Strict', 'Lax', 'None'] + }, + { + converter: webidl.sequenceConverter(webidl.converters.DOMString), + key: 'unparsed', + defaultValue: [] + } +]) + +module.exports = { + getCookies, + deleteCookie, + getSetCookies, + setCookie +} + + +/***/ }), + +/***/ 4408: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(663) +const { isCTLExcludingHtab } = __nccwpck_require__(3121) +const { collectASequenceOfCodePointsFast } = __nccwpck_require__(685) +const assert = __nccwpck_require__(9491) + +/** + * @description Parses the field-value attributes of a set-cookie header string. + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} header + * @returns if the header is invalid, null will be returned + */ +function parseSetCookie (header) { + // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F + // character (CTL characters excluding HTAB): Abort these steps and + // ignore the set-cookie-string entirely. + if (isCTLExcludingHtab(header)) { + return null + } + + let nameValuePair = '' + let unparsedAttributes = '' + let name = '' + let value = '' + + // 2. If the set-cookie-string contains a %x3B (";") character: + if (header.includes(';')) { + // 1. The name-value-pair string consists of the characters up to, + // but not including, the first %x3B (";"), and the unparsed- + // attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question). + const position = { position: 0 } + + nameValuePair = collectASequenceOfCodePointsFast(';', header, position) + unparsedAttributes = header.slice(position.position) + } else { + // Otherwise: + + // 1. The name-value-pair string consists of all the characters + // contained in the set-cookie-string, and the unparsed- + // attributes is the empty string. + nameValuePair = header + } + + // 3. If the name-value-pair string lacks a %x3D ("=") character, then + // the name string is empty, and the value string is the value of + // name-value-pair. + if (!nameValuePair.includes('=')) { + value = nameValuePair + } else { + // Otherwise, the name string consists of the characters up to, but + // not including, the first %x3D ("=") character, and the (possibly + // empty) value string consists of the characters after the first + // %x3D ("=") character. + const position = { position: 0 } + name = collectASequenceOfCodePointsFast( + '=', + nameValuePair, + position + ) + value = nameValuePair.slice(position.position + 1) + } + + // 4. Remove any leading or trailing WSP characters from the name + // string and the value string. + name = name.trim() + value = value.trim() + + // 5. If the sum of the lengths of the name string and the value string + // is more than 4096 octets, abort these steps and ignore the set- + // cookie-string entirely. + if (name.length + value.length > maxNameValuePairSize) { + return null + } + + // 6. The cookie-name is the name string, and the cookie-value is the + // value string. + return { + name, value, ...parseUnparsedAttributes(unparsedAttributes) + } +} + +/** + * Parses the remaining attributes of a set-cookie header + * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4 + * @param {string} unparsedAttributes + * @param {[Object.]={}} cookieAttributeList + */ +function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) { + // 1. If the unparsed-attributes string is empty, skip the rest of + // these steps. + if (unparsedAttributes.length === 0) { + return cookieAttributeList + } + + // 2. Discard the first character of the unparsed-attributes (which + // will be a %x3B (";") character). + assert(unparsedAttributes[0] === ';') + unparsedAttributes = unparsedAttributes.slice(1) + + let cookieAv = '' + + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + if (unparsedAttributes.includes(';')) { + // 1. Consume the characters of the unparsed-attributes up to, but + // not including, the first %x3B (";") character. + cookieAv = collectASequenceOfCodePointsFast( + ';', + unparsedAttributes, + { position: 0 } + ) + unparsedAttributes = unparsedAttributes.slice(cookieAv.length) + } else { + // Otherwise: + + // 1. Consume the remainder of the unparsed-attributes. + cookieAv = unparsedAttributes + unparsedAttributes = '' + } + + // Let the cookie-av string be the characters consumed in this step. + + let attributeName = '' + let attributeValue = '' + + // 4. If the cookie-av string contains a %x3D ("=") character: + if (cookieAv.includes('=')) { + // 1. The (possibly empty) attribute-name string consists of the + // characters up to, but not including, the first %x3D ("=") + // character, and the (possibly empty) attribute-value string + // consists of the characters after the first %x3D ("=") + // character. + const position = { position: 0 } + + attributeName = collectASequenceOfCodePointsFast( + '=', + cookieAv, + position + ) + attributeValue = cookieAv.slice(position.position + 1) + } else { + // Otherwise: + + // 1. The attribute-name string consists of the entire cookie-av + // string, and the attribute-value string is empty. + attributeName = cookieAv + } + + // 5. Remove any leading or trailing WSP characters from the attribute- + // name string and the attribute-value string. + attributeName = attributeName.trim() + attributeValue = attributeValue.trim() + + // 6. If the attribute-value is longer than 1024 octets, ignore the + // cookie-av string and return to Step 1 of this algorithm. + if (attributeValue.length > maxAttributeValueSize) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 7. Process the attribute-name and attribute-value according to the + // requirements in the following subsections. (Notice that + // attributes with unrecognized attribute-names are ignored.) + const attributeNameLowercase = attributeName.toLowerCase() + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1 + // If the attribute-name case-insensitively matches the string + // "Expires", the user agent MUST process the cookie-av as follows. + if (attributeNameLowercase === 'expires') { + // 1. Let the expiry-time be the result of parsing the attribute-value + // as cookie-date (see Section 5.1.1). + const expiryTime = new Date(attributeValue) + + // 2. If the attribute-value failed to parse as a cookie date, ignore + // the cookie-av. + + cookieAttributeList.expires = expiryTime + } else if (attributeNameLowercase === 'max-age') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2 + // If the attribute-name case-insensitively matches the string "Max- + // Age", the user agent MUST process the cookie-av as follows. + + // 1. If the first character of the attribute-value is not a DIGIT or a + // "-" character, ignore the cookie-av. + const charCode = attributeValue.charCodeAt(0) + + if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 2. If the remainder of attribute-value contains a non-DIGIT + // character, ignore the cookie-av. + if (!/^\d+$/.test(attributeValue)) { + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) + } + + // 3. Let delta-seconds be the attribute-value converted to an integer. + const deltaSeconds = Number(attributeValue) + + // 4. Let cookie-age-limit be the maximum age of the cookie (which + // SHOULD be 400 days or less, see Section 4.1.2.2). + + // 5. Set delta-seconds to the smaller of its present value and cookie- + // age-limit. + // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs) + + // 6. If delta-seconds is less than or equal to zero (0), let expiry- + // time be the earliest representable date and time. Otherwise, let + // the expiry-time be the current date and time plus delta-seconds + // seconds. + // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds + + // 7. Append an attribute to the cookie-attribute-list with an + // attribute-name of Max-Age and an attribute-value of expiry-time. + cookieAttributeList.maxAge = deltaSeconds + } else if (attributeNameLowercase === 'domain') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3 + // If the attribute-name case-insensitively matches the string "Domain", + // the user agent MUST process the cookie-av as follows. + + // 1. Let cookie-domain be the attribute-value. + let cookieDomain = attributeValue + + // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be + // cookie-domain without its leading %x2E ("."). + if (cookieDomain[0] === '.') { + cookieDomain = cookieDomain.slice(1) + } + + // 3. Convert the cookie-domain to lower case. + cookieDomain = cookieDomain.toLowerCase() + + // 4. Append an attribute to the cookie-attribute-list with an + // attribute-name of Domain and an attribute-value of cookie-domain. + cookieAttributeList.domain = cookieDomain + } else if (attributeNameLowercase === 'path') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4 + // If the attribute-name case-insensitively matches the string "Path", + // the user agent MUST process the cookie-av as follows. + + // 1. If the attribute-value is empty or if the first character of the + // attribute-value is not %x2F ("/"): + let cookiePath = '' + if (attributeValue.length === 0 || attributeValue[0] !== '/') { + // 1. Let cookie-path be the default-path. + cookiePath = '/' + } else { + // Otherwise: + + // 1. Let cookie-path be the attribute-value. + cookiePath = attributeValue + } + + // 2. Append an attribute to the cookie-attribute-list with an + // attribute-name of Path and an attribute-value of cookie-path. + cookieAttributeList.path = cookiePath + } else if (attributeNameLowercase === 'secure') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5 + // If the attribute-name case-insensitively matches the string "Secure", + // the user agent MUST append an attribute to the cookie-attribute-list + // with an attribute-name of Secure and an empty attribute-value. + + cookieAttributeList.secure = true + } else if (attributeNameLowercase === 'httponly') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6 + // If the attribute-name case-insensitively matches the string + // "HttpOnly", the user agent MUST append an attribute to the cookie- + // attribute-list with an attribute-name of HttpOnly and an empty + // attribute-value. + + cookieAttributeList.httpOnly = true + } else if (attributeNameLowercase === 'samesite') { + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7 + // If the attribute-name case-insensitively matches the string + // "SameSite", the user agent MUST process the cookie-av as follows: + + // 1. Let enforcement be "Default". + let enforcement = 'Default' + + const attributeValueLowercase = attributeValue.toLowerCase() + // 2. If cookie-av's attribute-value is a case-insensitive match for + // "None", set enforcement to "None". + if (attributeValueLowercase.includes('none')) { + enforcement = 'None' + } + + // 3. If cookie-av's attribute-value is a case-insensitive match for + // "Strict", set enforcement to "Strict". + if (attributeValueLowercase.includes('strict')) { + enforcement = 'Strict' + } + + // 4. If cookie-av's attribute-value is a case-insensitive match for + // "Lax", set enforcement to "Lax". + if (attributeValueLowercase.includes('lax')) { + enforcement = 'Lax' + } + + // 5. Append an attribute to the cookie-attribute-list with an + // attribute-name of "SameSite" and an attribute-value of + // enforcement. + cookieAttributeList.sameSite = enforcement + } else { + cookieAttributeList.unparsed ??= [] + + cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`) + } + + // 8. Return to Step 1 of this algorithm. + return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList) +} + +module.exports = { + parseSetCookie, + parseUnparsedAttributes +} + + +/***/ }), + +/***/ 3121: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(9491) +const { kHeadersList } = __nccwpck_require__(2785) + +function isCTLExcludingHtab (value) { + if (value.length === 0) { + return false + } + + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + (code >= 0x00 || code <= 0x08) || + (code >= 0x0A || code <= 0x1F) || + code === 0x7F + ) { + return false + } + } +} + +/** + CHAR = + token = 1* + separators = "(" | ")" | "<" | ">" | "@" + | "," | ";" | ":" | "\" | <"> + | "/" | "[" | "]" | "?" | "=" + | "{" | "}" | SP | HT + * @param {string} name + */ +function validateCookieName (name) { + for (const char of name) { + const code = char.charCodeAt(0) + + if ( + (code <= 0x20 || code > 0x7F) || + char === '(' || + char === ')' || + char === '>' || + char === '<' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' + ) { + throw new Error('Invalid cookie name') + } + } +} + +/** + cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + ; US-ASCII characters excluding CTLs, + ; whitespace DQUOTE, comma, semicolon, + ; and backslash + * @param {string} value + */ +function validateCookieValue (value) { + for (const char of value) { + const code = char.charCodeAt(0) + + if ( + code < 0x21 || // exclude CTLs (0-31) + code === 0x22 || + code === 0x2C || + code === 0x3B || + code === 0x5C || + code > 0x7E // non-ascii + ) { + throw new Error('Invalid header value') + } + } +} + +/** + * path-value = + * @param {string} path + */ +function validateCookiePath (path) { + for (const char of path) { + const code = char.charCodeAt(0) + + if (code < 0x21 || char === ';') { + throw new Error('Invalid cookie path') + } + } +} + +/** + * I have no idea why these values aren't allowed to be honest, + * but Deno tests these. - Khafra + * @param {string} domain + */ +function validateCookieDomain (domain) { + if ( + domain.startsWith('-') || + domain.endsWith('.') || + domain.endsWith('-') + ) { + throw new Error('Invalid cookie domain') + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1 + * @param {number|Date} date + IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT + ; fixed length/zone/capitalization subset of the format + ; see Section 3.3 of [RFC5322] + + day-name = %x4D.6F.6E ; "Mon", case-sensitive + / %x54.75.65 ; "Tue", case-sensitive + / %x57.65.64 ; "Wed", case-sensitive + / %x54.68.75 ; "Thu", case-sensitive + / %x46.72.69 ; "Fri", case-sensitive + / %x53.61.74 ; "Sat", case-sensitive + / %x53.75.6E ; "Sun", case-sensitive + date1 = day SP month SP year + ; e.g., 02 Jun 1982 + + day = 2DIGIT + month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + year = 4DIGIT + + GMT = %x47.4D.54 ; "GMT", case-sensitive + + time-of-day = hour ":" minute ":" second + ; 00:00:00 - 23:59:60 (leap second) + + hour = 2DIGIT + minute = 2DIGIT + second = 2DIGIT + */ +function toIMFDate (date) { + if (typeof date === 'number') { + date = new Date(date) + } + + const days = [ + 'Sun', 'Mon', 'Tue', 'Wed', + 'Thu', 'Fri', 'Sat' + ] + + const months = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' + ] + + const dayName = days[date.getUTCDay()] + const day = date.getUTCDate().toString().padStart(2, '0') + const month = months[date.getUTCMonth()] + const year = date.getUTCFullYear() + const hour = date.getUTCHours().toString().padStart(2, '0') + const minute = date.getUTCMinutes().toString().padStart(2, '0') + const second = date.getUTCSeconds().toString().padStart(2, '0') + + return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT` +} + +/** + max-age-av = "Max-Age=" non-zero-digit *DIGIT + ; In practice, both expires-av and max-age-av + ; are limited to dates representable by the + ; user agent. + * @param {number} maxAge + */ +function validateCookieMaxAge (maxAge) { + if (maxAge < 0) { + throw new Error('Invalid cookie max-age') + } +} + +/** + * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1 + * @param {import('./index').Cookie} cookie + */ +function stringify (cookie) { + if (cookie.name.length === 0) { + return null + } + + validateCookieName(cookie.name) + validateCookieValue(cookie.value) + + const out = [`${cookie.name}=${cookie.value}`] + + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1 + // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2 + if (cookie.name.startsWith('__Secure-')) { + cookie.secure = true + } + + if (cookie.name.startsWith('__Host-')) { + cookie.secure = true + cookie.domain = null + cookie.path = '/' + } + + if (cookie.secure) { + out.push('Secure') + } + + if (cookie.httpOnly) { + out.push('HttpOnly') + } + + if (typeof cookie.maxAge === 'number') { + validateCookieMaxAge(cookie.maxAge) + out.push(`Max-Age=${cookie.maxAge}`) + } + + if (cookie.domain) { + validateCookieDomain(cookie.domain) + out.push(`Domain=${cookie.domain}`) + } + + if (cookie.path) { + validateCookiePath(cookie.path) + out.push(`Path=${cookie.path}`) + } + + if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') { + out.push(`Expires=${toIMFDate(cookie.expires)}`) + } + + if (cookie.sameSite) { + out.push(`SameSite=${cookie.sameSite}`) + } + + for (const part of cookie.unparsed) { + if (!part.includes('=')) { + throw new Error('Invalid unparsed') + } + + const [key, ...value] = part.split('=') + + out.push(`${key.trim()}=${value.join('=')}`) + } + + return out.join('; ') +} + +let kHeadersListNode + +function getHeadersList (headers) { + if (headers[kHeadersList]) { + return headers[kHeadersList] + } + + if (!kHeadersListNode) { + kHeadersListNode = Object.getOwnPropertySymbols(headers).find( + (symbol) => symbol.description === 'headers list' + ) + + assert(kHeadersListNode, 'Headers cannot be parsed') + } + + const headersList = headers[kHeadersListNode] + assert(headersList) + + return headersList +} + +module.exports = { + isCTLExcludingHtab, + stringify, + getHeadersList +} + + +/***/ }), + +/***/ 2067: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const net = __nccwpck_require__(1808) +const assert = __nccwpck_require__(9491) +const util = __nccwpck_require__(3983) +const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(8045) + +let tls // include tls conditionally since it is not always available + +// TODO: session re-use does not wait for the first +// connection to resolve the session and might therefore +// resolve the same servername multiple times even when +// re-use is enabled. + +let SessionCache +// FIXME: remove workaround when the Node bug is fixed +// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308 +if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) { + SessionCache = class WeakSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + this._sessionRegistry = new global.FinalizationRegistry((key) => { + if (this._sessionCache.size < this._maxCachedSessions) { + return + } + + const ref = this._sessionCache.get(key) + if (ref !== undefined && ref.deref() === undefined) { + this._sessionCache.delete(key) + } + }) + } + + get (sessionKey) { + const ref = this._sessionCache.get(sessionKey) + return ref ? ref.deref() : null + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + this._sessionCache.set(sessionKey, new WeakRef(session)) + this._sessionRegistry.register(session, sessionKey) + } + } +} else { + SessionCache = class SimpleSessionCache { + constructor (maxCachedSessions) { + this._maxCachedSessions = maxCachedSessions + this._sessionCache = new Map() + } + + get (sessionKey) { + return this._sessionCache.get(sessionKey) + } + + set (sessionKey, session) { + if (this._maxCachedSessions === 0) { + return + } + + if (this._sessionCache.size >= this._maxCachedSessions) { + // remove the oldest session + const { value: oldestKey } = this._sessionCache.keys().next() + this._sessionCache.delete(oldestKey) + } + + this._sessionCache.set(sessionKey, session) + } + } +} + +function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) { + if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) { + throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero') + } + + const options = { path: socketPath, ...opts } + const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions) + timeout = timeout == null ? 10e3 : timeout + allowH2 = allowH2 != null ? allowH2 : false + return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) { + let socket + if (protocol === 'https:') { + if (!tls) { + tls = __nccwpck_require__(4404) + } + servername = servername || options.servername || util.getServerName(host) || null + + const sessionKey = servername || hostname + const session = sessionCache.get(sessionKey) || null + + assert(sessionKey) + + socket = tls.connect({ + highWaterMark: 16384, // TLS in node can't have bigger HWM anyway... + ...options, + servername, + session, + localAddress, + // TODO(HTTP/2): Add support for h2c + ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'], + socket: httpSocket, // upgrade socket connection + port: port || 443, + host: hostname + }) + + socket + .on('session', function (session) { + // TODO (fix): Can a session become invalid once established? Don't think so? + sessionCache.set(sessionKey, session) + }) + } else { + assert(!httpSocket, 'httpSocket can only be sent on TLS update') + socket = net.connect({ + highWaterMark: 64 * 1024, // Same as nodejs fs streams. + ...options, + localAddress, + port: port || 80, + host: hostname + }) + } + + // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket + if (options.keepAlive == null || options.keepAlive) { + const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay + socket.setKeepAlive(true, keepAliveInitialDelay) + } + + const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout) + + socket + .setNoDelay(true) + .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(null, this) + } + }) + .on('error', function (err) { + cancelTimeout() + + if (callback) { + const cb = callback + callback = null + cb(err) + } + }) + + return socket + } +} + +function setupTimeout (onConnectTimeout, timeout) { + if (!timeout) { + return () => {} + } + + let s1 = null + let s2 = null + const timeoutId = setTimeout(() => { + // setImmediate is added to make sure that we priotorise socket error events over timeouts + s1 = setImmediate(() => { + if (process.platform === 'win32') { + // Windows needs an extra setImmediate probably due to implementation differences in the socket logic + s2 = setImmediate(() => onConnectTimeout()) + } else { + onConnectTimeout() + } + }) + }, timeout) + return () => { + clearTimeout(timeoutId) + clearImmediate(s1) + clearImmediate(s2) + } +} + +function onConnectTimeout (socket) { + util.destroy(socket, new ConnectTimeoutError()) +} + +module.exports = buildConnector + + +/***/ }), + +/***/ 8045: +/***/ ((module) => { + +"use strict"; + + +class UndiciError extends Error { + constructor (message) { + super(message) + this.name = 'UndiciError' + this.code = 'UND_ERR' + } +} + +class ConnectTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ConnectTimeoutError) + this.name = 'ConnectTimeoutError' + this.message = message || 'Connect Timeout Error' + this.code = 'UND_ERR_CONNECT_TIMEOUT' + } +} + +class HeadersTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersTimeoutError) + this.name = 'HeadersTimeoutError' + this.message = message || 'Headers Timeout Error' + this.code = 'UND_ERR_HEADERS_TIMEOUT' + } +} + +class HeadersOverflowError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, HeadersOverflowError) + this.name = 'HeadersOverflowError' + this.message = message || 'Headers Overflow Error' + this.code = 'UND_ERR_HEADERS_OVERFLOW' + } +} + +class BodyTimeoutError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, BodyTimeoutError) + this.name = 'BodyTimeoutError' + this.message = message || 'Body Timeout Error' + this.code = 'UND_ERR_BODY_TIMEOUT' + } +} + +class ResponseStatusCodeError extends UndiciError { + constructor (message, statusCode, headers, body) { + super(message) + Error.captureStackTrace(this, ResponseStatusCodeError) + this.name = 'ResponseStatusCodeError' + this.message = message || 'Response Status Code Error' + this.code = 'UND_ERR_RESPONSE_STATUS_CODE' + this.body = body + this.status = statusCode + this.statusCode = statusCode + this.headers = headers + } +} + +class InvalidArgumentError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidArgumentError) + this.name = 'InvalidArgumentError' + this.message = message || 'Invalid Argument Error' + this.code = 'UND_ERR_INVALID_ARG' + } +} + +class InvalidReturnValueError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InvalidReturnValueError) + this.name = 'InvalidReturnValueError' + this.message = message || 'Invalid Return Value Error' + this.code = 'UND_ERR_INVALID_RETURN_VALUE' + } +} + +class RequestAbortedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestAbortedError) + this.name = 'AbortError' + this.message = message || 'Request aborted' + this.code = 'UND_ERR_ABORTED' + } +} + +class InformationalError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, InformationalError) + this.name = 'InformationalError' + this.message = message || 'Request information' + this.code = 'UND_ERR_INFO' + } +} + +class RequestContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, RequestContentLengthMismatchError) + this.name = 'RequestContentLengthMismatchError' + this.message = message || 'Request body length does not match content-length header' + this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' + } +} + +class ResponseContentLengthMismatchError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseContentLengthMismatchError) + this.name = 'ResponseContentLengthMismatchError' + this.message = message || 'Response body length does not match content-length header' + this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH' + } +} + +class ClientDestroyedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientDestroyedError) + this.name = 'ClientDestroyedError' + this.message = message || 'The client is destroyed' + this.code = 'UND_ERR_DESTROYED' + } +} + +class ClientClosedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ClientClosedError) + this.name = 'ClientClosedError' + this.message = message || 'The client is closed' + this.code = 'UND_ERR_CLOSED' + } +} + +class SocketError extends UndiciError { + constructor (message, socket) { + super(message) + Error.captureStackTrace(this, SocketError) + this.name = 'SocketError' + this.message = message || 'Socket error' + this.code = 'UND_ERR_SOCKET' + this.socket = socket + } +} + +class NotSupportedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'NotSupportedError' + this.message = message || 'Not supported error' + this.code = 'UND_ERR_NOT_SUPPORTED' + } +} + +class BalancedPoolMissingUpstreamError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, NotSupportedError) + this.name = 'MissingUpstreamError' + this.message = message || 'No upstream has been added to the BalancedPool' + this.code = 'UND_ERR_BPL_MISSING_UPSTREAM' + } +} + +class HTTPParserError extends Error { + constructor (message, code, data) { + super(message) + Error.captureStackTrace(this, HTTPParserError) + this.name = 'HTTPParserError' + this.code = code ? `HPE_${code}` : undefined + this.data = data ? data.toString() : undefined + } +} + +class ResponseExceededMaxSizeError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, ResponseExceededMaxSizeError) + this.name = 'ResponseExceededMaxSizeError' + this.message = message || 'Response content exceeded max size' + this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE' + } +} + +class RequestRetryError extends UndiciError { + constructor (message, code, { headers, data }) { + super(message) + Error.captureStackTrace(this, RequestRetryError) + this.name = 'RequestRetryError' + this.message = message || 'Request retry error' + this.code = 'UND_ERR_REQ_RETRY' + this.statusCode = code + this.data = data + this.headers = headers + } +} + +module.exports = { + HTTPParserError, + UndiciError, + HeadersTimeoutError, + HeadersOverflowError, + BodyTimeoutError, + RequestContentLengthMismatchError, + ConnectTimeoutError, + ResponseStatusCodeError, + InvalidArgumentError, + InvalidReturnValueError, + RequestAbortedError, + ClientDestroyedError, + ClientClosedError, + InformationalError, + SocketError, + NotSupportedError, + ResponseContentLengthMismatchError, + BalancedPoolMissingUpstreamError, + ResponseExceededMaxSizeError, + RequestRetryError +} + + +/***/ }), + +/***/ 2905: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + InvalidArgumentError, + NotSupportedError +} = __nccwpck_require__(8045) +const assert = __nccwpck_require__(9491) +const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(2785) +const util = __nccwpck_require__(3983) + +// tokenRegExp and headerCharRegex have been lifted from +// https://github.com/nodejs/node/blob/main/lib/_http_common.js + +/** + * Verifies that the given val is a valid HTTP token + * per the rules defined in RFC 7230 + * See https://tools.ietf.org/html/rfc7230#section-3.2.6 + */ +const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/ + +/** + * Matches if val contains an invalid field-vchar + * field-value = *( field-content / obs-fold ) + * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] + * field-vchar = VCHAR / obs-text + */ +const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/ + +// Verifies that a given path is valid does not contain control chars \x00 to \x20 +const invalidPathRegex = /[^\u0021-\u00ff]/ + +const kHandler = Symbol('handler') + +const channels = {} + +let extractBody + +try { + const diagnosticsChannel = __nccwpck_require__(7643) + channels.create = diagnosticsChannel.channel('undici:request:create') + channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent') + channels.headers = diagnosticsChannel.channel('undici:request:headers') + channels.trailers = diagnosticsChannel.channel('undici:request:trailers') + channels.error = diagnosticsChannel.channel('undici:request:error') +} catch { + channels.create = { hasSubscribers: false } + channels.bodySent = { hasSubscribers: false } + channels.headers = { hasSubscribers: false } + channels.trailers = { hasSubscribers: false } + channels.error = { hasSubscribers: false } +} + +class Request { + constructor (origin, { + path, + method, + body, + headers, + query, + idempotent, + blocking, + upgrade, + headersTimeout, + bodyTimeout, + reset, + throwOnError, + expectContinue + }, handler) { + if (typeof path !== 'string') { + throw new InvalidArgumentError('path must be a string') + } else if ( + path[0] !== '/' && + !(path.startsWith('http://') || path.startsWith('https://')) && + method !== 'CONNECT' + ) { + throw new InvalidArgumentError('path must be an absolute URL or start with a slash') + } else if (invalidPathRegex.exec(path) !== null) { + throw new InvalidArgumentError('invalid request path') + } + + if (typeof method !== 'string') { + throw new InvalidArgumentError('method must be a string') + } else if (tokenRegExp.exec(method) === null) { + throw new InvalidArgumentError('invalid request method') + } + + if (upgrade && typeof upgrade !== 'string') { + throw new InvalidArgumentError('upgrade must be a string') + } + + if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) { + throw new InvalidArgumentError('invalid headersTimeout') + } + + if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) { + throw new InvalidArgumentError('invalid bodyTimeout') + } + + if (reset != null && typeof reset !== 'boolean') { + throw new InvalidArgumentError('invalid reset') + } + + if (expectContinue != null && typeof expectContinue !== 'boolean') { + throw new InvalidArgumentError('invalid expectContinue') + } + + this.headersTimeout = headersTimeout + + this.bodyTimeout = bodyTimeout + + this.throwOnError = throwOnError === true + + this.method = method + + this.abort = null + + if (body == null) { + this.body = null + } else if (util.isStream(body)) { + this.body = body + + const rState = this.body._readableState + if (!rState || !rState.autoDestroy) { + this.endHandler = function autoDestroy () { + util.destroy(this) + } + this.body.on('end', this.endHandler) + } + + this.errorHandler = err => { + if (this.abort) { + this.abort(err) + } else { + this.error = err + } + } + this.body.on('error', this.errorHandler) + } else if (util.isBuffer(body)) { + this.body = body.byteLength ? body : null + } else if (ArrayBuffer.isView(body)) { + this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null + } else if (body instanceof ArrayBuffer) { + this.body = body.byteLength ? Buffer.from(body) : null + } else if (typeof body === 'string') { + this.body = body.length ? Buffer.from(body) : null + } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) { + this.body = body + } else { + throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable') + } + + this.completed = false + + this.aborted = false + + this.upgrade = upgrade || null + + this.path = query ? util.buildURL(path, query) : path + + this.origin = origin + + this.idempotent = idempotent == null + ? method === 'HEAD' || method === 'GET' + : idempotent + + this.blocking = blocking == null ? false : blocking + + this.reset = reset == null ? null : reset + + this.host = null + + this.contentLength = null + + this.contentType = null + + this.headers = '' + + // Only for H2 + this.expectContinue = expectContinue != null ? expectContinue : false + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(this, headers[i], headers[i + 1]) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(this, key, headers[key]) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + if (util.isFormDataLike(this.body)) { + if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) { + throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.') + } + + if (!extractBody) { + extractBody = (__nccwpck_require__(1472).extractBody) + } + + const [bodyStream, contentType] = extractBody(body) + if (this.contentType == null) { + this.contentType = contentType + this.headers += `content-type: ${contentType}\r\n` + } + this.body = bodyStream.stream + this.contentLength = bodyStream.length + } else if (util.isBlobLike(body) && this.contentType == null && body.type) { + this.contentType = body.type + this.headers += `content-type: ${body.type}\r\n` + } + + util.validateHandler(handler, method, upgrade) + + this.servername = util.getServerName(this.host) + + this[kHandler] = handler + + if (channels.create.hasSubscribers) { + channels.create.publish({ request: this }) + } + } + + onBodySent (chunk) { + if (this[kHandler].onBodySent) { + try { + return this[kHandler].onBodySent(chunk) + } catch (err) { + this.abort(err) + } + } + } + + onRequestSent () { + if (channels.bodySent.hasSubscribers) { + channels.bodySent.publish({ request: this }) + } + + if (this[kHandler].onRequestSent) { + try { + return this[kHandler].onRequestSent() + } catch (err) { + this.abort(err) + } + } + } + + onConnect (abort) { + assert(!this.aborted) + assert(!this.completed) + + if (this.error) { + abort(this.error) + } else { + this.abort = abort + return this[kHandler].onConnect(abort) + } + } + + onHeaders (statusCode, headers, resume, statusText) { + assert(!this.aborted) + assert(!this.completed) + + if (channels.headers.hasSubscribers) { + channels.headers.publish({ request: this, response: { statusCode, headers, statusText } }) + } + + try { + return this[kHandler].onHeaders(statusCode, headers, resume, statusText) + } catch (err) { + this.abort(err) + } + } + + onData (chunk) { + assert(!this.aborted) + assert(!this.completed) + + try { + return this[kHandler].onData(chunk) + } catch (err) { + this.abort(err) + return false + } + } + + onUpgrade (statusCode, headers, socket) { + assert(!this.aborted) + assert(!this.completed) + + return this[kHandler].onUpgrade(statusCode, headers, socket) + } + + onComplete (trailers) { + this.onFinally() + + assert(!this.aborted) + + this.completed = true + if (channels.trailers.hasSubscribers) { + channels.trailers.publish({ request: this, trailers }) + } + + try { + return this[kHandler].onComplete(trailers) + } catch (err) { + // TODO (fix): This might be a bad idea? + this.onError(err) + } + } + + onError (error) { + this.onFinally() + + if (channels.error.hasSubscribers) { + channels.error.publish({ request: this, error }) + } + + if (this.aborted) { + return + } + this.aborted = true + + return this[kHandler].onError(error) + } + + onFinally () { + if (this.errorHandler) { + this.body.off('error', this.errorHandler) + this.errorHandler = null + } + + if (this.endHandler) { + this.body.off('end', this.endHandler) + this.endHandler = null + } + } + + // TODO: adjust to support H2 + addHeader (key, value) { + processHeader(this, key, value) + return this + } + + static [kHTTP1BuildRequest] (origin, opts, handler) { + // TODO: Migrate header parsing here, to make Requests + // HTTP agnostic + return new Request(origin, opts, handler) + } + + static [kHTTP2BuildRequest] (origin, opts, handler) { + const headers = opts.headers + opts = { ...opts, headers: null } + + const request = new Request(origin, opts, handler) + + request.headers = {} + + if (Array.isArray(headers)) { + if (headers.length % 2 !== 0) { + throw new InvalidArgumentError('headers array must be even') + } + for (let i = 0; i < headers.length; i += 2) { + processHeader(request, headers[i], headers[i + 1], true) + } + } else if (headers && typeof headers === 'object') { + const keys = Object.keys(headers) + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + processHeader(request, key, headers[key], true) + } + } else if (headers != null) { + throw new InvalidArgumentError('headers must be an object or an array') + } + + return request + } + + static [kHTTP2CopyHeaders] (raw) { + const rawHeaders = raw.split('\r\n') + const headers = {} + + for (const header of rawHeaders) { + const [key, value] = header.split(': ') + + if (value == null || value.length === 0) continue + + if (headers[key]) headers[key] += `,${value}` + else headers[key] = value + } + + return headers + } +} + +function processHeaderValue (key, val, skipAppend) { + if (val && typeof val === 'object') { + throw new InvalidArgumentError(`invalid ${key} header`) + } + + val = val != null ? `${val}` : '' + + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + + return skipAppend ? val : `${key}: ${val}\r\n` +} + +function processHeader (request, key, val, skipAppend = false) { + if (val && (typeof val === 'object' && !Array.isArray(val))) { + throw new InvalidArgumentError(`invalid ${key} header`) + } else if (val === undefined) { + return + } + + if ( + request.host === null && + key.length === 4 && + key.toLowerCase() === 'host' + ) { + if (headerCharRegex.exec(val) !== null) { + throw new InvalidArgumentError(`invalid ${key} header`) + } + // Consumed by Client + request.host = val + } else if ( + request.contentLength === null && + key.length === 14 && + key.toLowerCase() === 'content-length' + ) { + request.contentLength = parseInt(val, 10) + if (!Number.isFinite(request.contentLength)) { + throw new InvalidArgumentError('invalid content-length header') + } + } else if ( + request.contentType === null && + key.length === 12 && + key.toLowerCase() === 'content-type' + ) { + request.contentType = val + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } else if ( + key.length === 17 && + key.toLowerCase() === 'transfer-encoding' + ) { + throw new InvalidArgumentError('invalid transfer-encoding header') + } else if ( + key.length === 10 && + key.toLowerCase() === 'connection' + ) { + const value = typeof val === 'string' ? val.toLowerCase() : null + if (value !== 'close' && value !== 'keep-alive') { + throw new InvalidArgumentError('invalid connection header') + } else if (value === 'close') { + request.reset = true + } + } else if ( + key.length === 10 && + key.toLowerCase() === 'keep-alive' + ) { + throw new InvalidArgumentError('invalid keep-alive header') + } else if ( + key.length === 7 && + key.toLowerCase() === 'upgrade' + ) { + throw new InvalidArgumentError('invalid upgrade header') + } else if ( + key.length === 6 && + key.toLowerCase() === 'expect' + ) { + throw new NotSupportedError('expect header not supported') + } else if (tokenRegExp.exec(key) === null) { + throw new InvalidArgumentError('invalid header key') + } else { + if (Array.isArray(val)) { + for (let i = 0; i < val.length; i++) { + if (skipAppend) { + if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}` + else request.headers[key] = processHeaderValue(key, val[i], skipAppend) + } else { + request.headers += processHeaderValue(key, val[i]) + } + } + } else { + if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend) + else request.headers += processHeaderValue(key, val) + } + } +} + +module.exports = Request + + +/***/ }), + +/***/ 2785: +/***/ ((module) => { + +module.exports = { + kClose: Symbol('close'), + kDestroy: Symbol('destroy'), + kDispatch: Symbol('dispatch'), + kUrl: Symbol('url'), + kWriting: Symbol('writing'), + kResuming: Symbol('resuming'), + kQueue: Symbol('queue'), + kConnect: Symbol('connect'), + kConnecting: Symbol('connecting'), + kHeadersList: Symbol('headers list'), + kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'), + kKeepAliveMaxTimeout: Symbol('max keep alive timeout'), + kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'), + kKeepAliveTimeoutValue: Symbol('keep alive timeout'), + kKeepAlive: Symbol('keep alive'), + kHeadersTimeout: Symbol('headers timeout'), + kBodyTimeout: Symbol('body timeout'), + kServerName: Symbol('server name'), + kLocalAddress: Symbol('local address'), + kHost: Symbol('host'), + kNoRef: Symbol('no ref'), + kBodyUsed: Symbol('used'), + kRunning: Symbol('running'), + kBlocking: Symbol('blocking'), + kPending: Symbol('pending'), + kSize: Symbol('size'), + kBusy: Symbol('busy'), + kQueued: Symbol('queued'), + kFree: Symbol('free'), + kConnected: Symbol('connected'), + kClosed: Symbol('closed'), + kNeedDrain: Symbol('need drain'), + kReset: Symbol('reset'), + kDestroyed: Symbol.for('nodejs.stream.destroyed'), + kMaxHeadersSize: Symbol('max headers size'), + kRunningIdx: Symbol('running index'), + kPendingIdx: Symbol('pending index'), + kError: Symbol('error'), + kClients: Symbol('clients'), + kClient: Symbol('client'), + kParser: Symbol('parser'), + kOnDestroyed: Symbol('destroy callbacks'), + kPipelining: Symbol('pipelining'), + kSocket: Symbol('socket'), + kHostHeader: Symbol('host header'), + kConnector: Symbol('connector'), + kStrictContentLength: Symbol('strict content length'), + kMaxRedirections: Symbol('maxRedirections'), + kMaxRequests: Symbol('maxRequestsPerClient'), + kProxy: Symbol('proxy agent options'), + kCounter: Symbol('socket request counter'), + kInterceptors: Symbol('dispatch interceptors'), + kMaxResponseSize: Symbol('max response size'), + kHTTP2Session: Symbol('http2Session'), + kHTTP2SessionState: Symbol('http2Session state'), + kHTTP2BuildRequest: Symbol('http2 build request'), + kHTTP1BuildRequest: Symbol('http1 build request'), + kHTTP2CopyHeaders: Symbol('http2 copy headers'), + kHTTPConnVersion: Symbol('http connection version'), + kRetryHandlerDefaultRetry: Symbol('retry agent default retry'), + kConstruct: Symbol('constructable') +} + + +/***/ }), + +/***/ 3983: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const assert = __nccwpck_require__(9491) +const { kDestroyed, kBodyUsed } = __nccwpck_require__(2785) +const { IncomingMessage } = __nccwpck_require__(3685) +const stream = __nccwpck_require__(2781) +const net = __nccwpck_require__(1808) +const { InvalidArgumentError } = __nccwpck_require__(8045) +const { Blob } = __nccwpck_require__(4300) +const nodeUtil = __nccwpck_require__(3837) +const { stringify } = __nccwpck_require__(3477) + +const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v)) + +function nop () {} + +function isStream (obj) { + return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function' +} + +// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License) +function isBlobLike (object) { + return (Blob && object instanceof Blob) || ( + object && + typeof object === 'object' && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + /^(Blob|File)$/.test(object[Symbol.toStringTag]) + ) +} + +function buildURL (url, queryParams) { + if (url.includes('?') || url.includes('#')) { + throw new Error('Query params cannot be passed when url already contains "?" or "#".') + } + + const stringified = stringify(queryParams) + + if (stringified) { + url += '?' + stringified + } + + return url +} + +function parseURL (url) { + if (typeof url === 'string') { + url = new URL(url) + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + return url + } + + if (!url || typeof url !== 'object') { + throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.') + } + + if (!/^https?:/.test(url.origin || url.protocol)) { + throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.') + } + + if (!(url instanceof URL)) { + if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) { + throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.') + } + + if (url.path != null && typeof url.path !== 'string') { + throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.') + } + + if (url.pathname != null && typeof url.pathname !== 'string') { + throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.') + } + + if (url.hostname != null && typeof url.hostname !== 'string') { + throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.') + } + + if (url.origin != null && typeof url.origin !== 'string') { + throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.') + } + + const port = url.port != null + ? url.port + : (url.protocol === 'https:' ? 443 : 80) + let origin = url.origin != null + ? url.origin + : `${url.protocol}//${url.hostname}:${port}` + let path = url.path != null + ? url.path + : `${url.pathname || ''}${url.search || ''}` + + if (origin.endsWith('/')) { + origin = origin.substring(0, origin.length - 1) + } + + if (path && !path.startsWith('/')) { + path = `/${path}` + } + // new URL(path, origin) is unsafe when `path` contains an absolute URL + // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL: + // If first parameter is a relative URL, second param is required, and will be used as the base URL. + // If first parameter is an absolute URL, a given second param will be ignored. + url = new URL(origin + path) + } + + return url +} + +function parseOrigin (url) { + url = parseURL(url) + + if (url.pathname !== '/' || url.search || url.hash) { + throw new InvalidArgumentError('invalid url') + } + + return url +} + +function getHostname (host) { + if (host[0] === '[') { + const idx = host.indexOf(']') + + assert(idx !== -1) + return host.substring(1, idx) + } + + const idx = host.indexOf(':') + if (idx === -1) return host + + return host.substring(0, idx) +} + +// IP addresses are not valid server names per RFC6066 +// > Currently, the only server names supported are DNS hostnames +function getServerName (host) { + if (!host) { + return null + } + + assert.strictEqual(typeof host, 'string') + + const servername = getHostname(host) + if (net.isIP(servername)) { + return '' + } + + return servername +} + +function deepClone (obj) { + return JSON.parse(JSON.stringify(obj)) +} + +function isAsyncIterable (obj) { + return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function') +} + +function isIterable (obj) { + return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function')) +} + +function bodyLength (body) { + if (body == null) { + return 0 + } else if (isStream(body)) { + const state = body._readableState + return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) + ? state.length + : null + } else if (isBlobLike(body)) { + return body.size != null ? body.size : null + } else if (isBuffer(body)) { + return body.byteLength + } + + return null +} + +function isDestroyed (stream) { + return !stream || !!(stream.destroyed || stream[kDestroyed]) +} + +function isReadableAborted (stream) { + const state = stream && stream._readableState + return isDestroyed(stream) && state && !state.endEmitted +} + +function destroy (stream, err) { + if (stream == null || !isStream(stream) || isDestroyed(stream)) { + return + } + + if (typeof stream.destroy === 'function') { + if (Object.getPrototypeOf(stream).constructor === IncomingMessage) { + // See: https://github.com/nodejs/node/pull/38505/files + stream.socket = null + } + + stream.destroy(err) + } else if (err) { + process.nextTick((stream, err) => { + stream.emit('error', err) + }, stream, err) + } + + if (stream.destroyed !== true) { + stream[kDestroyed] = true + } +} + +const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/ +function parseKeepAliveTimeout (val) { + const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR) + return m ? parseInt(m[1], 10) * 1000 : null +} + +function parseHeaders (headers, obj = {}) { + // For H2 support + if (!Array.isArray(headers)) return headers + + for (let i = 0; i < headers.length; i += 2) { + const key = headers[i].toString().toLowerCase() + let val = obj[key] + + if (!val) { + if (Array.isArray(headers[i + 1])) { + obj[key] = headers[i + 1].map(x => x.toString('utf8')) + } else { + obj[key] = headers[i + 1].toString('utf8') + } + } else { + if (!Array.isArray(val)) { + val = [val] + obj[key] = val + } + val.push(headers[i + 1].toString('utf8')) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if ('content-length' in obj && 'content-disposition' in obj) { + obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1') + } + + return obj +} + +function parseRawHeaders (headers) { + const ret = [] + let hasContentLength = false + let contentDispositionIdx = -1 + + for (let n = 0; n < headers.length; n += 2) { + const key = headers[n + 0].toString() + const val = headers[n + 1].toString('utf8') + + if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) { + ret.push(key, val) + hasContentLength = true + } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) { + contentDispositionIdx = ret.push(key, val) - 1 + } else { + ret.push(key, val) + } + } + + // See https://github.com/nodejs/node/pull/46528 + if (hasContentLength && contentDispositionIdx !== -1) { + ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1') + } + + return ret +} + +function isBuffer (buffer) { + // See, https://github.com/mcollina/undici/pull/319 + return buffer instanceof Uint8Array || Buffer.isBuffer(buffer) +} + +function validateHandler (handler, method, upgrade) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + if (typeof handler.onConnect !== 'function') { + throw new InvalidArgumentError('invalid onConnect method') + } + + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) { + throw new InvalidArgumentError('invalid onBodySent method') + } + + if (upgrade || method === 'CONNECT') { + if (typeof handler.onUpgrade !== 'function') { + throw new InvalidArgumentError('invalid onUpgrade method') + } + } else { + if (typeof handler.onHeaders !== 'function') { + throw new InvalidArgumentError('invalid onHeaders method') + } + + if (typeof handler.onData !== 'function') { + throw new InvalidArgumentError('invalid onData method') + } + + if (typeof handler.onComplete !== 'function') { + throw new InvalidArgumentError('invalid onComplete method') + } + } +} + +// A body is disturbed if it has been read from and it cannot +// be re-used without losing state or data. +function isDisturbed (body) { + return !!(body && ( + stream.isDisturbed + ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed? + : body[kBodyUsed] || + body.readableDidRead || + (body._readableState && body._readableState.dataEmitted) || + isReadableAborted(body) + )) +} + +function isErrored (body) { + return !!(body && ( + stream.isErrored + ? stream.isErrored(body) + : /state: 'errored'/.test(nodeUtil.inspect(body) + ))) +} + +function isReadable (body) { + return !!(body && ( + stream.isReadable + ? stream.isReadable(body) + : /state: 'readable'/.test(nodeUtil.inspect(body) + ))) +} + +function getSocketInfo (socket) { + return { + localAddress: socket.localAddress, + localPort: socket.localPort, + remoteAddress: socket.remoteAddress, + remotePort: socket.remotePort, + remoteFamily: socket.remoteFamily, + timeout: socket.timeout, + bytesWritten: socket.bytesWritten, + bytesRead: socket.bytesRead + } +} + +async function * convertIterableToBuffer (iterable) { + for await (const chunk of iterable) { + yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + } +} + +let ReadableStream +function ReadableStreamFrom (iterable) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(5356).ReadableStream) + } + + if (ReadableStream.from) { + return ReadableStream.from(convertIterableToBuffer(iterable)) + } + + let iterator + return new ReadableStream( + { + async start () { + iterator = iterable[Symbol.asyncIterator]() + }, + async pull (controller) { + const { done, value } = await iterator.next() + if (done) { + queueMicrotask(() => { + controller.close() + }) + } else { + const buf = Buffer.isBuffer(value) ? value : Buffer.from(value) + controller.enqueue(new Uint8Array(buf)) + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + } + }, + 0 + ) +} + +// The chunk should be a FormData instance and contains +// all the required methods. +function isFormDataLike (object) { + return ( + object && + typeof object === 'object' && + typeof object.append === 'function' && + typeof object.delete === 'function' && + typeof object.get === 'function' && + typeof object.getAll === 'function' && + typeof object.has === 'function' && + typeof object.set === 'function' && + object[Symbol.toStringTag] === 'FormData' + ) +} + +function throwIfAborted (signal) { + if (!signal) { return } + if (typeof signal.throwIfAborted === 'function') { + signal.throwIfAborted() + } else { + if (signal.aborted) { + // DOMException not available < v17.0.0 + const err = new Error('The operation was aborted') + err.name = 'AbortError' + throw err + } + } +} + +function addAbortListener (signal, listener) { + if ('addEventListener' in signal) { + signal.addEventListener('abort', listener, { once: true }) + return () => signal.removeEventListener('abort', listener) + } + signal.addListener('abort', listener) + return () => signal.removeListener('abort', listener) +} + +const hasToWellFormed = !!String.prototype.toWellFormed + +/** + * @param {string} val + */ +function toUSVString (val) { + if (hasToWellFormed) { + return `${val}`.toWellFormed() + } else if (nodeUtil.toUSVString) { + return nodeUtil.toUSVString(val) + } + + return `${val}` +} + +// Parsed accordingly to RFC 9110 +// https://www.rfc-editor.org/rfc/rfc9110#field.content-range +function parseRangeHeader (range) { + if (range == null || range === '') return { start: 0, end: null, size: null } + + const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null + return m + ? { + start: parseInt(m[1]), + end: m[2] ? parseInt(m[2]) : null, + size: m[3] ? parseInt(m[3]) : null + } + : null +} + +const kEnumerableProperty = Object.create(null) +kEnumerableProperty.enumerable = true + +module.exports = { + kEnumerableProperty, + nop, + isDisturbed, + isErrored, + isReadable, + toUSVString, + isReadableAborted, + isBlobLike, + parseOrigin, + parseURL, + getServerName, + isStream, + isIterable, + isAsyncIterable, + isDestroyed, + parseRawHeaders, + parseHeaders, + parseKeepAliveTimeout, + destroy, + bodyLength, + deepClone, + ReadableStreamFrom, + isBuffer, + validateHandler, + getSocketInfo, + isFormDataLike, + buildURL, + throwIfAborted, + addAbortListener, + parseRangeHeader, + nodeMajor, + nodeMinor, + nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13), + safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +} + + +/***/ }), + +/***/ 4839: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Dispatcher = __nccwpck_require__(412) +const { + ClientDestroyedError, + ClientClosedError, + InvalidArgumentError +} = __nccwpck_require__(8045) +const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(2785) + +const kDestroyed = Symbol('destroyed') +const kClosed = Symbol('closed') +const kOnDestroyed = Symbol('onDestroyed') +const kOnClosed = Symbol('onClosed') +const kInterceptedDispatch = Symbol('Intercepted Dispatch') + +class DispatcherBase extends Dispatcher { + constructor () { + super() + + this[kDestroyed] = false + this[kOnDestroyed] = null + this[kClosed] = false + this[kOnClosed] = [] + } + + get destroyed () { + return this[kDestroyed] + } + + get closed () { + return this[kClosed] + } + + get interceptors () { + return this[kInterceptors] + } + + set interceptors (newInterceptors) { + if (newInterceptors) { + for (let i = newInterceptors.length - 1; i >= 0; i--) { + const interceptor = this[kInterceptors][i] + if (typeof interceptor !== 'function') { + throw new InvalidArgumentError('interceptor must be an function') + } + } + } + + this[kInterceptors] = newInterceptors + } + + close (callback) { + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.close((err, data) => { + return err ? reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + queueMicrotask(() => callback(new ClientDestroyedError(), null)) + return + } + + if (this[kClosed]) { + if (this[kOnClosed]) { + this[kOnClosed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + this[kClosed] = true + this[kOnClosed].push(callback) + + const onClosed = () => { + const callbacks = this[kOnClosed] + this[kOnClosed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kClose]() + .then(() => this.destroy()) + .then(() => { + queueMicrotask(onClosed) + }) + } + + destroy (err, callback) { + if (typeof err === 'function') { + callback = err + err = null + } + + if (callback === undefined) { + return new Promise((resolve, reject) => { + this.destroy(err, (err, data) => { + return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data) + }) + }) + } + + if (typeof callback !== 'function') { + throw new InvalidArgumentError('invalid callback') + } + + if (this[kDestroyed]) { + if (this[kOnDestroyed]) { + this[kOnDestroyed].push(callback) + } else { + queueMicrotask(() => callback(null, null)) + } + return + } + + if (!err) { + err = new ClientDestroyedError() + } + + this[kDestroyed] = true + this[kOnDestroyed] = this[kOnDestroyed] || [] + this[kOnDestroyed].push(callback) + + const onDestroyed = () => { + const callbacks = this[kOnDestroyed] + this[kOnDestroyed] = null + for (let i = 0; i < callbacks.length; i++) { + callbacks[i](null, null) + } + } + + // Should not error. + this[kDestroy](err).then(() => { + queueMicrotask(onDestroyed) + }) + } + + [kInterceptedDispatch] (opts, handler) { + if (!this[kInterceptors] || this[kInterceptors].length === 0) { + this[kInterceptedDispatch] = this[kDispatch] + return this[kDispatch](opts, handler) + } + + let dispatch = this[kDispatch].bind(this) + for (let i = this[kInterceptors].length - 1; i >= 0; i--) { + dispatch = this[kInterceptors][i](dispatch) + } + this[kInterceptedDispatch] = dispatch + return dispatch(opts, handler) + } + + dispatch (opts, handler) { + if (!handler || typeof handler !== 'object') { + throw new InvalidArgumentError('handler must be an object') + } + + try { + if (!opts || typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object.') + } + + if (this[kDestroyed] || this[kOnDestroyed]) { + throw new ClientDestroyedError() + } + + if (this[kClosed]) { + throw new ClientClosedError() + } + + return this[kInterceptedDispatch](opts, handler) + } catch (err) { + if (typeof handler.onError !== 'function') { + throw new InvalidArgumentError('invalid onError method') + } + + handler.onError(err) + + return false + } + } +} + +module.exports = DispatcherBase + + +/***/ }), + +/***/ 412: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = __nccwpck_require__(2361) + +class Dispatcher extends EventEmitter { + dispatch () { + throw new Error('not implemented') + } + + close () { + throw new Error('not implemented') + } + + destroy () { + throw new Error('not implemented') + } +} + +module.exports = Dispatcher + + +/***/ }), + +/***/ 1472: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Busboy = __nccwpck_require__(727) +const util = __nccwpck_require__(3983) +const { + ReadableStreamFrom, + isBlobLike, + isReadableStreamLike, + readableStreamClose, + createDeferredPromise, + fullyReadBody +} = __nccwpck_require__(2538) +const { FormData } = __nccwpck_require__(2015) +const { kState } = __nccwpck_require__(5861) +const { webidl } = __nccwpck_require__(1744) +const { DOMException, structuredClone } = __nccwpck_require__(1037) +const { Blob, File: NativeFile } = __nccwpck_require__(4300) +const { kBodyUsed } = __nccwpck_require__(2785) +const assert = __nccwpck_require__(9491) +const { isErrored } = __nccwpck_require__(3983) +const { isUint8Array, isArrayBuffer } = __nccwpck_require__(9830) +const { File: UndiciFile } = __nccwpck_require__(8511) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685) + +let ReadableStream = globalThis.ReadableStream + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile +const textEncoder = new TextEncoder() +const textDecoder = new TextDecoder() + +// https://fetch.spec.whatwg.org/#concept-bodyinit-extract +function extractBody (object, keepalive = false) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(5356).ReadableStream) + } + + // 1. Let stream be null. + let stream = null + + // 2. If object is a ReadableStream object, then set stream to object. + if (object instanceof ReadableStream) { + stream = object + } else if (isBlobLike(object)) { + // 3. Otherwise, if object is a Blob object, set stream to the + // result of running object’s get stream. + stream = object.stream() + } else { + // 4. Otherwise, set stream to a new ReadableStream object, and set + // up stream. + stream = new ReadableStream({ + async pull (controller) { + controller.enqueue( + typeof source === 'string' ? textEncoder.encode(source) : source + ) + queueMicrotask(() => readableStreamClose(controller)) + }, + start () {}, + type: undefined + }) + } + + // 5. Assert: stream is a ReadableStream object. + assert(isReadableStreamLike(stream)) + + // 6. Let action be null. + let action = null + + // 7. Let source be null. + let source = null + + // 8. Let length be null. + let length = null + + // 9. Let type be null. + let type = null + + // 10. Switch on object: + if (typeof object === 'string') { + // Set source to the UTF-8 encoding of object. + // Note: setting source to a Uint8Array here breaks some mocking assumptions. + source = object + + // Set type to `text/plain;charset=UTF-8`. + type = 'text/plain;charset=UTF-8' + } else if (object instanceof URLSearchParams) { + // URLSearchParams + + // spec says to run application/x-www-form-urlencoded on body.list + // this is implemented in Node.js as apart of an URLSearchParams instance toString method + // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490 + // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100 + + // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list. + source = object.toString() + + // Set type to `application/x-www-form-urlencoded;charset=UTF-8`. + type = 'application/x-www-form-urlencoded;charset=UTF-8' + } else if (isArrayBuffer(object)) { + // BufferSource/ArrayBuffer + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.slice()) + } else if (ArrayBuffer.isView(object)) { + // BufferSource/ArrayBufferView + + // Set source to a copy of the bytes held by object. + source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength)) + } else if (util.isFormDataLike(object)) { + const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}` + const prefix = `--${boundary}\r\nContent-Disposition: form-data` + + /*! formdata-polyfill. MIT License. Jimmy Wärting */ + const escape = (str) => + str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22') + const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n') + + // Set action to this step: run the multipart/form-data + // encoding algorithm, with object’s entry list and UTF-8. + // - This ensures that the body is immutable and can't be changed afterwords + // - That the content-length is calculated in advance. + // - And that all parts are pre-encoded and ready to be sent. + + const blobParts = [] + const rn = new Uint8Array([13, 10]) // '\r\n' + length = 0 + let hasUnknownSizeValue = false + + for (const [name, value] of object) { + if (typeof value === 'string') { + const chunk = textEncoder.encode(prefix + + `; name="${escape(normalizeLinefeeds(name))}"` + + `\r\n\r\n${normalizeLinefeeds(value)}\r\n`) + blobParts.push(chunk) + length += chunk.byteLength + } else { + const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + + (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' + + `Content-Type: ${ + value.type || 'application/octet-stream' + }\r\n\r\n`) + blobParts.push(chunk, value, rn) + if (typeof value.size === 'number') { + length += chunk.byteLength + value.size + rn.byteLength + } else { + hasUnknownSizeValue = true + } + } + } + + const chunk = textEncoder.encode(`--${boundary}--`) + blobParts.push(chunk) + length += chunk.byteLength + if (hasUnknownSizeValue) { + length = null + } + + // Set source to object. + source = object + + action = async function * () { + for (const part of blobParts) { + if (part.stream) { + yield * part.stream() + } else { + yield part + } + } + } + + // Set type to `multipart/form-data; boundary=`, + // followed by the multipart/form-data boundary string generated + // by the multipart/form-data encoding algorithm. + type = 'multipart/form-data; boundary=' + boundary + } else if (isBlobLike(object)) { + // Blob + + // Set source to object. + source = object + + // Set length to object’s size. + length = object.size + + // If object’s type attribute is not the empty byte sequence, set + // type to its value. + if (object.type) { + type = object.type + } + } else if (typeof object[Symbol.asyncIterator] === 'function') { + // If keepalive is true, then throw a TypeError. + if (keepalive) { + throw new TypeError('keepalive') + } + + // If object is disturbed or locked, then throw a TypeError. + if (util.isDisturbed(object) || object.locked) { + throw new TypeError( + 'Response body object should not be disturbed or locked' + ) + } + + stream = + object instanceof ReadableStream ? object : ReadableStreamFrom(object) + } + + // 11. If source is a byte sequence, then set action to a + // step that returns source and length to source’s length. + if (typeof source === 'string' || util.isBuffer(source)) { + length = Buffer.byteLength(source) + } + + // 12. If action is non-null, then run these steps in in parallel: + if (action != null) { + // Run action. + let iterator + stream = new ReadableStream({ + async start () { + iterator = action(object)[Symbol.asyncIterator]() + }, + async pull (controller) { + const { value, done } = await iterator.next() + if (done) { + // When running action is done, close stream. + queueMicrotask(() => { + controller.close() + }) + } else { + // Whenever one or more bytes are available and stream is not errored, + // enqueue a Uint8Array wrapping an ArrayBuffer containing the available + // bytes into stream. + if (!isErrored(stream)) { + controller.enqueue(new Uint8Array(value)) + } + } + return controller.desiredSize > 0 + }, + async cancel (reason) { + await iterator.return() + }, + type: undefined + }) + } + + // 13. Let body be a body whose stream is stream, source is source, + // and length is length. + const body = { stream, source, length } + + // 14. Return (body, type). + return [body, type] +} + +// https://fetch.spec.whatwg.org/#bodyinit-safely-extract +function safelyExtractBody (object, keepalive = false) { + if (!ReadableStream) { + // istanbul ignore next + ReadableStream = (__nccwpck_require__(5356).ReadableStream) + } + + // To safely extract a body and a `Content-Type` value from + // a byte sequence or BodyInit object object, run these steps: + + // 1. If object is a ReadableStream object, then: + if (object instanceof ReadableStream) { + // Assert: object is neither disturbed nor locked. + // istanbul ignore next + assert(!util.isDisturbed(object), 'The body has already been consumed.') + // istanbul ignore next + assert(!object.locked, 'The stream is locked.') + } + + // 2. Return the results of extracting object. + return extractBody(object, keepalive) +} + +function cloneBody (body) { + // To clone a body body, run these steps: + + // https://fetch.spec.whatwg.org/#concept-body-clone + + // 1. Let « out1, out2 » be the result of teeing body’s stream. + const [out1, out2] = body.stream.tee() + const out2Clone = structuredClone(out2, { transfer: [out2] }) + // This, for whatever reasons, unrefs out2Clone which allows + // the process to exit by itself. + const [, finalClone] = out2Clone.tee() + + // 2. Set body’s stream to out1. + body.stream = out1 + + // 3. Return a body whose stream is out2 and other members are copied from body. + return { + stream: finalClone, + length: body.length, + source: body.source + } +} + +async function * consumeBody (body) { + if (body) { + if (isUint8Array(body)) { + yield body + } else { + const stream = body.stream + + if (util.isDisturbed(stream)) { + throw new TypeError('The body has already been consumed.') + } + + if (stream.locked) { + throw new TypeError('The stream is locked.') + } + + // Compat. + stream[kBodyUsed] = true + + yield * stream + } + } +} + +function throwIfAborted (state) { + if (state.aborted) { + throw new DOMException('The operation was aborted.', 'AbortError') + } +} + +function bodyMixinMethods (instance) { + const methods = { + blob () { + // The blob() method steps are to return the result of + // running consume body with this and the following step + // given a byte sequence bytes: return a Blob whose + // contents are bytes and whose type attribute is this’s + // MIME type. + return specConsumeBody(this, (bytes) => { + let mimeType = bodyMimeType(this) + + if (mimeType === 'failure') { + mimeType = '' + } else if (mimeType) { + mimeType = serializeAMimeType(mimeType) + } + + // Return a Blob whose contents are bytes and type attribute + // is mimeType. + return new Blob([bytes], { type: mimeType }) + }, instance) + }, + + arrayBuffer () { + // The arrayBuffer() method steps are to return the result + // of running consume body with this and the following step + // given a byte sequence bytes: return a new ArrayBuffer + // whose contents are bytes. + return specConsumeBody(this, (bytes) => { + return new Uint8Array(bytes).buffer + }, instance) + }, + + text () { + // The text() method steps are to return the result of running + // consume body with this and UTF-8 decode. + return specConsumeBody(this, utf8DecodeBytes, instance) + }, + + json () { + // The json() method steps are to return the result of running + // consume body with this and parse JSON from bytes. + return specConsumeBody(this, parseJSONFromBytes, instance) + }, + + async formData () { + webidl.brandCheck(this, instance) + + throwIfAborted(this[kState]) + + const contentType = this.headers.get('Content-Type') + + // If mimeType’s essence is "multipart/form-data", then: + if (/multipart\/form-data/.test(contentType)) { + const headers = {} + for (const [key, value] of this.headers) headers[key.toLowerCase()] = value + + const responseFormData = new FormData() + + let busboy + + try { + busboy = new Busboy({ + headers, + preservePath: true + }) + } catch (err) { + throw new DOMException(`${err}`, 'AbortError') + } + + busboy.on('field', (name, value) => { + responseFormData.append(name, value) + }) + busboy.on('file', (name, value, filename, encoding, mimeType) => { + const chunks = [] + + if (encoding === 'base64' || encoding.toLowerCase() === 'base64') { + let base64chunk = '' + + value.on('data', (chunk) => { + base64chunk += chunk.toString().replace(/[\r\n]/gm, '') + + const end = base64chunk.length - base64chunk.length % 4 + chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64')) + + base64chunk = base64chunk.slice(end) + }) + value.on('end', () => { + chunks.push(Buffer.from(base64chunk, 'base64')) + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } else { + value.on('data', (chunk) => { + chunks.push(chunk) + }) + value.on('end', () => { + responseFormData.append(name, new File(chunks, filename, { type: mimeType })) + }) + } + }) + + const busboyResolve = new Promise((resolve, reject) => { + busboy.on('finish', resolve) + busboy.on('error', (err) => reject(new TypeError(err))) + }) + + if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk) + busboy.end() + await busboyResolve + + return responseFormData + } else if (/application\/x-www-form-urlencoded/.test(contentType)) { + // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then: + + // 1. Let entries be the result of parsing bytes. + let entries + try { + let text = '' + // application/x-www-form-urlencoded parser will keep the BOM. + // https://url.spec.whatwg.org/#concept-urlencoded-parser + // Note that streaming decoder is stateful and cannot be reused + const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true }) + + for await (const chunk of consumeBody(this[kState].body)) { + if (!isUint8Array(chunk)) { + throw new TypeError('Expected Uint8Array chunk') + } + text += streamingDecoder.decode(chunk, { stream: true }) + } + text += streamingDecoder.decode() + entries = new URLSearchParams(text) + } catch (err) { + // istanbul ignore next: Unclear when new URLSearchParams can fail on a string. + // 2. If entries is failure, then throw a TypeError. + throw Object.assign(new TypeError(), { cause: err }) + } + + // 3. Return a new FormData object whose entries are entries. + const formData = new FormData() + for (const [name, value] of entries) { + formData.append(name, value) + } + return formData + } else { + // Wait a tick before checking if the request has been aborted. + // Otherwise, a TypeError can be thrown when an AbortError should. + await Promise.resolve() + + throwIfAborted(this[kState]) + + // Otherwise, throw a TypeError. + throw webidl.errors.exception({ + header: `${instance.name}.formData`, + message: 'Could not parse content as FormData.' + }) + } + } + } + + return methods +} + +function mixinBody (prototype) { + Object.assign(prototype.prototype, bodyMixinMethods(prototype)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-consume-body + * @param {Response|Request} object + * @param {(value: unknown) => unknown} convertBytesToJSValue + * @param {Response|Request} instance + */ +async function specConsumeBody (object, convertBytesToJSValue, instance) { + webidl.brandCheck(object, instance) + + throwIfAborted(object[kState]) + + // 1. If object is unusable, then return a promise rejected + // with a TypeError. + if (bodyUnusable(object[kState].body)) { + throw new TypeError('Body is unusable') + } + + // 2. Let promise be a new promise. + const promise = createDeferredPromise() + + // 3. Let errorSteps given error be to reject promise with error. + const errorSteps = (error) => promise.reject(error) + + // 4. Let successSteps given a byte sequence data be to resolve + // promise with the result of running convertBytesToJSValue + // with data. If that threw an exception, then run errorSteps + // with that exception. + const successSteps = (data) => { + try { + promise.resolve(convertBytesToJSValue(data)) + } catch (e) { + errorSteps(e) + } + } + + // 5. If object’s body is null, then run successSteps with an + // empty byte sequence. + if (object[kState].body == null) { + successSteps(new Uint8Array()) + return promise.promise + } + + // 6. Otherwise, fully read object’s body given successSteps, + // errorSteps, and object’s relevant global object. + await fullyReadBody(object[kState].body, successSteps, errorSteps) + + // 7. Return promise. + return promise.promise +} + +// https://fetch.spec.whatwg.org/#body-unusable +function bodyUnusable (body) { + // An object including the Body interface mixin is + // said to be unusable if its body is non-null and + // its body’s stream is disturbed or locked. + return body != null && (body.stream.locked || util.isDisturbed(body.stream)) +} + +/** + * @see https://encoding.spec.whatwg.org/#utf-8-decode + * @param {Buffer} buffer + */ +function utf8DecodeBytes (buffer) { + if (buffer.length === 0) { + return '' + } + + // 1. Let buffer be the result of peeking three bytes from + // ioQueue, converted to a byte sequence. + + // 2. If buffer is 0xEF 0xBB 0xBF, then read three + // bytes from ioQueue. (Do nothing with those bytes.) + if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { + buffer = buffer.subarray(3) + } + + // 3. Process a queue with an instance of UTF-8’s + // decoder, ioQueue, output, and "replacement". + const output = textDecoder.decode(buffer) + + // 4. Return output. + return output +} + +/** + * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value + * @param {Uint8Array} bytes + */ +function parseJSONFromBytes (bytes) { + return JSON.parse(utf8DecodeBytes(bytes)) +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-body-mime-type + * @param {import('./response').Response|import('./request').Request} object + */ +function bodyMimeType (object) { + const { headersList } = object[kState] + const contentType = headersList.get('content-type') + + if (contentType === null) { + return 'failure' + } + + return parseMIMEType(contentType) +} + +module.exports = { + extractBody, + safelyExtractBody, + cloneBody, + mixinBody +} + + +/***/ }), + +/***/ 1037: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(1267) + +const corsSafeListedMethods = ['GET', 'HEAD', 'POST'] +const corsSafeListedMethodsSet = new Set(corsSafeListedMethods) + +const nullBodyStatus = [101, 204, 205, 304] + +const redirectStatus = [301, 302, 303, 307, 308] +const redirectStatusSet = new Set(redirectStatus) + +// https://fetch.spec.whatwg.org/#block-bad-port +const badPorts = [ + '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79', + '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137', + '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532', + '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723', + '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697', + '10080' +] + +const badPortsSet = new Set(badPorts) + +// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies +const referrerPolicy = [ + '', + 'no-referrer', + 'no-referrer-when-downgrade', + 'same-origin', + 'origin', + 'strict-origin', + 'origin-when-cross-origin', + 'strict-origin-when-cross-origin', + 'unsafe-url' +] +const referrerPolicySet = new Set(referrerPolicy) + +const requestRedirect = ['follow', 'manual', 'error'] + +const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE'] +const safeMethodsSet = new Set(safeMethods) + +const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors'] + +const requestCredentials = ['omit', 'same-origin', 'include'] + +const requestCache = [ + 'default', + 'no-store', + 'reload', + 'no-cache', + 'force-cache', + 'only-if-cached' +] + +// https://fetch.spec.whatwg.org/#request-body-header-name +const requestBodyHeader = [ + 'content-encoding', + 'content-language', + 'content-location', + 'content-type', + // See https://github.com/nodejs/undici/issues/2021 + // 'Content-Length' is a forbidden header name, which is typically + // removed in the Headers implementation. However, undici doesn't + // filter out headers, so we add it here. + 'content-length' +] + +// https://fetch.spec.whatwg.org/#enumdef-requestduplex +const requestDuplex = [ + 'half' +] + +// http://fetch.spec.whatwg.org/#forbidden-method +const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK'] +const forbiddenMethodsSet = new Set(forbiddenMethods) + +const subresource = [ + 'audio', + 'audioworklet', + 'font', + 'image', + 'manifest', + 'paintworklet', + 'script', + 'style', + 'track', + 'video', + 'xslt', + '' +] +const subresourceSet = new Set(subresource) + +/** @type {globalThis['DOMException']} */ +const DOMException = globalThis.DOMException ?? (() => { + // DOMException was only made a global in Node v17.0.0, + // but fetch supports >= v16.8. + try { + atob('~') + } catch (err) { + return Object.getPrototypeOf(err).constructor + } +})() + +let channel + +/** @type {globalThis['structuredClone']} */ +const structuredClone = + globalThis.structuredClone ?? + // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js + // structuredClone was added in v17.0.0, but fetch supports v16.8 + function structuredClone (value, options = undefined) { + if (arguments.length === 0) { + throw new TypeError('missing argument') + } + + if (!channel) { + channel = new MessageChannel() + } + channel.port1.unref() + channel.port2.unref() + channel.port1.postMessage(value, options?.transfer) + return receiveMessageOnPort(channel.port2).message + } + +module.exports = { + DOMException, + structuredClone, + subresource, + forbiddenMethods, + requestBodyHeader, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + redirectStatus, + corsSafeListedMethods, + nullBodyStatus, + safeMethods, + badPorts, + requestDuplex, + subresourceSet, + badPortsSet, + redirectStatusSet, + corsSafeListedMethodsSet, + safeMethodsSet, + forbiddenMethodsSet, + referrerPolicySet +} + + +/***/ }), + +/***/ 685: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(9491) +const { atob } = __nccwpck_require__(4300) +const { isomorphicDecode } = __nccwpck_require__(2538) + +const encoder = new TextEncoder() + +/** + * @see https://mimesniff.spec.whatwg.org/#http-token-code-point + */ +const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/ +const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line +/** + * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point + */ +const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line + +// https://fetch.spec.whatwg.org/#data-url-processor +/** @param {URL} dataURL */ +function dataURLProcessor (dataURL) { + // 1. Assert: dataURL’s scheme is "data". + assert(dataURL.protocol === 'data:') + + // 2. Let input be the result of running the URL + // serializer on dataURL with exclude fragment + // set to true. + let input = URLSerializer(dataURL, true) + + // 3. Remove the leading "data:" string from input. + input = input.slice(5) + + // 4. Let position point at the start of input. + const position = { position: 0 } + + // 5. Let mimeType be the result of collecting a + // sequence of code points that are not equal + // to U+002C (,), given position. + let mimeType = collectASequenceOfCodePointsFast( + ',', + input, + position + ) + + // 6. Strip leading and trailing ASCII whitespace + // from mimeType. + // Undici implementation note: we need to store the + // length because if the mimetype has spaces removed, + // the wrong amount will be sliced from the input in + // step #9 + const mimeTypeLength = mimeType.length + mimeType = removeASCIIWhitespace(mimeType, true, true) + + // 7. If position is past the end of input, then + // return failure + if (position.position >= input.length) { + return 'failure' + } + + // 8. Advance position by 1. + position.position++ + + // 9. Let encodedBody be the remainder of input. + const encodedBody = input.slice(mimeTypeLength + 1) + + // 10. Let body be the percent-decoding of encodedBody. + let body = stringPercentDecode(encodedBody) + + // 11. If mimeType ends with U+003B (;), followed by + // zero or more U+0020 SPACE, followed by an ASCII + // case-insensitive match for "base64", then: + if (/;(\u0020){0,}base64$/i.test(mimeType)) { + // 1. Let stringBody be the isomorphic decode of body. + const stringBody = isomorphicDecode(body) + + // 2. Set body to the forgiving-base64 decode of + // stringBody. + body = forgivingBase64(stringBody) + + // 3. If body is failure, then return failure. + if (body === 'failure') { + return 'failure' + } + + // 4. Remove the last 6 code points from mimeType. + mimeType = mimeType.slice(0, -6) + + // 5. Remove trailing U+0020 SPACE code points from mimeType, + // if any. + mimeType = mimeType.replace(/(\u0020)+$/, '') + + // 6. Remove the last U+003B (;) code point from mimeType. + mimeType = mimeType.slice(0, -1) + } + + // 12. If mimeType starts with U+003B (;), then prepend + // "text/plain" to mimeType. + if (mimeType.startsWith(';')) { + mimeType = 'text/plain' + mimeType + } + + // 13. Let mimeTypeRecord be the result of parsing + // mimeType. + let mimeTypeRecord = parseMIMEType(mimeType) + + // 14. If mimeTypeRecord is failure, then set + // mimeTypeRecord to text/plain;charset=US-ASCII. + if (mimeTypeRecord === 'failure') { + mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII') + } + + // 15. Return a new data: URL struct whose MIME + // type is mimeTypeRecord and body is body. + // https://fetch.spec.whatwg.org/#data-url-struct + return { mimeType: mimeTypeRecord, body } +} + +// https://url.spec.whatwg.org/#concept-url-serializer +/** + * @param {URL} url + * @param {boolean} excludeFragment + */ +function URLSerializer (url, excludeFragment = false) { + if (!excludeFragment) { + return url.href + } + + const href = url.href + const hashLength = url.hash.length + + return hashLength === 0 ? href : href.substring(0, href.length - hashLength) +} + +// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points +/** + * @param {(char: string) => boolean} condition + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePoints (condition, input, position) { + // 1. Let result be the empty string. + let result = '' + + // 2. While position doesn’t point past the end of input and the + // code point at position within input meets the condition condition: + while (position.position < input.length && condition(input[position.position])) { + // 1. Append that code point to the end of result. + result += input[position.position] + + // 2. Advance position by 1. + position.position++ + } + + // 3. Return result. + return result +} + +/** + * A faster collectASequenceOfCodePoints that only works when comparing a single character. + * @param {string} char + * @param {string} input + * @param {{ position: number }} position + */ +function collectASequenceOfCodePointsFast (char, input, position) { + const idx = input.indexOf(char, position.position) + const start = position.position + + if (idx === -1) { + position.position = input.length + return input.slice(start) + } + + position.position = idx + return input.slice(start, position.position) +} + +// https://url.spec.whatwg.org/#string-percent-decode +/** @param {string} input */ +function stringPercentDecode (input) { + // 1. Let bytes be the UTF-8 encoding of input. + const bytes = encoder.encode(input) + + // 2. Return the percent-decoding of bytes. + return percentDecode(bytes) +} + +// https://url.spec.whatwg.org/#percent-decode +/** @param {Uint8Array} input */ +function percentDecode (input) { + // 1. Let output be an empty byte sequence. + /** @type {number[]} */ + const output = [] + + // 2. For each byte byte in input: + for (let i = 0; i < input.length; i++) { + const byte = input[i] + + // 1. If byte is not 0x25 (%), then append byte to output. + if (byte !== 0x25) { + output.push(byte) + + // 2. Otherwise, if byte is 0x25 (%) and the next two bytes + // after byte in input are not in the ranges + // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F), + // and 0x61 (a) to 0x66 (f), all inclusive, append byte + // to output. + } else if ( + byte === 0x25 && + !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2])) + ) { + output.push(0x25) + + // 3. Otherwise: + } else { + // 1. Let bytePoint be the two bytes after byte in input, + // decoded, and then interpreted as hexadecimal number. + const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2]) + const bytePoint = Number.parseInt(nextTwoBytes, 16) + + // 2. Append a byte whose value is bytePoint to output. + output.push(bytePoint) + + // 3. Skip the next two bytes in input. + i += 2 + } + } + + // 3. Return output. + return Uint8Array.from(output) +} + +// https://mimesniff.spec.whatwg.org/#parse-a-mime-type +/** @param {string} input */ +function parseMIMEType (input) { + // 1. Remove any leading and trailing HTTP whitespace + // from input. + input = removeHTTPWhitespace(input, true, true) + + // 2. Let position be a position variable for input, + // initially pointing at the start of input. + const position = { position: 0 } + + // 3. Let type be the result of collecting a sequence + // of code points that are not U+002F (/) from + // input, given position. + const type = collectASequenceOfCodePointsFast( + '/', + input, + position + ) + + // 4. If type is the empty string or does not solely + // contain HTTP token code points, then return failure. + // https://mimesniff.spec.whatwg.org/#http-token-code-point + if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) { + return 'failure' + } + + // 5. If position is past the end of input, then return + // failure + if (position.position > input.length) { + return 'failure' + } + + // 6. Advance position by 1. (This skips past U+002F (/).) + position.position++ + + // 7. Let subtype be the result of collecting a sequence of + // code points that are not U+003B (;) from input, given + // position. + let subtype = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 8. Remove any trailing HTTP whitespace from subtype. + subtype = removeHTTPWhitespace(subtype, false, true) + + // 9. If subtype is the empty string or does not solely + // contain HTTP token code points, then return failure. + if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) { + return 'failure' + } + + const typeLowercase = type.toLowerCase() + const subtypeLowercase = subtype.toLowerCase() + + // 10. Let mimeType be a new MIME type record whose type + // is type, in ASCII lowercase, and subtype is subtype, + // in ASCII lowercase. + // https://mimesniff.spec.whatwg.org/#mime-type + const mimeType = { + type: typeLowercase, + subtype: subtypeLowercase, + /** @type {Map} */ + parameters: new Map(), + // https://mimesniff.spec.whatwg.org/#mime-type-essence + essence: `${typeLowercase}/${subtypeLowercase}` + } + + // 11. While position is not past the end of input: + while (position.position < input.length) { + // 1. Advance position by 1. (This skips past U+003B (;).) + position.position++ + + // 2. Collect a sequence of code points that are HTTP + // whitespace from input given position. + collectASequenceOfCodePoints( + // https://fetch.spec.whatwg.org/#http-whitespace + char => HTTP_WHITESPACE_REGEX.test(char), + input, + position + ) + + // 3. Let parameterName be the result of collecting a + // sequence of code points that are not U+003B (;) + // or U+003D (=) from input, given position. + let parameterName = collectASequenceOfCodePoints( + (char) => char !== ';' && char !== '=', + input, + position + ) + + // 4. Set parameterName to parameterName, in ASCII + // lowercase. + parameterName = parameterName.toLowerCase() + + // 5. If position is not past the end of input, then: + if (position.position < input.length) { + // 1. If the code point at position within input is + // U+003B (;), then continue. + if (input[position.position] === ';') { + continue + } + + // 2. Advance position by 1. (This skips past U+003D (=).) + position.position++ + } + + // 6. If position is past the end of input, then break. + if (position.position > input.length) { + break + } + + // 7. Let parameterValue be null. + let parameterValue = null + + // 8. If the code point at position within input is + // U+0022 ("), then: + if (input[position.position] === '"') { + // 1. Set parameterValue to the result of collecting + // an HTTP quoted string from input, given position + // and the extract-value flag. + parameterValue = collectAnHTTPQuotedString(input, position, true) + + // 2. Collect a sequence of code points that are not + // U+003B (;) from input, given position. + collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 9. Otherwise: + } else { + // 1. Set parameterValue to the result of collecting + // a sequence of code points that are not U+003B (;) + // from input, given position. + parameterValue = collectASequenceOfCodePointsFast( + ';', + input, + position + ) + + // 2. Remove any trailing HTTP whitespace from parameterValue. + parameterValue = removeHTTPWhitespace(parameterValue, false, true) + + // 3. If parameterValue is the empty string, then continue. + if (parameterValue.length === 0) { + continue + } + } + + // 10. If all of the following are true + // - parameterName is not the empty string + // - parameterName solely contains HTTP token code points + // - parameterValue solely contains HTTP quoted-string token code points + // - mimeType’s parameters[parameterName] does not exist + // then set mimeType’s parameters[parameterName] to parameterValue. + if ( + parameterName.length !== 0 && + HTTP_TOKEN_CODEPOINTS.test(parameterName) && + (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) && + !mimeType.parameters.has(parameterName) + ) { + mimeType.parameters.set(parameterName, parameterValue) + } + } + + // 12. Return mimeType. + return mimeType +} + +// https://infra.spec.whatwg.org/#forgiving-base64-decode +/** @param {string} data */ +function forgivingBase64 (data) { + // 1. Remove all ASCII whitespace from data. + data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '') // eslint-disable-line + + // 2. If data’s code point length divides by 4 leaving + // no remainder, then: + if (data.length % 4 === 0) { + // 1. If data ends with one or two U+003D (=) code points, + // then remove them from data. + data = data.replace(/=?=$/, '') + } + + // 3. If data’s code point length divides by 4 leaving + // a remainder of 1, then return failure. + if (data.length % 4 === 1) { + return 'failure' + } + + // 4. If data contains a code point that is not one of + // U+002B (+) + // U+002F (/) + // ASCII alphanumeric + // then return failure. + if (/[^+/0-9A-Za-z]/.test(data)) { + return 'failure' + } + + const binary = atob(data) + const bytes = new Uint8Array(binary.length) + + for (let byte = 0; byte < binary.length; byte++) { + bytes[byte] = binary.charCodeAt(byte) + } + + return bytes +} + +// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string +// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string +/** + * @param {string} input + * @param {{ position: number }} position + * @param {boolean?} extractValue + */ +function collectAnHTTPQuotedString (input, position, extractValue) { + // 1. Let positionStart be position. + const positionStart = position.position + + // 2. Let value be the empty string. + let value = '' + + // 3. Assert: the code point at position within input + // is U+0022 ("). + assert(input[position.position] === '"') + + // 4. Advance position by 1. + position.position++ + + // 5. While true: + while (true) { + // 1. Append the result of collecting a sequence of code points + // that are not U+0022 (") or U+005C (\) from input, given + // position, to value. + value += collectASequenceOfCodePoints( + (char) => char !== '"' && char !== '\\', + input, + position + ) + + // 2. If position is past the end of input, then break. + if (position.position >= input.length) { + break + } + + // 3. Let quoteOrBackslash be the code point at position within + // input. + const quoteOrBackslash = input[position.position] + + // 4. Advance position by 1. + position.position++ + + // 5. If quoteOrBackslash is U+005C (\), then: + if (quoteOrBackslash === '\\') { + // 1. If position is past the end of input, then append + // U+005C (\) to value and break. + if (position.position >= input.length) { + value += '\\' + break + } + + // 2. Append the code point at position within input to value. + value += input[position.position] + + // 3. Advance position by 1. + position.position++ + + // 6. Otherwise: + } else { + // 1. Assert: quoteOrBackslash is U+0022 ("). + assert(quoteOrBackslash === '"') + + // 2. Break. + break + } + } + + // 6. If the extract-value flag is set, then return value. + if (extractValue) { + return value + } + + // 7. Return the code points from positionStart to position, + // inclusive, within input. + return input.slice(positionStart, position.position) +} + +/** + * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type + */ +function serializeAMimeType (mimeType) { + assert(mimeType !== 'failure') + const { parameters, essence } = mimeType + + // 1. Let serialization be the concatenation of mimeType’s + // type, U+002F (/), and mimeType’s subtype. + let serialization = essence + + // 2. For each name → value of mimeType’s parameters: + for (let [name, value] of parameters.entries()) { + // 1. Append U+003B (;) to serialization. + serialization += ';' + + // 2. Append name to serialization. + serialization += name + + // 3. Append U+003D (=) to serialization. + serialization += '=' + + // 4. If value does not solely contain HTTP token code + // points or value is the empty string, then: + if (!HTTP_TOKEN_CODEPOINTS.test(value)) { + // 1. Precede each occurence of U+0022 (") or + // U+005C (\) in value with U+005C (\). + value = value.replace(/(\\|")/g, '\\$1') + + // 2. Prepend U+0022 (") to value. + value = '"' + value + + // 3. Append U+0022 (") to value. + value += '"' + } + + // 5. Append value to serialization. + serialization += value + } + + // 3. Return serialization. + return serialization +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} char + */ +function isHTTPWhiteSpace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === ' ' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-whitespace + * @param {string} str + */ +function removeHTTPWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +/** + * @see https://infra.spec.whatwg.org/#ascii-whitespace + * @param {string} char + */ +function isASCIIWhitespace (char) { + return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' ' +} + +/** + * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace + */ +function removeASCIIWhitespace (str, leading = true, trailing = true) { + let lead = 0 + let trail = str.length - 1 + + if (leading) { + for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++); + } + + if (trailing) { + for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--); + } + + return str.slice(lead, trail + 1) +} + +module.exports = { + dataURLProcessor, + URLSerializer, + collectASequenceOfCodePoints, + collectASequenceOfCodePointsFast, + stringPercentDecode, + parseMIMEType, + collectAnHTTPQuotedString, + serializeAMimeType +} + + +/***/ }), + +/***/ 8511: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Blob, File: NativeFile } = __nccwpck_require__(4300) +const { types } = __nccwpck_require__(3837) +const { kState } = __nccwpck_require__(5861) +const { isBlobLike } = __nccwpck_require__(2538) +const { webidl } = __nccwpck_require__(1744) +const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685) +const { kEnumerableProperty } = __nccwpck_require__(3983) +const encoder = new TextEncoder() + +class File extends Blob { + constructor (fileBits, fileName, options = {}) { + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' }) + + fileBits = webidl.converters['sequence'](fileBits) + fileName = webidl.converters.USVString(fileName) + options = webidl.converters.FilePropertyBag(options) + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + // Note: Blob handles this for us + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // 2. Convert every character in t to ASCII lowercase. + let t = options.type + let d + + // eslint-disable-next-line no-labels + substep: { + if (t) { + t = parseMIMEType(t) + + if (t === 'failure') { + t = '' + // eslint-disable-next-line no-labels + break substep + } + + t = serializeAMimeType(t).toLowerCase() + } + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + d = options.lastModified + } + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + super(processBlobParts(fileBits, options), { type: t }) + this[kState] = { + name: n, + lastModified: d, + type: t + } + } + + get name () { + webidl.brandCheck(this, File) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, File) + + return this[kState].lastModified + } + + get type () { + webidl.brandCheck(this, File) + + return this[kState].type + } +} + +class FileLike { + constructor (blobLike, fileName, options = {}) { + // TODO: argument idl type check + + // The File constructor is invoked with two or three parameters, depending + // on whether the optional dictionary parameter is used. When the File() + // constructor is invoked, user agents must run the following steps: + + // 1. Let bytes be the result of processing blob parts given fileBits and + // options. + + // 2. Let n be the fileName argument to the constructor. + const n = fileName + + // 3. Process FilePropertyBag dictionary argument by running the following + // substeps: + + // 1. If the type member is provided and is not the empty string, let t + // be set to the type dictionary member. If t contains any characters + // outside the range U+0020 to U+007E, then set t to the empty string + // and return from these substeps. + // TODO + const t = options.type + + // 2. Convert every character in t to ASCII lowercase. + // TODO + + // 3. If the lastModified member is provided, let d be set to the + // lastModified dictionary member. If it is not provided, set d to the + // current date and time represented as the number of milliseconds since + // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]). + const d = options.lastModified ?? Date.now() + + // 4. Return a new File object F such that: + // F refers to the bytes byte sequence. + // F.size is set to the number of total bytes in bytes. + // F.name is set to n. + // F.type is set to t. + // F.lastModified is set to d. + + this[kState] = { + blobLike, + name: n, + type: t, + lastModified: d + } + } + + stream (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.stream(...args) + } + + arrayBuffer (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.arrayBuffer(...args) + } + + slice (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.slice(...args) + } + + text (...args) { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.text(...args) + } + + get size () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.size + } + + get type () { + webidl.brandCheck(this, FileLike) + + return this[kState].blobLike.type + } + + get name () { + webidl.brandCheck(this, FileLike) + + return this[kState].name + } + + get lastModified () { + webidl.brandCheck(this, FileLike) + + return this[kState].lastModified + } + + get [Symbol.toStringTag] () { + return 'File' + } +} + +Object.defineProperties(File.prototype, { + [Symbol.toStringTag]: { + value: 'File', + configurable: true + }, + name: kEnumerableProperty, + lastModified: kEnumerableProperty +}) + +webidl.converters.Blob = webidl.interfaceConverter(Blob) + +webidl.converters.BlobPart = function (V, opts) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if ( + ArrayBuffer.isView(V) || + types.isAnyArrayBuffer(V) + ) { + return webidl.converters.BufferSource(V, opts) + } + } + + return webidl.converters.USVString(V, opts) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.BlobPart +) + +// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag +webidl.converters.FilePropertyBag = webidl.dictionaryConverter([ + { + key: 'lastModified', + converter: webidl.converters['long long'], + get defaultValue () { + return Date.now() + } + }, + { + key: 'type', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'endings', + converter: (value) => { + value = webidl.converters.DOMString(value) + value = value.toLowerCase() + + if (value !== 'native') { + value = 'transparent' + } + + return value + }, + defaultValue: 'transparent' + } +]) + +/** + * @see https://www.w3.org/TR/FileAPI/#process-blob-parts + * @param {(NodeJS.TypedArray|Blob|string)[]} parts + * @param {{ type: string, endings: string }} options + */ +function processBlobParts (parts, options) { + // 1. Let bytes be an empty sequence of bytes. + /** @type {NodeJS.TypedArray[]} */ + const bytes = [] + + // 2. For each element in parts: + for (const element of parts) { + // 1. If element is a USVString, run the following substeps: + if (typeof element === 'string') { + // 1. Let s be element. + let s = element + + // 2. If the endings member of options is "native", set s + // to the result of converting line endings to native + // of element. + if (options.endings === 'native') { + s = convertLineEndingsNative(s) + } + + // 3. Append the result of UTF-8 encoding s to bytes. + bytes.push(encoder.encode(s)) + } else if ( + types.isAnyArrayBuffer(element) || + types.isTypedArray(element) + ) { + // 2. If element is a BufferSource, get a copy of the + // bytes held by the buffer source, and append those + // bytes to bytes. + if (!element.buffer) { // ArrayBuffer + bytes.push(new Uint8Array(element)) + } else { + bytes.push( + new Uint8Array(element.buffer, element.byteOffset, element.byteLength) + ) + } + } else if (isBlobLike(element)) { + // 3. If element is a Blob, append the bytes it represents + // to bytes. + bytes.push(element) + } + } + + // 3. Return bytes. + return bytes +} + +/** + * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native + * @param {string} s + */ +function convertLineEndingsNative (s) { + // 1. Let native line ending be be the code point U+000A LF. + let nativeLineEnding = '\n' + + // 2. If the underlying platform’s conventions are to + // represent newlines as a carriage return and line feed + // sequence, set native line ending to the code point + // U+000D CR followed by the code point U+000A LF. + if (process.platform === 'win32') { + nativeLineEnding = '\r\n' + } + + return s.replace(/\r?\n/g, nativeLineEnding) +} + +// If this function is moved to ./util.js, some tools (such as +// rollup) will warn about circular dependencies. See: +// https://github.com/nodejs/undici/issues/1629 +function isFileLike (object) { + return ( + (NativeFile && object instanceof NativeFile) || + object instanceof File || ( + object && + (typeof object.stream === 'function' || + typeof object.arrayBuffer === 'function') && + object[Symbol.toStringTag] === 'File' + ) + ) +} + +module.exports = { File, FileLike, isFileLike } + + +/***/ }), + +/***/ 2015: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(2538) +const { kState } = __nccwpck_require__(5861) +const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(8511) +const { webidl } = __nccwpck_require__(1744) +const { Blob, File: NativeFile } = __nccwpck_require__(4300) + +/** @type {globalThis['File']} */ +const File = NativeFile ?? UndiciFile + +// https://xhr.spec.whatwg.org/#formdata +class FormData { + constructor (form) { + if (form !== undefined) { + throw webidl.errors.conversionFailed({ + prefix: 'FormData constructor', + argument: 'Argument 1', + types: ['undefined'] + }) + } + + this[kState] = [] + } + + append (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? webidl.converters.USVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with + // name, value, and filename if given. + const entry = makeEntry(name, value, filename) + + // 3. Append entry to this’s entry list. + this[kState].push(entry) + } + + delete (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' }) + + name = webidl.converters.USVString(name) + + // The delete(name) method steps are to remove all entries whose name + // is name from this’s entry list. + this[kState] = this[kState].filter(entry => entry.name !== name) + } + + get (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return null. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx === -1) { + return null + } + + // 2. Return the value of the first entry whose name is name from + // this’s entry list. + return this[kState][idx].value + } + + getAll (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' }) + + name = webidl.converters.USVString(name) + + // 1. If there is no entry whose name is name in this’s entry list, + // then return the empty list. + // 2. Return the values of all entries whose name is name, in order, + // from this’s entry list. + return this[kState] + .filter((entry) => entry.name === name) + .map((entry) => entry.value) + } + + has (name) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' }) + + name = webidl.converters.USVString(name) + + // The has(name) method steps are to return true if there is an entry + // whose name is name in this’s entry list; otherwise false. + return this[kState].findIndex((entry) => entry.name === name) !== -1 + } + + set (name, value, filename = undefined) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' }) + + if (arguments.length === 3 && !isBlobLike(value)) { + throw new TypeError( + "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'" + ) + } + + // The set(name, value) and set(name, blobValue, filename) method steps + // are: + + // 1. Let value be value if given; otherwise blobValue. + + name = webidl.converters.USVString(name) + value = isBlobLike(value) + ? webidl.converters.Blob(value, { strict: false }) + : webidl.converters.USVString(value) + filename = arguments.length === 3 + ? toUSVString(filename) + : undefined + + // 2. Let entry be the result of creating an entry with name, value, and + // filename if given. + const entry = makeEntry(name, value, filename) + + // 3. If there are entries in this’s entry list whose name is name, then + // replace the first such entry with entry and remove the others. + const idx = this[kState].findIndex((entry) => entry.name === name) + if (idx !== -1) { + this[kState] = [ + ...this[kState].slice(0, idx), + entry, + ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name) + ] + } else { + // 4. Otherwise, append entry to this’s entry list. + this[kState].push(entry) + } + } + + entries () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key+value' + ) + } + + keys () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'key' + ) + } + + values () { + webidl.brandCheck(this, FormData) + + return makeIterator( + () => this[kState].map(pair => [pair.name, pair.value]), + 'FormData', + 'value' + ) + } + + /** + * @param {(value: string, key: string, self: FormData) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, FormData) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } +} + +FormData.prototype[Symbol.iterator] = FormData.prototype.entries + +Object.defineProperties(FormData.prototype, { + [Symbol.toStringTag]: { + value: 'FormData', + configurable: true + } +}) + +/** + * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry + * @param {string} name + * @param {string|Blob} value + * @param {?string} filename + * @returns + */ +function makeEntry (name, value, filename) { + // 1. Set name to the result of converting name into a scalar value string. + // "To convert a string into a scalar value string, replace any surrogates + // with U+FFFD." + // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end + name = Buffer.from(name).toString('utf8') + + // 2. If value is a string, then set value to the result of converting + // value into a scalar value string. + if (typeof value === 'string') { + value = Buffer.from(value).toString('utf8') + } else { + // 3. Otherwise: + + // 1. If value is not a File object, then set value to a new File object, + // representing the same bytes, whose name attribute value is "blob" + if (!isFileLike(value)) { + value = value instanceof Blob + ? new File([value], 'blob', { type: value.type }) + : new FileLike(value, 'blob', { type: value.type }) + } + + // 2. If filename is given, then set value to a new File object, + // representing the same bytes, whose name attribute is filename. + if (filename !== undefined) { + /** @type {FilePropertyBag} */ + 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) + } + } + + // 4. Return an entry whose name is name and whose value is value. + return { name, value } +} + +module.exports = { FormData } + + +/***/ }), + +/***/ 1246: +/***/ ((module) => { + +"use strict"; + + +// In case of breaking changes, increase the version +// number to avoid conflicts. +const globalOrigin = Symbol.for('undici.globalOrigin.1') + +function getGlobalOrigin () { + return globalThis[globalOrigin] +} + +function setGlobalOrigin (newOrigin) { + if (newOrigin === undefined) { + Object.defineProperty(globalThis, globalOrigin, { + value: undefined, + writable: true, + enumerable: false, + configurable: false + }) + + return + } + + const parsedURL = new URL(newOrigin) + + if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') { + throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`) + } + + Object.defineProperty(globalThis, globalOrigin, { + value: parsedURL, + writable: true, + enumerable: false, + configurable: false + }) +} + +module.exports = { + getGlobalOrigin, + setGlobalOrigin +} + + +/***/ }), + +/***/ 554: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { kHeadersList, kConstruct } = __nccwpck_require__(2785) +const { kGuard } = __nccwpck_require__(5861) +const { kEnumerableProperty } = __nccwpck_require__(3983) +const { + makeIterator, + isValidHeaderName, + isValidHeaderValue +} = __nccwpck_require__(2538) +const { webidl } = __nccwpck_require__(1744) +const assert = __nccwpck_require__(9491) + +const kHeadersMap = Symbol('headers map') +const kHeadersSortedMap = Symbol('headers map sorted') + +/** + * @param {number} code + */ +function isHTTPWhiteSpaceCharCode (code) { + return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020 +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize + * @param {string} potentialValue + */ +function headerValueNormalize (potentialValue) { + // To normalize a byte sequence potentialValue, remove + // any leading and trailing HTTP whitespace bytes from + // potentialValue. + let i = 0; let j = potentialValue.length + + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j + while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i + + return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j) +} + +function fill (headers, object) { + // To fill a Headers object headers with a given object object, run these steps: + + // 1. If object is a sequence, then for each header in object: + // Note: webidl conversion to array has already been done. + if (Array.isArray(object)) { + for (let i = 0; i < object.length; ++i) { + const header = object[i] + // 1. If header does not contain exactly two items, then throw a TypeError. + if (header.length !== 2) { + throw webidl.errors.exception({ + header: 'Headers constructor', + message: `expected name/value pair to be length 2, found ${header.length}.` + }) + } + + // 2. Append (header’s first item, header’s second item) to headers. + appendHeader(headers, header[0], header[1]) + } + } else if (typeof object === 'object' && object !== null) { + // Note: null should throw + + // 2. Otherwise, object is a record, then for each key → value in object, + // append (key, value) to headers + const keys = Object.keys(object) + for (let i = 0; i < keys.length; ++i) { + appendHeader(headers, keys[i], object[keys[i]]) + } + } else { + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) + } +} + +/** + * @see https://fetch.spec.whatwg.org/#concept-headers-append + */ +function appendHeader (headers, name, value) { + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.append', + value, + type: 'header value' + }) + } + + // 3. If headers’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if headers’s guard is "request" and name is a + // forbidden header name, return. + // Note: undici does not implement forbidden header names + if (headers[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (headers[kGuard] === 'request-no-cors') { + // 5. Otherwise, if headers’s guard is "request-no-cors": + // TODO + } + + // 6. Otherwise, if headers’s guard is "response" and name is a + // forbidden response-header name, return. + + // 7. Append (name, value) to headers’s header list. + return headers[kHeadersList].append(name, value) + + // 8. If headers’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from headers +} + +class HeadersList { + /** @type {[string, string][]|null} */ + cookies = null + + constructor (init) { + if (init instanceof HeadersList) { + this[kHeadersMap] = new Map(init[kHeadersMap]) + this[kHeadersSortedMap] = init[kHeadersSortedMap] + this.cookies = init.cookies === null ? null : [...init.cookies] + } else { + this[kHeadersMap] = new Map(init) + this[kHeadersSortedMap] = null + } + } + + // https://fetch.spec.whatwg.org/#header-list-contains + contains (name) { + // A header list list contains a header name name if list + // contains a header whose name is a byte-case-insensitive + // match for name. + name = name.toLowerCase() + + return this[kHeadersMap].has(name) + } + + clear () { + this[kHeadersMap].clear() + this[kHeadersSortedMap] = null + this.cookies = null + } + + // https://fetch.spec.whatwg.org/#concept-header-list-append + append (name, value) { + this[kHeadersSortedMap] = null + + // 1. If list contains name, then set name to the first such + // header’s name. + const lowercaseName = name.toLowerCase() + const exists = this[kHeadersMap].get(lowercaseName) + + // 2. Append (name, value) to list. + if (exists) { + const delimiter = lowercaseName === 'cookie' ? '; ' : ', ' + this[kHeadersMap].set(lowercaseName, { + name: exists.name, + value: `${exists.value}${delimiter}${value}` + }) + } else { + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + if (lowercaseName === 'set-cookie') { + this.cookies ??= [] + this.cookies.push(value) + } + } + + // https://fetch.spec.whatwg.org/#concept-header-list-set + set (name, value) { + this[kHeadersSortedMap] = null + const lowercaseName = name.toLowerCase() + + if (lowercaseName === 'set-cookie') { + this.cookies = [value] + } + + // 1. If list contains name, then set the value of + // the first such header to value and remove the + // others. + // 2. Otherwise, append header (name, value) to list. + this[kHeadersMap].set(lowercaseName, { name, value }) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-delete + delete (name) { + this[kHeadersSortedMap] = null + + name = name.toLowerCase() + + if (name === 'set-cookie') { + this.cookies = null + } + + this[kHeadersMap].delete(name) + } + + // https://fetch.spec.whatwg.org/#concept-header-list-get + get (name) { + const value = this[kHeadersMap].get(name.toLowerCase()) + + // 1. If list does not contain name, then return null. + // 2. Return the values of all headers in list whose name + // is a byte-case-insensitive match for name, + // separated from each other by 0x2C 0x20, in order. + return value === undefined ? null : value.value + } + + * [Symbol.iterator] () { + // use the lowercased name + for (const [name, { value }] of this[kHeadersMap]) { + yield [name, value] + } + } + + get entries () { + const headers = {} + + if (this[kHeadersMap].size) { + for (const { name, value } of this[kHeadersMap].values()) { + headers[name] = value + } + } + + return headers + } +} + +// https://fetch.spec.whatwg.org/#headers-class +class Headers { + constructor (init = undefined) { + if (init === kConstruct) { + return + } + this[kHeadersList] = new HeadersList() + + // The new Headers(init) constructor steps are: + + // 1. Set this’s guard to "none". + this[kGuard] = 'none' + + // 2. If init is given, then fill this with init. + if (init !== undefined) { + init = webidl.converters.HeadersInit(init) + fill(this, init) + } + } + + // https://fetch.spec.whatwg.org/#dom-headers-append + append (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + return appendHeader(this, name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-delete + delete (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.delete', + value: name, + type: 'header name' + }) + } + + // 2. If this’s guard is "immutable", then throw a TypeError. + // 3. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 4. Otherwise, if this’s guard is "request-no-cors", name + // is not a no-CORS-safelisted request-header name, and + // name is not a privileged no-CORS request-header name, + // return. + // 5. Otherwise, if this’s guard is "response" and name is + // a forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 6. If this’s header list does not contain name, then + // return. + if (!this[kHeadersList].contains(name)) { + return + } + + // 7. Delete name from this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this. + this[kHeadersList].delete(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-get + get (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.get', + value: name, + type: 'header name' + }) + } + + // 2. Return the result of getting name from this’s header + // list. + return this[kHeadersList].get(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-has + has (name) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' }) + + name = webidl.converters.ByteString(name) + + // 1. If name is not a header name, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.has', + value: name, + type: 'header name' + }) + } + + // 2. Return true if this’s header list contains name; + // otherwise false. + return this[kHeadersList].contains(name) + } + + // https://fetch.spec.whatwg.org/#dom-headers-set + set (name, value) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' }) + + name = webidl.converters.ByteString(name) + value = webidl.converters.ByteString(value) + + // 1. Normalize value. + value = headerValueNormalize(value) + + // 2. If name is not a header name or value is not a + // header value, then throw a TypeError. + if (!isValidHeaderName(name)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value: name, + type: 'header name' + }) + } else if (!isValidHeaderValue(value)) { + throw webidl.errors.invalidArgument({ + prefix: 'Headers.set', + value, + type: 'header value' + }) + } + + // 3. If this’s guard is "immutable", then throw a TypeError. + // 4. Otherwise, if this’s guard is "request" and name is a + // forbidden header name, return. + // 5. Otherwise, if this’s guard is "request-no-cors" and + // name/value is not a no-CORS-safelisted request-header, + // return. + // 6. Otherwise, if this’s guard is "response" and name is a + // forbidden response-header name, return. + // Note: undici does not implement forbidden header names + if (this[kGuard] === 'immutable') { + throw new TypeError('immutable') + } else if (this[kGuard] === 'request-no-cors') { + // TODO + } + + // 7. Set (name, value) in this’s header list. + // 8. If this’s guard is "request-no-cors", then remove + // privileged no-CORS request headers from this + this[kHeadersList].set(name, value) + } + + // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie + getSetCookie () { + webidl.brandCheck(this, Headers) + + // 1. If this’s header list does not contain `Set-Cookie`, then return « ». + // 2. Return the values of all headers in this’s header list whose name is + // a byte-case-insensitive match for `Set-Cookie`, in order. + + const list = this[kHeadersList].cookies + + if (list) { + return [...list] + } + + return [] + } + + // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine + get [kHeadersSortedMap] () { + if (this[kHeadersList][kHeadersSortedMap]) { + return this[kHeadersList][kHeadersSortedMap] + } + + // 1. Let headers be an empty list of headers with the key being the name + // and value the value. + const headers = [] + + // 2. Let names be the result of convert header names to a sorted-lowercase + // set with all the names of the headers in list. + const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1) + const cookies = this[kHeadersList].cookies + + // 3. For each name of names: + for (let i = 0; i < names.length; ++i) { + const [name, value] = names[i] + // 1. If name is `set-cookie`, then: + if (name === 'set-cookie') { + // 1. Let values be a list of all values of headers in list whose name + // is a byte-case-insensitive match for name, in order. + + // 2. For each value of values: + // 1. Append (name, value) to headers. + for (let j = 0; j < cookies.length; ++j) { + headers.push([name, cookies[j]]) + } + } else { + // 2. Otherwise: + + // 1. Let value be the result of getting name from list. + + // 2. Assert: value is non-null. + assert(value !== null) + + // 3. Append (name, value) to headers. + headers.push([name, value]) + } + } + + this[kHeadersList][kHeadersSortedMap] = headers + + // 4. Return headers. + return headers + } + + keys () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key' + ) + } + + values () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'value' + ) + } + + entries () { + webidl.brandCheck(this, Headers) + + if (this[kGuard] === 'immutable') { + const value = this[kHeadersSortedMap] + return makeIterator(() => value, 'Headers', + 'key+value') + } + + return makeIterator( + () => [...this[kHeadersSortedMap].values()], + 'Headers', + 'key+value' + ) + } + + /** + * @param {(value: string, key: string, self: Headers) => void} callbackFn + * @param {unknown} thisArg + */ + forEach (callbackFn, thisArg = globalThis) { + webidl.brandCheck(this, Headers) + + webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' }) + + if (typeof callbackFn !== 'function') { + throw new TypeError( + "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'." + ) + } + + for (const [key, value] of this) { + callbackFn.apply(thisArg, [value, key, this]) + } + } + + [Symbol.for('nodejs.util.inspect.custom')] () { + webidl.brandCheck(this, Headers) + + return this[kHeadersList] + } +} + +Headers.prototype[Symbol.iterator] = Headers.prototype.entries + +Object.defineProperties(Headers.prototype, { + append: kEnumerableProperty, + delete: kEnumerableProperty, + get: kEnumerableProperty, + has: kEnumerableProperty, + set: kEnumerableProperty, + getSetCookie: kEnumerableProperty, + keys: kEnumerableProperty, + values: kEnumerableProperty, + entries: kEnumerableProperty, + forEach: kEnumerableProperty, + [Symbol.iterator]: { enumerable: false }, + [Symbol.toStringTag]: { + value: 'Headers', + configurable: true + } +}) + +webidl.converters.HeadersInit = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (V[Symbol.iterator]) { + return webidl.converters['sequence>'](V) + } + + return webidl.converters['record'](V) + } + + throw webidl.errors.conversionFailed({ + prefix: 'Headers constructor', + argument: 'Argument 1', + types: ['sequence>', 'record'] + }) +} + +module.exports = { + fill, + Headers, + HeadersList +} + + +/***/ }), + +/***/ 4881: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +// https://github.com/Ethan-Arrowood/undici-fetch + + + +const { + Response, + makeNetworkError, + makeAppropriateNetworkError, + filterResponse, + makeResponse +} = __nccwpck_require__(7823) +const { Headers } = __nccwpck_require__(554) +const { Request, makeRequest } = __nccwpck_require__(8359) +const zlib = __nccwpck_require__(9796) +const { + bytesMatch, + makePolicyContainer, + clonePolicyContainer, + requestBadPort, + TAOCheck, + appendRequestOriginHeader, + responseLocationURL, + requestCurrentURL, + setRequestReferrerPolicyOnRedirect, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + createOpaqueTimingInfo, + appendFetchMetadata, + corsCheck, + crossOriginResourcePolicyCheck, + determineRequestsReferrer, + coarsenedSharedCurrentTime, + createDeferredPromise, + isBlobLike, + sameOrigin, + isCancelled, + isAborted, + isErrorLike, + fullyReadBody, + readableStreamClose, + isomorphicEncode, + urlIsLocal, + urlIsHttpHttpsScheme, + urlHasHttpsScheme +} = __nccwpck_require__(2538) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861) +const assert = __nccwpck_require__(9491) +const { safelyExtractBody } = __nccwpck_require__(1472) +const { + redirectStatusSet, + nullBodyStatus, + safeMethodsSet, + requestBodyHeader, + subresourceSet, + DOMException +} = __nccwpck_require__(1037) +const { kHeadersList } = __nccwpck_require__(2785) +const EE = __nccwpck_require__(2361) +const { Readable, pipeline } = __nccwpck_require__(2781) +const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(3983) +const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(685) +const { TransformStream } = __nccwpck_require__(5356) +const { getGlobalDispatcher } = __nccwpck_require__(1892) +const { webidl } = __nccwpck_require__(1744) +const { STATUS_CODES } = __nccwpck_require__(3685) +const GET_OR_HEAD = ['GET', 'HEAD'] + +/** @type {import('buffer').resolveObjectURL} */ +let resolveObjectURL +let ReadableStream = globalThis.ReadableStream + +class Fetch extends EE { + constructor (dispatcher) { + super() + + this.dispatcher = dispatcher + this.connection = null + this.dump = false + this.state = 'ongoing' + // 2 terminated listeners get added per request, + // but only 1 gets removed. If there are 20 redirects, + // 21 listeners will be added. + // See https://github.com/nodejs/undici/issues/1711 + // TODO (fix): Find and fix root cause for leaked listener. + this.setMaxListeners(21) + } + + terminate (reason) { + if (this.state !== 'ongoing') { + return + } + + this.state = 'terminated' + this.connection?.destroy(reason) + this.emit('terminated', reason) + } + + // https://fetch.spec.whatwg.org/#fetch-controller-abort + abort (error) { + if (this.state !== 'ongoing') { + return + } + + // 1. Set controller’s state to "aborted". + this.state = 'aborted' + + // 2. Let fallbackError be an "AbortError" DOMException. + // 3. Set error to fallbackError if it is not given. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 4. Let serializedError be StructuredSerialize(error). + // If that threw an exception, catch it, and let + // serializedError be StructuredSerialize(fallbackError). + + // 5. Set controller’s serialized abort reason to serializedError. + this.serializedAbortReason = error + + this.connection?.destroy(error) + this.emit('terminated', error) + } +} + +// https://fetch.spec.whatwg.org/#fetch-method +function fetch (input, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' }) + + // 1. Let p be a new promise. + const p = createDeferredPromise() + + // 2. Let requestObject be the result of invoking the initial value of + // Request as constructor with input and init as arguments. If this throws + // an exception, reject p with it and return p. + let requestObject + + try { + requestObject = new Request(input, init) + } catch (e) { + p.reject(e) + return p.promise + } + + // 3. Let request be requestObject’s request. + const request = requestObject[kState] + + // 4. If requestObject’s signal’s aborted flag is set, then: + if (requestObject.signal.aborted) { + // 1. Abort the fetch() call with p, request, null, and + // requestObject’s signal’s abort reason. + abortFetch(p, request, null, requestObject.signal.reason) + + // 2. Return p. + return p.promise + } + + // 5. Let globalObject be request’s client’s global object. + const globalObject = request.client.globalObject + + // 6. If globalObject is a ServiceWorkerGlobalScope object, then set + // request’s service-workers mode to "none". + if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') { + request.serviceWorkers = 'none' + } + + // 7. Let responseObject be null. + let responseObject = null + + // 8. Let relevantRealm be this’s relevant Realm. + const relevantRealm = null + + // 9. Let locallyAborted be false. + let locallyAborted = false + + // 10. Let controller be null. + let controller = null + + // 11. Add the following abort steps to requestObject’s signal: + addAbortListener( + requestObject.signal, + () => { + // 1. Set locallyAborted to true. + locallyAborted = true + + // 2. Assert: controller is non-null. + assert(controller != null) + + // 3. Abort controller with requestObject’s signal’s abort reason. + controller.abort(requestObject.signal.reason) + + // 4. Abort the fetch() call with p, request, responseObject, + // and requestObject’s signal’s abort reason. + abortFetch(p, request, responseObject, requestObject.signal.reason) + } + ) + + // 12. Let handleFetchDone given response response be to finalize and + // report timing with response, globalObject, and "fetch". + const handleFetchDone = (response) => + finalizeAndReportTiming(response, 'fetch') + + // 13. Set controller to the result of calling fetch given request, + // with processResponseEndOfBody set to handleFetchDone, and processResponse + // given response being these substeps: + + const processResponse = (response) => { + // 1. If locallyAborted is true, terminate these substeps. + if (locallyAborted) { + return Promise.resolve() + } + + // 2. If response’s aborted flag is set, then: + if (response.aborted) { + // 1. Let deserializedError be the result of deserialize a serialized + // abort reason given controller’s serialized abort reason and + // relevantRealm. + + // 2. Abort the fetch() call with p, request, responseObject, and + // deserializedError. + + abortFetch(p, request, responseObject, controller.serializedAbortReason) + return Promise.resolve() + } + + // 3. If response is a network error, then reject p with a TypeError + // and terminate these substeps. + if (response.type === 'error') { + p.reject( + Object.assign(new TypeError('fetch failed'), { cause: response.error }) + ) + return Promise.resolve() + } + + // 4. Set responseObject to the result of creating a Response object, + // given response, "immutable", and relevantRealm. + responseObject = new Response() + responseObject[kState] = response + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = response.headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Resolve p with responseObject. + p.resolve(responseObject) + } + + controller = fetching({ + request, + processResponseEndOfBody: handleFetchDone, + processResponse, + dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici + }) + + // 14. Return p. + return p.promise +} + +// https://fetch.spec.whatwg.org/#finalize-and-report-timing +function finalizeAndReportTiming (response, initiatorType = 'other') { + // 1. If response is an aborted network error, then return. + if (response.type === 'error' && response.aborted) { + return + } + + // 2. If response’s URL list is null or empty, then return. + if (!response.urlList?.length) { + return + } + + // 3. Let originalURL be response’s URL list[0]. + const originalURL = response.urlList[0] + + // 4. Let timingInfo be response’s timing info. + let timingInfo = response.timingInfo + + // 5. Let cacheState be response’s cache state. + let cacheState = response.cacheState + + // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return. + if (!urlIsHttpHttpsScheme(originalURL)) { + return + } + + // 7. If timingInfo is null, then return. + if (timingInfo === null) { + return + } + + // 8. If response’s timing allow passed flag is not set, then: + if (!response.timingAllowPassed) { + // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo. + timingInfo = createOpaqueTimingInfo({ + startTime: timingInfo.startTime + }) + + // 2. Set cacheState to the empty string. + cacheState = '' + } + + // 9. Set timingInfo’s end time to the coarsened shared current time + // given global’s relevant settings object’s cross-origin isolated + // capability. + // TODO: given global’s relevant settings object’s cross-origin isolated + // capability? + timingInfo.endTime = coarsenedSharedCurrentTime() + + // 10. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 11. Mark resource timing for timingInfo, originalURL, initiatorType, + // global, and cacheState. + markResourceTiming( + timingInfo, + originalURL, + initiatorType, + globalThis, + cacheState + ) +} + +// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing +function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) { + if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) { + performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState) + } +} + +// https://fetch.spec.whatwg.org/#abort-fetch +function abortFetch (p, request, responseObject, error) { + // Note: AbortSignal.reason was added in node v17.2.0 + // which would give us an undefined error to reject with. + // Remove this once node v16 is no longer supported. + if (!error) { + error = new DOMException('The operation was aborted.', 'AbortError') + } + + // 1. Reject promise with error. + p.reject(error) + + // 2. If request’s body is not null and is readable, then cancel request’s + // body with error. + if (request.body != null && isReadable(request.body?.stream)) { + request.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } + + // 3. If responseObject is null, then return. + if (responseObject == null) { + return + } + + // 4. Let response be responseObject’s response. + const response = responseObject[kState] + + // 5. If response’s body is not null and is readable, then error response’s + // body with error. + if (response.body != null && isReadable(response.body?.stream)) { + response.body.stream.cancel(error).catch((err) => { + if (err.code === 'ERR_INVALID_STATE') { + // Node bug? + return + } + throw err + }) + } +} + +// https://fetch.spec.whatwg.org/#fetching +function fetching ({ + request, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseEndOfBody, + processResponseConsumeBody, + useParallelQueue = false, + dispatcher // undici +}) { + // 1. Let taskDestination be null. + let taskDestination = null + + // 2. Let crossOriginIsolatedCapability be false. + let crossOriginIsolatedCapability = false + + // 3. If request’s client is non-null, then: + if (request.client != null) { + // 1. Set taskDestination to request’s client’s global object. + taskDestination = request.client.globalObject + + // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin + // isolated capability. + crossOriginIsolatedCapability = + request.client.crossOriginIsolatedCapability + } + + // 4. If useParallelQueue is true, then set taskDestination to the result of + // starting a new parallel queue. + // TODO + + // 5. Let timingInfo be a new fetch timing info whose start time and + // post-redirect start time are the coarsened shared current time given + // crossOriginIsolatedCapability. + const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability) + const timingInfo = createOpaqueTimingInfo({ + startTime: currenTime + }) + + // 6. Let fetchParams be a new fetch params whose + // request is request, + // timing info is timingInfo, + // process request body chunk length is processRequestBodyChunkLength, + // process request end-of-body is processRequestEndOfBody, + // process response is processResponse, + // process response consume body is processResponseConsumeBody, + // process response end-of-body is processResponseEndOfBody, + // task destination is taskDestination, + // and cross-origin isolated capability is crossOriginIsolatedCapability. + const fetchParams = { + controller: new Fetch(dispatcher), + request, + timingInfo, + processRequestBodyChunkLength, + processRequestEndOfBody, + processResponse, + processResponseConsumeBody, + processResponseEndOfBody, + taskDestination, + crossOriginIsolatedCapability + } + + // 7. If request’s body is a byte sequence, then set request’s body to + // request’s body as a body. + // NOTE: Since fetching is only called from fetch, body should already be + // extracted. + assert(!request.body || request.body.stream) + + // 8. If request’s window is "client", then set request’s window to request’s + // client, if request’s client’s global object is a Window object; otherwise + // "no-window". + if (request.window === 'client') { + // TODO: What if request.client is null? + request.window = + request.client?.globalObject?.constructor?.name === 'Window' + ? request.client + : 'no-window' + } + + // 9. If request’s origin is "client", then set request’s origin to request’s + // client’s origin. + if (request.origin === 'client') { + // TODO: What if request.client is null? + request.origin = request.client?.origin + } + + // 10. If all of the following conditions are true: + // TODO + + // 11. If request’s policy container is "client", then: + if (request.policyContainer === 'client') { + // 1. If request’s client is non-null, then set request’s policy + // container to a clone of request’s client’s policy container. [HTML] + if (request.client != null) { + request.policyContainer = clonePolicyContainer( + request.client.policyContainer + ) + } else { + // 2. Otherwise, set request’s policy container to a new policy + // container. + request.policyContainer = makePolicyContainer() + } + } + + // 12. If request’s header list does not contain `Accept`, then: + if (!request.headersList.contains('accept')) { + // 1. Let value be `*/*`. + const value = '*/*' + + // 2. A user agent should set value to the first matching statement, if + // any, switching on request’s destination: + // "document" + // "frame" + // "iframe" + // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8` + // "image" + // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5` + // "style" + // `text/css,*/*;q=0.1` + // TODO + + // 3. Append `Accept`/value to request’s header list. + request.headersList.append('accept', value) + } + + // 13. If request’s header list does not contain `Accept-Language`, then + // user agents should append `Accept-Language`/an appropriate value to + // request’s header list. + if (!request.headersList.contains('accept-language')) { + request.headersList.append('accept-language', '*') + } + + // 14. If request’s priority is null, then use request’s initiator and + // destination appropriately in setting request’s priority to a + // user-agent-defined object. + if (request.priority === null) { + // TODO + } + + // 15. If request is a subresource request, then: + if (subresourceSet.has(request.destination)) { + // TODO + } + + // 16. Run main fetch given fetchParams. + mainFetch(fetchParams) + .catch(err => { + fetchParams.controller.terminate(err) + }) + + // 17. Return fetchParam's controller + return fetchParams.controller +} + +// https://fetch.spec.whatwg.org/#concept-main-fetch +async function mainFetch (fetchParams, recursive = false) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. If request’s local-URLs-only flag is set and request’s current URL is + // not local, then set response to a network error. + if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) { + response = makeNetworkError('local URLs only') + } + + // 4. Run report Content Security Policy violations for request. + // TODO + + // 5. Upgrade request to a potentially trustworthy URL, if appropriate. + tryUpgradeRequestToAPotentiallyTrustworthyURL(request) + + // 6. If should request be blocked due to a bad port, should fetching request + // be blocked as mixed content, or should request be blocked by Content + // Security Policy returns blocked, then set response to a network error. + if (requestBadPort(request) === 'blocked') { + response = makeNetworkError('bad port') + } + // TODO: should fetching request be blocked as mixed content? + // TODO: should request be blocked by Content Security Policy? + + // 7. If request’s referrer policy is the empty string, then set request’s + // referrer policy to request’s policy container’s referrer policy. + if (request.referrerPolicy === '') { + request.referrerPolicy = request.policyContainer.referrerPolicy + } + + // 8. If request’s referrer is not "no-referrer", then set request’s + // referrer to the result of invoking determine request’s referrer. + if (request.referrer !== 'no-referrer') { + request.referrer = determineRequestsReferrer(request) + } + + // 9. Set request’s current URL’s scheme to "https" if all of the following + // conditions are true: + // - request’s current URL’s scheme is "http" + // - request’s current URL’s host is a domain + // - Matching request’s current URL’s host per Known HSTS Host Domain Name + // Matching results in either a superdomain match with an asserted + // includeSubDomains directive or a congruent match (with or without an + // asserted includeSubDomains directive). [HSTS] + // TODO + + // 10. If recursive is false, then run the remaining steps in parallel. + // TODO + + // 11. If response is null, then set response to the result of running + // the steps corresponding to the first matching statement: + if (response === null) { + response = await (async () => { + const currentURL = requestCurrentURL(request) + + if ( + // - request’s current URL’s origin is same origin with request’s origin, + // and request’s response tainting is "basic" + (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') || + // request’s current URL’s scheme is "data" + (currentURL.protocol === 'data:') || + // - request’s mode is "navigate" or "websocket" + (request.mode === 'navigate' || request.mode === 'websocket') + ) { + // 1. Set request’s response tainting to "basic". + request.responseTainting = 'basic' + + // 2. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s mode is "same-origin" + if (request.mode === 'same-origin') { + // 1. Return a network error. + return makeNetworkError('request mode cannot be "same-origin"') + } + + // request’s mode is "no-cors" + if (request.mode === 'no-cors') { + // 1. If request’s redirect mode is not "follow", then return a network + // error. + if (request.redirect !== 'follow') { + return makeNetworkError( + 'redirect mode cannot be "follow" for "no-cors" request' + ) + } + + // 2. Set request’s response tainting to "opaque". + request.responseTainting = 'opaque' + + // 3. Return the result of running scheme fetch given fetchParams. + return await schemeFetch(fetchParams) + } + + // request’s current URL’s scheme is not an HTTP(S) scheme + if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) { + // Return a network error. + return makeNetworkError('URL scheme must be a HTTP(S) scheme') + } + + // - request’s use-CORS-preflight flag is set + // - request’s unsafe-request flag is set and either request’s method is + // not a CORS-safelisted method or CORS-unsafe request-header names with + // request’s header list is not empty + // 1. Set request’s response tainting to "cors". + // 2. Let corsWithPreflightResponse be the result of running HTTP fetch + // given fetchParams and true. + // 3. If corsWithPreflightResponse is a network error, then clear cache + // entries using request. + // 4. Return corsWithPreflightResponse. + // TODO + + // Otherwise + // 1. Set request’s response tainting to "cors". + request.responseTainting = 'cors' + + // 2. Return the result of running HTTP fetch given fetchParams. + return await httpFetch(fetchParams) + })() + } + + // 12. If recursive is true, then return response. + if (recursive) { + return response + } + + // 13. If response is not a network error and response is not a filtered + // response, then: + if (response.status !== 0 && !response.internalResponse) { + // If request’s response tainting is "cors", then: + if (request.responseTainting === 'cors') { + // 1. Let headerNames be the result of extracting header list values + // given `Access-Control-Expose-Headers` and response’s header list. + // TODO + // 2. If request’s credentials mode is not "include" and headerNames + // contains `*`, then set response’s CORS-exposed header-name list to + // all unique header names in response’s header list. + // TODO + // 3. Otherwise, if headerNames is not null or failure, then set + // response’s CORS-exposed header-name list to headerNames. + // TODO + } + + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (request.responseTainting === 'basic') { + response = filterResponse(response, 'basic') + } else if (request.responseTainting === 'cors') { + response = filterResponse(response, 'cors') + } else if (request.responseTainting === 'opaque') { + response = filterResponse(response, 'opaque') + } else { + assert(false) + } + } + + // 14. Let internalResponse be response, if response is a network error, + // and response’s internal response otherwise. + let internalResponse = + response.status === 0 ? response : response.internalResponse + + // 15. If internalResponse’s URL list is empty, then set it to a clone of + // request’s URL list. + if (internalResponse.urlList.length === 0) { + internalResponse.urlList.push(...request.urlList) + } + + // 16. If request’s timing allow failed flag is unset, then set + // internalResponse’s timing allow passed flag. + if (!request.timingAllowFailed) { + response.timingAllowPassed = true + } + + // 17. If response is not a network error and any of the following returns + // blocked + // - should internalResponse to request be blocked as mixed content + // - should internalResponse to request be blocked by Content Security Policy + // - should internalResponse to request be blocked due to its MIME type + // - should internalResponse to request be blocked due to nosniff + // TODO + + // 18. If response’s type is "opaque", internalResponse’s status is 206, + // internalResponse’s range-requested flag is set, and request’s header + // list does not contain `Range`, then set response and internalResponse + // to a network error. + if ( + response.type === 'opaque' && + internalResponse.status === 206 && + internalResponse.rangeRequested && + !request.headers.contains('range') + ) { + response = internalResponse = makeNetworkError() + } + + // 19. If response is not a network error and either request’s method is + // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status, + // set internalResponse’s body to null and disregard any enqueuing toward + // it (if any). + if ( + response.status !== 0 && + (request.method === 'HEAD' || + request.method === 'CONNECT' || + nullBodyStatus.includes(internalResponse.status)) + ) { + internalResponse.body = null + fetchParams.controller.dump = true + } + + // 20. If request’s integrity metadata is not the empty string, then: + if (request.integrity) { + // 1. Let processBodyError be this step: run fetch finale given fetchParams + // and a network error. + const processBodyError = (reason) => + fetchFinale(fetchParams, makeNetworkError(reason)) + + // 2. If request’s response tainting is "opaque", or response’s body is null, + // then run processBodyError and abort these steps. + if (request.responseTainting === 'opaque' || response.body == null) { + processBodyError(response.error) + return + } + + // 3. Let processBody given bytes be these steps: + const processBody = (bytes) => { + // 1. If bytes do not match request’s integrity metadata, + // then run processBodyError and abort these steps. [SRI] + if (!bytesMatch(bytes, request.integrity)) { + processBodyError('integrity mismatch') + return + } + + // 2. Set response’s body to bytes as a body. + response.body = safelyExtractBody(bytes)[0] + + // 3. Run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } + + // 4. Fully read response’s body given processBody and processBodyError. + await fullyReadBody(response.body, processBody, processBodyError) + } else { + // 21. Otherwise, run fetch finale given fetchParams and response. + fetchFinale(fetchParams, response) + } +} + +// https://fetch.spec.whatwg.org/#concept-scheme-fetch +// given a fetch params fetchParams +function schemeFetch (fetchParams) { + // Note: since the connection is destroyed on redirect, which sets fetchParams to a + // cancelled state, we do not want this condition to trigger *unless* there have been + // no redirects. See https://github.com/nodejs/undici/issues/1776 + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) { + return Promise.resolve(makeAppropriateNetworkError(fetchParams)) + } + + // 2. Let request be fetchParams’s request. + const { request } = fetchParams + + const { protocol: scheme } = requestCurrentURL(request) + + // 3. Switch on request’s current URL’s scheme and run the associated steps: + switch (scheme) { + case 'about:': { + // If request’s current URL’s path is the string "blank", then return a new response + // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) », + // and body is the empty byte sequence as a body. + + // Otherwise, return a network error. + return Promise.resolve(makeNetworkError('about scheme is not supported')) + } + case 'blob:': { + if (!resolveObjectURL) { + resolveObjectURL = (__nccwpck_require__(4300).resolveObjectURL) + } + + // 1. Let blobURLEntry be request’s current URL’s blob URL entry. + const blobURLEntry = requestCurrentURL(request) + + // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56 + // Buffer.resolveObjectURL does not ignore URL queries. + if (blobURLEntry.search.length !== 0) { + return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.')) + } + + const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString()) + + // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s + // object is not a Blob object, then return a network error. + if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) { + return Promise.resolve(makeNetworkError('invalid method')) + } + + // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object. + const bodyWithType = safelyExtractBody(blobURLEntryObject) + + // 4. Let body be bodyWithType’s body. + const body = bodyWithType[0] + + // 5. Let length be body’s length, serialized and isomorphic encoded. + const length = isomorphicEncode(`${body.length}`) + + // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence. + const type = bodyWithType[1] ?? '' + + // 7. Return a new response whose status message is `OK`, header list is + // « (`Content-Length`, length), (`Content-Type`, type) », and body is body. + const response = makeResponse({ + statusText: 'OK', + headersList: [ + ['content-length', { name: 'Content-Length', value: length }], + ['content-type', { name: 'Content-Type', value: type }] + ] + }) + + response.body = body + + return Promise.resolve(response) + } + case 'data:': { + // 1. Let dataURLStruct be the result of running the + // data: URL processor on request’s current URL. + const currentURL = requestCurrentURL(request) + const dataURLStruct = dataURLProcessor(currentURL) + + // 2. If dataURLStruct is failure, then return a + // network error. + if (dataURLStruct === 'failure') { + return Promise.resolve(makeNetworkError('failed to fetch the data URL')) + } + + // 3. Let mimeType be dataURLStruct’s MIME type, serialized. + const mimeType = serializeAMimeType(dataURLStruct.mimeType) + + // 4. Return a response whose status message is `OK`, + // header list is « (`Content-Type`, mimeType) », + // and body is dataURLStruct’s body as a body. + return Promise.resolve(makeResponse({ + statusText: 'OK', + headersList: [ + ['content-type', { name: 'Content-Type', value: mimeType }] + ], + body: safelyExtractBody(dataURLStruct.body)[0] + })) + } + case 'file:': { + // For now, unfortunate as it is, file URLs are left as an exercise for the reader. + // When in doubt, return a network error. + return Promise.resolve(makeNetworkError('not implemented... yet...')) + } + case 'http:': + case 'https:': { + // Return the result of running HTTP fetch given fetchParams. + + return httpFetch(fetchParams) + .catch((err) => makeNetworkError(err)) + } + default: { + return Promise.resolve(makeNetworkError('unknown scheme')) + } + } +} + +// https://fetch.spec.whatwg.org/#finalize-response +function finalizeResponse (fetchParams, response) { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // 2, If fetchParams’s process response done is not null, then queue a fetch + // task to run fetchParams’s process response done given response, with + // fetchParams’s task destination. + if (fetchParams.processResponseDone != null) { + queueMicrotask(() => fetchParams.processResponseDone(response)) + } +} + +// https://fetch.spec.whatwg.org/#fetch-finale +function fetchFinale (fetchParams, response) { + // 1. If response is a network error, then: + if (response.type === 'error') { + // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ». + response.urlList = [fetchParams.request.urlList[0]] + + // 2. Set response’s timing info to the result of creating an opaque timing + // info for fetchParams’s timing info. + response.timingInfo = createOpaqueTimingInfo({ + startTime: fetchParams.timingInfo.startTime + }) + } + + // 2. Let processResponseEndOfBody be the following steps: + const processResponseEndOfBody = () => { + // 1. Set fetchParams’s request’s done flag. + fetchParams.request.done = true + + // If fetchParams’s process response end-of-body is not null, + // then queue a fetch task to run fetchParams’s process response + // end-of-body given response with fetchParams’s task destination. + if (fetchParams.processResponseEndOfBody != null) { + queueMicrotask(() => fetchParams.processResponseEndOfBody(response)) + } + } + + // 3. If fetchParams’s process response is non-null, then queue a fetch task + // to run fetchParams’s process response given response, with fetchParams’s + // task destination. + if (fetchParams.processResponse != null) { + queueMicrotask(() => fetchParams.processResponse(response)) + } + + // 4. If response’s body is null, then run processResponseEndOfBody. + if (response.body == null) { + processResponseEndOfBody() + } else { + // 5. Otherwise: + + // 1. Let transformStream be a new a TransformStream. + + // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, + // enqueues chunk in transformStream. + const identityTransformAlgorithm = (chunk, controller) => { + controller.enqueue(chunk) + } + + // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm + // and flushAlgorithm set to processResponseEndOfBody. + const transformStream = new TransformStream({ + start () {}, + transform: identityTransformAlgorithm, + flush: processResponseEndOfBody + }, { + size () { + return 1 + } + }, { + size () { + return 1 + } + }) + + // 4. Set response’s body to the result of piping response’s body through transformStream. + response.body = { stream: response.body.stream.pipeThrough(transformStream) } + } + + // 6. If fetchParams’s process response consume body is non-null, then: + if (fetchParams.processResponseConsumeBody != null) { + // 1. Let processBody given nullOrBytes be this step: run fetchParams’s + // process response consume body given response and nullOrBytes. + const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes) + + // 2. Let processBodyError be this step: run fetchParams’s process + // response consume body given response and failure. + const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure) + + // 3. If response’s body is null, then queue a fetch task to run processBody + // given null, with fetchParams’s task destination. + if (response.body == null) { + queueMicrotask(() => processBody(null)) + } else { + // 4. Otherwise, fully read response’s body given processBody, processBodyError, + // and fetchParams’s task destination. + return fullyReadBody(response.body, processBody, processBodyError) + } + return Promise.resolve() + } +} + +// https://fetch.spec.whatwg.org/#http-fetch +async function httpFetch (fetchParams) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let actualResponse be null. + let actualResponse = null + + // 4. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 5. If request’s service-workers mode is "all", then: + if (request.serviceWorkers === 'all') { + // TODO + } + + // 6. If response is null, then: + if (response === null) { + // 1. If makeCORSPreflight is true and one of these conditions is true: + // TODO + + // 2. If request’s redirect mode is "follow", then set request’s + // service-workers mode to "none". + if (request.redirect === 'follow') { + request.serviceWorkers = 'none' + } + + // 3. Set response and actualResponse to the result of running + // HTTP-network-or-cache fetch given fetchParams. + actualResponse = response = await httpNetworkOrCacheFetch(fetchParams) + + // 4. If request’s response tainting is "cors" and a CORS check + // for request and response returns failure, then return a network error. + if ( + request.responseTainting === 'cors' && + corsCheck(request, response) === 'failure' + ) { + return makeNetworkError('cors failure') + } + + // 5. If the TAO check for request and response returns failure, then set + // request’s timing allow failed flag. + if (TAOCheck(request, response) === 'failure') { + request.timingAllowFailed = true + } + } + + // 7. If either request’s response tainting or response’s type + // is "opaque", and the cross-origin resource policy check with + // request’s origin, request’s client, request’s destination, + // and actualResponse returns blocked, then return a network error. + if ( + (request.responseTainting === 'opaque' || response.type === 'opaque') && + crossOriginResourcePolicyCheck( + request.origin, + request.client, + request.destination, + actualResponse + ) === 'blocked' + ) { + return makeNetworkError('blocked') + } + + // 8. If actualResponse’s status is a redirect status, then: + if (redirectStatusSet.has(actualResponse.status)) { + // 1. If actualResponse’s status is not 303, request’s body is not null, + // and the connection uses HTTP/2, then user agents may, and are even + // encouraged to, transmit an RST_STREAM frame. + // See, https://github.com/whatwg/fetch/issues/1288 + if (request.redirect !== 'manual') { + fetchParams.controller.connection.destroy() + } + + // 2. Switch on request’s redirect mode: + if (request.redirect === 'error') { + // Set response to a network error. + response = makeNetworkError('unexpected redirect') + } else if (request.redirect === 'manual') { + // Set response to an opaque-redirect filtered response whose internal + // response is actualResponse. + // NOTE(spec): On the web this would return an `opaqueredirect` response, + // but that doesn't make sense server side. + // See https://github.com/nodejs/undici/issues/1193. + response = actualResponse + } else if (request.redirect === 'follow') { + // Set response to the result of running HTTP-redirect fetch given + // fetchParams and response. + response = await httpRedirectFetch(fetchParams, response) + } else { + assert(false) + } + } + + // 9. Set response’s timing info to timingInfo. + response.timingInfo = timingInfo + + // 10. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-redirect-fetch +function httpRedirectFetch (fetchParams, response) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let actualResponse be response, if response is not a filtered response, + // and response’s internal response otherwise. + const actualResponse = response.internalResponse + ? response.internalResponse + : response + + // 3. Let locationURL be actualResponse’s location URL given request’s current + // URL’s fragment. + let locationURL + + try { + locationURL = responseLocationURL( + actualResponse, + requestCurrentURL(request).hash + ) + + // 4. If locationURL is null, then return response. + if (locationURL == null) { + return response + } + } catch (err) { + // 5. If locationURL is failure, then return a network error. + return Promise.resolve(makeNetworkError(err)) + } + + // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network + // error. + if (!urlIsHttpHttpsScheme(locationURL)) { + return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme')) + } + + // 7. If request’s redirect count is 20, then return a network error. + if (request.redirectCount === 20) { + return Promise.resolve(makeNetworkError('redirect count exceeded')) + } + + // 8. Increase request’s redirect count by 1. + request.redirectCount += 1 + + // 9. If request’s mode is "cors", locationURL includes credentials, and + // request’s origin is not same origin with locationURL’s origin, then return + // a network error. + if ( + request.mode === 'cors' && + (locationURL.username || locationURL.password) && + !sameOrigin(request, locationURL) + ) { + return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"')) + } + + // 10. If request’s response tainting is "cors" and locationURL includes + // credentials, then return a network error. + if ( + request.responseTainting === 'cors' && + (locationURL.username || locationURL.password) + ) { + return Promise.resolve(makeNetworkError( + 'URL cannot contain credentials for request mode "cors"' + )) + } + + // 11. If actualResponse’s status is not 303, request’s body is non-null, + // and request’s body’s source is null, then return a network error. + if ( + actualResponse.status !== 303 && + request.body != null && + request.body.source == null + ) { + return Promise.resolve(makeNetworkError()) + } + + // 12. If one of the following is true + // - actualResponse’s status is 301 or 302 and request’s method is `POST` + // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD` + if ( + ([301, 302].includes(actualResponse.status) && request.method === 'POST') || + (actualResponse.status === 303 && + !GET_OR_HEAD.includes(request.method)) + ) { + // then: + // 1. Set request’s method to `GET` and request’s body to null. + request.method = 'GET' + request.body = null + + // 2. For each headerName of request-body-header name, delete headerName from + // request’s header list. + for (const headerName of requestBodyHeader) { + request.headersList.delete(headerName) + } + } + + // 13. If request’s current URL’s origin is not same origin with locationURL’s + // origin, then for each headerName of CORS non-wildcard request-header name, + // delete headerName from request’s header list. + if (!sameOrigin(requestCurrentURL(request), locationURL)) { + // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name + request.headersList.delete('authorization') + + // https://fetch.spec.whatwg.org/#authentication-entries + request.headersList.delete('proxy-authorization', true) + + // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement. + request.headersList.delete('cookie') + request.headersList.delete('host') + } + + // 14. If request’s body is non-null, then set request’s body to the first return + // value of safely extracting request’s body’s source. + if (request.body != null) { + assert(request.body.source != null) + request.body = safelyExtractBody(request.body.source)[0] + } + + // 15. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 16. Set timingInfo’s redirect end time and post-redirect start time to the + // coarsened shared current time given fetchParams’s cross-origin isolated + // capability. + timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = + coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability) + + // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s + // redirect start time to timingInfo’s start time. + if (timingInfo.redirectStartTime === 0) { + timingInfo.redirectStartTime = timingInfo.startTime + } + + // 18. Append locationURL to request’s URL list. + request.urlList.push(locationURL) + + // 19. Invoke set request’s referrer policy on redirect on request and + // actualResponse. + setRequestReferrerPolicyOnRedirect(request, actualResponse) + + // 20. Return the result of running main fetch given fetchParams and true. + return mainFetch(fetchParams, true) +} + +// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch +async function httpNetworkOrCacheFetch ( + fetchParams, + isAuthenticationFetch = false, + isNewConnectionFetch = false +) { + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let httpFetchParams be null. + let httpFetchParams = null + + // 3. Let httpRequest be null. + let httpRequest = null + + // 4. Let response be null. + let response = null + + // 5. Let storedResponse be null. + // TODO: cache + + // 6. Let httpCache be null. + const httpCache = null + + // 7. Let the revalidatingFlag be unset. + const revalidatingFlag = false + + // 8. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If request’s window is "no-window" and request’s redirect mode is + // "error", then set httpFetchParams to fetchParams and httpRequest to + // request. + if (request.window === 'no-window' && request.redirect === 'error') { + httpFetchParams = fetchParams + httpRequest = request + } else { + // Otherwise: + + // 1. Set httpRequest to a clone of request. + httpRequest = makeRequest(request) + + // 2. Set httpFetchParams to a copy of fetchParams. + httpFetchParams = { ...fetchParams } + + // 3. Set httpFetchParams’s request to httpRequest. + httpFetchParams.request = httpRequest + } + + // 3. Let includeCredentials be true if one of + const includeCredentials = + request.credentials === 'include' || + (request.credentials === 'same-origin' && + request.responseTainting === 'basic') + + // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s + // body is non-null; otherwise null. + const contentLength = httpRequest.body ? httpRequest.body.length : null + + // 5. Let contentLengthHeaderValue be null. + let contentLengthHeaderValue = null + + // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or + // `PUT`, then set contentLengthHeaderValue to `0`. + if ( + httpRequest.body == null && + ['POST', 'PUT'].includes(httpRequest.method) + ) { + contentLengthHeaderValue = '0' + } + + // 7. If contentLength is non-null, then set contentLengthHeaderValue to + // contentLength, serialized and isomorphic encoded. + if (contentLength != null) { + contentLengthHeaderValue = isomorphicEncode(`${contentLength}`) + } + + // 8. If contentLengthHeaderValue is non-null, then append + // `Content-Length`/contentLengthHeaderValue to httpRequest’s header + // list. + if (contentLengthHeaderValue != null) { + httpRequest.headersList.append('content-length', contentLengthHeaderValue) + } + + // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`, + // contentLengthHeaderValue) to httpRequest’s header list. + + // 10. If contentLength is non-null and httpRequest’s keepalive is true, + // then: + if (contentLength != null && httpRequest.keepalive) { + // NOTE: keepalive is a noop outside of browser context. + } + + // 11. If httpRequest’s referrer is a URL, then append + // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded, + // to httpRequest’s header list. + if (httpRequest.referrer instanceof URL) { + httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href)) + } + + // 12. Append a request `Origin` header for httpRequest. + appendRequestOriginHeader(httpRequest) + + // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA] + appendFetchMetadata(httpRequest) + + // 14. If httpRequest’s header list does not contain `User-Agent`, then + // user agents should append `User-Agent`/default `User-Agent` value to + // httpRequest’s header list. + if (!httpRequest.headersList.contains('user-agent')) { + httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node') + } + + // 15. If httpRequest’s cache mode is "default" and httpRequest’s header + // list contains `If-Modified-Since`, `If-None-Match`, + // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set + // httpRequest’s cache mode to "no-store". + if ( + httpRequest.cache === 'default' && + (httpRequest.headersList.contains('if-modified-since') || + httpRequest.headersList.contains('if-none-match') || + httpRequest.headersList.contains('if-unmodified-since') || + httpRequest.headersList.contains('if-match') || + httpRequest.headersList.contains('if-range')) + ) { + httpRequest.cache = 'no-store' + } + + // 16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent + // no-cache cache-control header modification flag is unset, and + // httpRequest’s header list does not contain `Cache-Control`, then append + // `Cache-Control`/`max-age=0` to httpRequest’s header list. + if ( + httpRequest.cache === 'no-cache' && + !httpRequest.preventNoCacheCacheControlHeaderModification && + !httpRequest.headersList.contains('cache-control') + ) { + httpRequest.headersList.append('cache-control', 'max-age=0') + } + + // 17. If httpRequest’s cache mode is "no-store" or "reload", then: + if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') { + // 1. If httpRequest’s header list does not contain `Pragma`, then append + // `Pragma`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('pragma')) { + httpRequest.headersList.append('pragma', 'no-cache') + } + + // 2. If httpRequest’s header list does not contain `Cache-Control`, + // then append `Cache-Control`/`no-cache` to httpRequest’s header list. + if (!httpRequest.headersList.contains('cache-control')) { + httpRequest.headersList.append('cache-control', 'no-cache') + } + } + + // 18. If httpRequest’s header list contains `Range`, then append + // `Accept-Encoding`/`identity` to httpRequest’s header list. + if (httpRequest.headersList.contains('range')) { + httpRequest.headersList.append('accept-encoding', 'identity') + } + + // 19. Modify httpRequest’s header list per HTTP. Do not append a given + // header if httpRequest’s header list contains that header’s name. + // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129 + if (!httpRequest.headersList.contains('accept-encoding')) { + if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) { + httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate') + } else { + httpRequest.headersList.append('accept-encoding', 'gzip, deflate') + } + } + + httpRequest.headersList.delete('host') + + // 20. If includeCredentials is true, then: + if (includeCredentials) { + // 1. If the user agent is not configured to block cookies for httpRequest + // (see section 7 of [COOKIES]), then: + // TODO: credentials + // 2. If httpRequest’s header list does not contain `Authorization`, then: + // TODO: credentials + } + + // 21. If there’s a proxy-authentication entry, use it as appropriate. + // TODO: proxy-authentication + + // 22. Set httpCache to the result of determining the HTTP cache + // partition, given httpRequest. + // TODO: cache + + // 23. If httpCache is null, then set httpRequest’s cache mode to + // "no-store". + if (httpCache == null) { + httpRequest.cache = 'no-store' + } + + // 24. If httpRequest’s cache mode is neither "no-store" nor "reload", + // then: + if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') { + // TODO: cache + } + + // 9. If aborted, then return the appropriate network error for fetchParams. + // TODO + + // 10. If response is null, then: + if (response == null) { + // 1. If httpRequest’s cache mode is "only-if-cached", then return a + // network error. + if (httpRequest.mode === 'only-if-cached') { + return makeNetworkError('only if cached') + } + + // 2. Let forwardResponse be the result of running HTTP-network fetch + // given httpFetchParams, includeCredentials, and isNewConnectionFetch. + const forwardResponse = await httpNetworkFetch( + httpFetchParams, + includeCredentials, + isNewConnectionFetch + ) + + // 3. If httpRequest’s method is unsafe and forwardResponse’s status is + // in the range 200 to 399, inclusive, invalidate appropriate stored + // responses in httpCache, as per the "Invalidation" chapter of HTTP + // Caching, and set storedResponse to null. [HTTP-CACHING] + if ( + !safeMethodsSet.has(httpRequest.method) && + forwardResponse.status >= 200 && + forwardResponse.status <= 399 + ) { + // TODO: cache + } + + // 4. If the revalidatingFlag is set and forwardResponse’s status is 304, + // then: + if (revalidatingFlag && forwardResponse.status === 304) { + // TODO: cache + } + + // 5. If response is null, then: + if (response == null) { + // 1. Set response to forwardResponse. + response = forwardResponse + + // 2. Store httpRequest and forwardResponse in httpCache, as per the + // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING] + // TODO: cache + } + } + + // 11. Set response’s URL list to a clone of httpRequest’s URL list. + response.urlList = [...httpRequest.urlList] + + // 12. If httpRequest’s header list contains `Range`, then set response’s + // range-requested flag. + if (httpRequest.headersList.contains('range')) { + response.rangeRequested = true + } + + // 13. Set response’s request-includes-credentials to includeCredentials. + response.requestIncludesCredentials = includeCredentials + + // 14. If response’s status is 401, httpRequest’s response tainting is not + // "cors", includeCredentials is true, and request’s window is an environment + // settings object, then: + // TODO + + // 15. If response’s status is 407, then: + if (response.status === 407) { + // 1. If request’s window is "no-window", then return a network error. + if (request.window === 'no-window') { + return makeNetworkError() + } + + // 2. ??? + + // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 4. Prompt the end user as appropriate in request’s window and store + // the result as a proxy-authentication entry. [HTTP-AUTH] + // TODO: Invoke some kind of callback? + + // 5. Set response to the result of running HTTP-network-or-cache fetch given + // fetchParams. + // TODO + return makeNetworkError('proxy authentication required') + } + + // 16. If all of the following are true + if ( + // response’s status is 421 + response.status === 421 && + // isNewConnectionFetch is false + !isNewConnectionFetch && + // request’s body is null, or request’s body is non-null and request’s body’s source is non-null + (request.body == null || request.body.source != null) + ) { + // then: + + // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams. + if (isCancelled(fetchParams)) { + return makeAppropriateNetworkError(fetchParams) + } + + // 2. Set response to the result of running HTTP-network-or-cache + // fetch given fetchParams, isAuthenticationFetch, and true. + + // TODO (spec): The spec doesn't specify this but we need to cancel + // the active response before we can start a new one. + // https://github.com/whatwg/fetch/issues/1293 + fetchParams.controller.connection.destroy() + + response = await httpNetworkOrCacheFetch( + fetchParams, + isAuthenticationFetch, + true + ) + } + + // 17. If isAuthenticationFetch is true, then create an authentication entry + if (isAuthenticationFetch) { + // TODO + } + + // 18. Return response. + return response +} + +// https://fetch.spec.whatwg.org/#http-network-fetch +async function httpNetworkFetch ( + fetchParams, + includeCredentials = false, + forceNewConnection = false +) { + assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed) + + fetchParams.controller.connection = { + abort: null, + destroyed: false, + destroy (err) { + if (!this.destroyed) { + this.destroyed = true + this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError')) + } + } + } + + // 1. Let request be fetchParams’s request. + const request = fetchParams.request + + // 2. Let response be null. + let response = null + + // 3. Let timingInfo be fetchParams’s timing info. + const timingInfo = fetchParams.timingInfo + + // 4. Let httpCache be the result of determining the HTTP cache partition, + // given request. + // TODO: cache + const httpCache = null + + // 5. If httpCache is null, then set request’s cache mode to "no-store". + if (httpCache == null) { + request.cache = 'no-store' + } + + // 6. Let networkPartitionKey be the result of determining the network + // partition key given request. + // TODO + + // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise + // "no". + const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars + + // 8. Switch on request’s mode: + if (request.mode === 'websocket') { + // Let connection be the result of obtaining a WebSocket connection, + // given request’s current URL. + // TODO + } else { + // Let connection be the result of obtaining a connection, given + // networkPartitionKey, request’s current URL’s origin, + // includeCredentials, and forceNewConnection. + // TODO + } + + // 9. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. If connection is failure, then return a network error. + + // 2. Set timingInfo’s final connection timing info to the result of + // calling clamp and coarsen connection timing info with connection’s + // timing info, timingInfo’s post-redirect start time, and fetchParams’s + // cross-origin isolated capability. + + // 3. If connection is not an HTTP/2 connection, request’s body is non-null, + // and request’s body’s source is null, then append (`Transfer-Encoding`, + // `chunked`) to request’s header list. + + // 4. Set timingInfo’s final network-request start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated + // capability. + + // 5. Set response to the result of making an HTTP request over connection + // using request with the following caveats: + + // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS] + // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH] + + // - If request’s body is non-null, and request’s body’s source is null, + // then the user agent may have a buffer of up to 64 kibibytes and store + // a part of request’s body in that buffer. If the user agent reads from + // request’s body beyond that buffer’s size and the user agent needs to + // resend request, then instead return a network error. + + // - Set timingInfo’s final network-response start time to the coarsened + // shared current time given fetchParams’s cross-origin isolated capability, + // immediately after the user agent’s HTTP parser receives the first byte + // of the response (e.g., frame header bytes for HTTP/2 or response status + // line for HTTP/1.x). + + // - Wait until all the headers are transmitted. + + // - Any responses whose status is in the range 100 to 199, inclusive, + // and is not 101, are to be ignored, except for the purposes of setting + // timingInfo’s final network-response start time above. + + // - If request’s header list contains `Transfer-Encoding`/`chunked` and + // response is transferred via HTTP/1.0 or older, then return a network + // error. + + // - If the HTTP request results in a TLS client certificate dialog, then: + + // 1. If request’s window is an environment settings object, make the + // dialog available in request’s window. + + // 2. Otherwise, return a network error. + + // To transmit request’s body body, run these steps: + let requestBody = null + // 1. If body is null and fetchParams’s process request end-of-body is + // non-null, then queue a fetch task given fetchParams’s process request + // end-of-body and fetchParams’s task destination. + if (request.body == null && fetchParams.processRequestEndOfBody) { + queueMicrotask(() => fetchParams.processRequestEndOfBody()) + } else if (request.body != null) { + // 2. Otherwise, if body is non-null: + + // 1. Let processBodyChunk given bytes be these steps: + const processBodyChunk = async function * (bytes) { + // 1. If the ongoing fetch is terminated, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. Run this step in parallel: transmit bytes. + yield bytes + + // 3. If fetchParams’s process request body is non-null, then run + // fetchParams’s process request body given bytes’s length. + fetchParams.processRequestBodyChunkLength?.(bytes.byteLength) + } + + // 2. Let processEndOfBody be these steps: + const processEndOfBody = () => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If fetchParams’s process request end-of-body is non-null, + // then run fetchParams’s process request end-of-body. + if (fetchParams.processRequestEndOfBody) { + fetchParams.processRequestEndOfBody() + } + } + + // 3. Let processBodyError given e be these steps: + const processBodyError = (e) => { + // 1. If fetchParams is canceled, then abort these steps. + if (isCancelled(fetchParams)) { + return + } + + // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller. + if (e.name === 'AbortError') { + fetchParams.controller.abort() + } else { + fetchParams.controller.terminate(e) + } + } + + // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody, + // processBodyError, and fetchParams’s task destination. + requestBody = (async function * () { + try { + for await (const bytes of request.body.stream) { + yield * processBodyChunk(bytes) + } + processEndOfBody() + } catch (err) { + processBodyError(err) + } + })() + } + + try { + // socket is only provided for websockets + const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody }) + + if (socket) { + response = makeResponse({ status, statusText, headersList, socket }) + } else { + const iterator = body[Symbol.asyncIterator]() + fetchParams.controller.next = () => iterator.next() + + response = makeResponse({ status, statusText, headersList }) + } + } catch (err) { + // 10. If aborted, then: + if (err.name === 'AbortError') { + // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame. + fetchParams.controller.connection.destroy() + + // 2. Return the appropriate network error for fetchParams. + return makeAppropriateNetworkError(fetchParams, err) + } + + return makeNetworkError(err) + } + + // 11. Let pullAlgorithm be an action that resumes the ongoing fetch + // if it is suspended. + const pullAlgorithm = () => { + fetchParams.controller.resume() + } + + // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s + // controller with reason, given reason. + const cancelAlgorithm = (reason) => { + fetchParams.controller.abort(reason) + } + + // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by + // the user agent. + // TODO + + // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object + // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent. + // TODO + + // 15. Let stream be a new ReadableStream. + // 16. Set up stream with pullAlgorithm set to pullAlgorithm, + // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to + // highWaterMark, and sizeAlgorithm set to sizeAlgorithm. + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(5356).ReadableStream) + } + + const stream = new ReadableStream( + { + async start (controller) { + fetchParams.controller.controller = controller + }, + async pull (controller) { + await pullAlgorithm(controller) + }, + async cancel (reason) { + await cancelAlgorithm(reason) + } + }, + { + highWaterMark: 0, + size () { + return 1 + } + } + ) + + // 17. Run these steps, but abort when the ongoing fetch is terminated: + + // 1. Set response’s body to a new body whose stream is stream. + response.body = { stream } + + // 2. If response is not a network error and request’s cache mode is + // not "no-store", then update response in httpCache for request. + // TODO + + // 3. If includeCredentials is true and the user agent is not configured + // to block cookies for request (see section 7 of [COOKIES]), then run the + // "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on + // the value of each header whose name is a byte-case-insensitive match for + // `Set-Cookie` in response’s header list, if any, and request’s current URL. + // TODO + + // 18. If aborted, then: + // TODO + + // 19. Run these steps in parallel: + + // 1. Run these steps, but abort when fetchParams is canceled: + fetchParams.controller.on('terminated', onAborted) + fetchParams.controller.resume = async () => { + // 1. While true + while (true) { + // 1-3. See onData... + + // 4. Set bytes to the result of handling content codings given + // codings and bytes. + let bytes + let isFailure + try { + const { done, value } = await fetchParams.controller.next() + + if (isAborted(fetchParams)) { + break + } + + bytes = done ? undefined : value + } catch (err) { + if (fetchParams.controller.ended && !timingInfo.encodedBodySize) { + // zlib doesn't like empty streams. + bytes = undefined + } else { + bytes = err + + // err may be propagated from the result of calling readablestream.cancel, + // which might not be an error. https://github.com/nodejs/undici/issues/2009 + isFailure = true + } + } + + if (bytes === undefined) { + // 2. Otherwise, if the bytes transmission for response’s message + // body is done normally and stream is readable, then close + // stream, finalize response for fetchParams and response, and + // abort these in-parallel steps. + readableStreamClose(fetchParams.controller.controller) + + finalizeResponse(fetchParams, response) + + return + } + + // 5. Increase timingInfo’s decoded body size by bytes’s length. + timingInfo.decodedBodySize += bytes?.byteLength ?? 0 + + // 6. If bytes is failure, then terminate fetchParams’s controller. + if (isFailure) { + fetchParams.controller.terminate(bytes) + return + } + + // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes + // into stream. + fetchParams.controller.controller.enqueue(new Uint8Array(bytes)) + + // 8. If stream is errored, then terminate the ongoing fetch. + if (isErrored(stream)) { + fetchParams.controller.terminate() + return + } + + // 9. If stream doesn’t need more data ask the user agent to suspend + // the ongoing fetch. + if (!fetchParams.controller.controller.desiredSize) { + return + } + } + } + + // 2. If aborted, then: + function onAborted (reason) { + // 2. If fetchParams is aborted, then: + if (isAborted(fetchParams)) { + // 1. Set response’s aborted flag. + response.aborted = true + + // 2. If stream is readable, then error stream with the result of + // deserialize a serialized abort reason given fetchParams’s + // controller’s serialized abort reason and an + // implementation-defined realm. + if (isReadable(stream)) { + fetchParams.controller.controller.error( + fetchParams.controller.serializedAbortReason + ) + } + } else { + // 3. Otherwise, if stream is readable, error stream with a TypeError. + if (isReadable(stream)) { + fetchParams.controller.controller.error(new TypeError('terminated', { + cause: isErrorLike(reason) ? reason : undefined + })) + } + } + + // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame. + // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so. + fetchParams.controller.connection.destroy() + } + + // 20. Return response. + return response + + async function dispatch ({ body }) { + const url = requestCurrentURL(request) + /** @type {import('../..').Agent} */ + const agent = fetchParams.controller.dispatcher + + return new Promise((resolve, reject) => agent.dispatch( + { + path: url.pathname + url.search, + origin: url.origin, + method: request.method, + body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body, + headers: request.headersList.entries, + maxRedirections: 0, + upgrade: request.mode === 'websocket' ? 'websocket' : undefined + }, + { + body: null, + abort: null, + + onConnect (abort) { + // TODO (fix): Do we need connection here? + const { connection } = fetchParams.controller + + if (connection.destroyed) { + abort(new DOMException('The operation was aborted.', 'AbortError')) + } else { + fetchParams.controller.on('terminated', abort) + this.abort = connection.abort = abort + } + }, + + onHeaders (status, headersList, resume, statusText) { + if (status < 200) { + return + } + + let codings = [] + let location = '' + + const headers = new Headers() + + // For H2, the headers are a plain JS object + // We distinguish between them and iterate accordingly + if (Array.isArray(headersList)) { + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()) + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } else { + const keys = Object.keys(headersList) + for (const key of keys) { + const val = headersList[key] + if (key.toLowerCase() === 'content-encoding') { + // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1 + // "All content-coding values are case-insensitive..." + codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse() + } else if (key.toLowerCase() === 'location') { + location = val + } + + headers[kHeadersList].append(key, val) + } + } + + this.body = new Readable({ read: resume }) + + const decoders = [] + + const willFollow = request.redirect === 'follow' && + location && + redirectStatusSet.has(status) + + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding + if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) { + for (const coding of codings) { + // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2 + if (coding === 'x-gzip' || coding === 'gzip') { + decoders.push(zlib.createGunzip({ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH + })) + } else if (coding === 'deflate') { + decoders.push(zlib.createInflate()) + } else if (coding === 'br') { + decoders.push(zlib.createBrotliDecompress()) + } else { + decoders.length = 0 + break + } + } + } + + resolve({ + status, + statusText, + headersList: headers[kHeadersList], + body: decoders.length + ? pipeline(this.body, ...decoders, () => { }) + : this.body.on('error', () => {}) + }) + + return true + }, + + onData (chunk) { + if (fetchParams.controller.dump) { + return + } + + // 1. If one or more bytes have been transmitted from response’s + // message body, then: + + // 1. Let bytes be the transmitted bytes. + const bytes = chunk + + // 2. Let codings be the result of extracting header list values + // given `Content-Encoding` and response’s header list. + // See pullAlgorithm. + + // 3. Increase timingInfo’s encoded body size by bytes’s length. + timingInfo.encodedBodySize += bytes.byteLength + + // 4. See pullAlgorithm... + + return this.body.push(bytes) + }, + + onComplete () { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + fetchParams.controller.ended = true + + this.body.push(null) + }, + + onError (error) { + if (this.abort) { + fetchParams.controller.off('terminated', this.abort) + } + + this.body?.destroy(error) + + fetchParams.controller.terminate(error) + + reject(error) + }, + + onUpgrade (status, headersList, socket) { + if (status !== 101) { + return + } + + const headers = new Headers() + + for (let n = 0; n < headersList.length; n += 2) { + const key = headersList[n + 0].toString('latin1') + const val = headersList[n + 1].toString('latin1') + + headers[kHeadersList].append(key, val) + } + + resolve({ + status, + statusText: STATUS_CODES[status], + headersList: headers[kHeadersList], + socket + }) + + return true + } + } + )) + } +} + +module.exports = { + fetch, + Fetch, + fetching, + finalizeAndReportTiming +} + + +/***/ }), + +/***/ 8359: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* globals AbortController */ + + + +const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(1472) +const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(554) +const { FinalizationRegistry } = __nccwpck_require__(6436)() +const util = __nccwpck_require__(3983) +const { + isValidHTTPToken, + sameOrigin, + normalizeMethod, + makePolicyContainer, + normalizeMethodRecord +} = __nccwpck_require__(2538) +const { + forbiddenMethodsSet, + corsSafeListedMethodsSet, + referrerPolicy, + requestRedirect, + requestMode, + requestCredentials, + requestCache, + requestDuplex +} = __nccwpck_require__(1037) +const { kEnumerableProperty } = util +const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(5861) +const { webidl } = __nccwpck_require__(1744) +const { getGlobalOrigin } = __nccwpck_require__(1246) +const { URLSerializer } = __nccwpck_require__(685) +const { kHeadersList, kConstruct } = __nccwpck_require__(2785) +const assert = __nccwpck_require__(9491) +const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(2361) + +let TransformStream = globalThis.TransformStream + +const kAbortController = Symbol('abortController') + +const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { + signal.removeEventListener('abort', abort) +}) + +// https://fetch.spec.whatwg.org/#request-class +class Request { + // https://fetch.spec.whatwg.org/#dom-request + constructor (input, init = {}) { + if (input === kConstruct) { + return + } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' }) + + input = webidl.converters.RequestInfo(input) + init = webidl.converters.RequestInit(init) + + // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object + this[kRealm] = { + settingsObject: { + baseUrl: getGlobalOrigin(), + get origin () { + return this.baseUrl?.origin + }, + policyContainer: makePolicyContainer() + } + } + + // 1. Let request be null. + let request = null + + // 2. Let fallbackMode be null. + let fallbackMode = null + + // 3. Let baseURL be this’s relevant settings object’s API base URL. + const baseUrl = this[kRealm].settingsObject.baseUrl + + // 4. Let signal be null. + let signal = null + + // 5. If input is a string, then: + if (typeof input === 'string') { + // 1. Let parsedURL be the result of parsing input with baseURL. + // 2. If parsedURL is failure, then throw a TypeError. + let parsedURL + try { + parsedURL = new URL(input, baseUrl) + } catch (err) { + throw new TypeError('Failed to parse URL from ' + input, { cause: err }) + } + + // 3. If parsedURL includes credentials, then throw a TypeError. + if (parsedURL.username || parsedURL.password) { + throw new TypeError( + 'Request cannot be constructed from a URL that includes credentials: ' + + input + ) + } + + // 4. Set request to a new request whose URL is parsedURL. + request = makeRequest({ urlList: [parsedURL] }) + + // 5. Set fallbackMode to "cors". + fallbackMode = 'cors' + } else { + // 6. Otherwise: + + // 7. Assert: input is a Request object. + assert(input instanceof Request) + + // 8. Set request to input’s request. + request = input[kState] + + // 9. Set signal to input’s signal. + signal = input[kSignal] + } + + // 7. Let origin be this’s relevant settings object’s origin. + const origin = this[kRealm].settingsObject.origin + + // 8. Let window be "client". + let window = 'client' + + // 9. If request’s window is an environment settings object and its origin + // is same origin with origin, then set window to request’s window. + if ( + request.window?.constructor?.name === 'EnvironmentSettingsObject' && + sameOrigin(request.window, origin) + ) { + window = request.window + } + + // 10. If init["window"] exists and is non-null, then throw a TypeError. + if (init.window != null) { + throw new TypeError(`'window' option '${window}' must be null`) + } + + // 11. If init["window"] exists, then set window to "no-window". + if ('window' in init) { + window = 'no-window' + } + + // 12. Set request to a new request with the following properties: + request = makeRequest({ + // URL request’s URL. + // undici implementation note: this is set as the first item in request's urlList in makeRequest + // method request’s method. + method: request.method, + // header list A copy of request’s header list. + // undici implementation note: headersList is cloned in makeRequest + headersList: request.headersList, + // unsafe-request flag Set. + unsafeRequest: request.unsafeRequest, + // client This’s relevant settings object. + client: this[kRealm].settingsObject, + // window window. + window, + // priority request’s priority. + priority: request.priority, + // origin request’s origin. The propagation of the origin is only significant for navigation requests + // being handled by a service worker. In this scenario a request can have an origin that is different + // from the current client. + origin: request.origin, + // referrer request’s referrer. + referrer: request.referrer, + // referrer policy request’s referrer policy. + referrerPolicy: request.referrerPolicy, + // mode request’s mode. + mode: request.mode, + // credentials mode request’s credentials mode. + credentials: request.credentials, + // cache mode request’s cache mode. + cache: request.cache, + // redirect mode request’s redirect mode. + redirect: request.redirect, + // integrity metadata request’s integrity metadata. + integrity: request.integrity, + // keepalive request’s keepalive. + keepalive: request.keepalive, + // reload-navigation flag request’s reload-navigation flag. + reloadNavigation: request.reloadNavigation, + // history-navigation flag request’s history-navigation flag. + historyNavigation: request.historyNavigation, + // URL list A clone of request’s URL list. + urlList: [...request.urlList] + }) + + const initHasKey = Object.keys(init).length !== 0 + + // 13. If init is not empty, then: + if (initHasKey) { + // 1. If request’s mode is "navigate", then set it to "same-origin". + if (request.mode === 'navigate') { + request.mode = 'same-origin' + } + + // 2. Unset request’s reload-navigation flag. + request.reloadNavigation = false + + // 3. Unset request’s history-navigation flag. + request.historyNavigation = false + + // 4. Set request’s origin to "client". + request.origin = 'client' + + // 5. Set request’s referrer to "client" + request.referrer = 'client' + + // 6. Set request’s referrer policy to the empty string. + request.referrerPolicy = '' + + // 7. Set request’s URL to request’s current URL. + request.url = request.urlList[request.urlList.length - 1] + + // 8. Set request’s URL list to « request’s URL ». + request.urlList = [request.url] + } + + // 14. If init["referrer"] exists, then: + if (init.referrer !== undefined) { + // 1. Let referrer be init["referrer"]. + const referrer = init.referrer + + // 2. If referrer is the empty string, then set request’s referrer to "no-referrer". + if (referrer === '') { + request.referrer = 'no-referrer' + } else { + // 1. Let parsedReferrer be the result of parsing referrer with + // baseURL. + // 2. If parsedReferrer is failure, then throw a TypeError. + let parsedReferrer + try { + parsedReferrer = new URL(referrer, baseUrl) + } catch (err) { + throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err }) + } + + // 3. If one of the following is true + // - parsedReferrer’s scheme is "about" and path is the string "client" + // - parsedReferrer’s origin is not same origin with origin + // then set request’s referrer to "client". + if ( + (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') || + (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl)) + ) { + request.referrer = 'client' + } else { + // 4. Otherwise, set request’s referrer to parsedReferrer. + request.referrer = parsedReferrer + } + } + } + + // 15. If init["referrerPolicy"] exists, then set request’s referrer policy + // to it. + if (init.referrerPolicy !== undefined) { + request.referrerPolicy = init.referrerPolicy + } + + // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise. + let mode + if (init.mode !== undefined) { + mode = init.mode + } else { + mode = fallbackMode + } + + // 17. If mode is "navigate", then throw a TypeError. + if (mode === 'navigate') { + throw webidl.errors.exception({ + header: 'Request constructor', + message: 'invalid request mode navigate.' + }) + } + + // 18. If mode is non-null, set request’s mode to mode. + if (mode != null) { + request.mode = mode + } + + // 19. If init["credentials"] exists, then set request’s credentials mode + // to it. + if (init.credentials !== undefined) { + request.credentials = init.credentials + } + + // 18. If init["cache"] exists, then set request’s cache mode to it. + if (init.cache !== undefined) { + request.cache = init.cache + } + + // 21. If request’s cache mode is "only-if-cached" and request’s mode is + // not "same-origin", then throw a TypeError. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + throw new TypeError( + "'only-if-cached' can be set only with 'same-origin' mode" + ) + } + + // 22. If init["redirect"] exists, then set request’s redirect mode to it. + if (init.redirect !== undefined) { + request.redirect = init.redirect + } + + // 23. If init["integrity"] exists, then set request’s integrity metadata to it. + if (init.integrity != null) { + request.integrity = String(init.integrity) + } + + // 24. If init["keepalive"] exists, then set request’s keepalive to it. + if (init.keepalive !== undefined) { + request.keepalive = Boolean(init.keepalive) + } + + // 25. If init["method"] exists, then: + if (init.method !== undefined) { + // 1. Let method be init["method"]. + let method = init.method + + // 2. If method is not a method or method is a forbidden method, then + // throw a TypeError. + if (!isValidHTTPToken(method)) { + throw new TypeError(`'${method}' is not a valid HTTP method.`) + } + + if (forbiddenMethodsSet.has(method.toUpperCase())) { + throw new TypeError(`'${method}' HTTP method is unsupported.`) + } + + // 3. Normalize method. + method = normalizeMethodRecord[method] ?? normalizeMethod(method) + + // 4. Set request’s method to method. + request.method = method + } + + // 26. If init["signal"] exists, then set signal to it. + if (init.signal !== undefined) { + signal = init.signal + } + + // 27. Set this’s request to request. + this[kState] = request + + // 28. Set this’s signal to a new AbortSignal object with this’s relevant + // Realm. + // TODO: could this be simplified with AbortSignal.any + // (https://dom.spec.whatwg.org/#dom-abortsignal-any) + const ac = new AbortController() + this[kSignal] = ac.signal + this[kSignal][kRealm] = this[kRealm] + + // 29. If signal is not null, then make this’s signal follow signal. + if (signal != null) { + if ( + !signal || + typeof signal.aborted !== 'boolean' || + typeof signal.addEventListener !== 'function' + ) { + throw new TypeError( + "Failed to construct 'Request': member signal is not of type AbortSignal." + ) + } + + if (signal.aborted) { + ac.abort(signal.reason) + } else { + // Keep a strong ref to ac while request object + // is alive. This is needed to prevent AbortController + // from being prematurely garbage collected. + // See, https://github.com/nodejs/undici/issues/1926. + this[kAbortController] = ac + + const acRef = new WeakRef(ac) + const abort = function () { + const ac = acRef.deref() + if (ac !== undefined) { + ac.abort(this.reason) + } + } + + // Third-party AbortControllers may not work with these. + // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619. + try { + // If the max amount of listeners is equal to the default, increase it + // This is only available in node >= v19.9.0 + if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) { + setMaxListeners(100, signal) + } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) { + setMaxListeners(100, signal) + } + } catch {} + + util.addAbortListener(signal, abort) + requestFinalizer.register(ac, { signal, abort }) + } + } + + // 30. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is request’s header list and guard is + // "request". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kHeadersList] = request.headersList + this[kHeaders][kGuard] = 'request' + this[kHeaders][kRealm] = this[kRealm] + + // 31. If this’s request’s mode is "no-cors", then: + if (mode === 'no-cors') { + // 1. If this’s request’s method is not a CORS-safelisted method, + // then throw a TypeError. + if (!corsSafeListedMethodsSet.has(request.method)) { + throw new TypeError( + `'${request.method} is unsupported in no-cors mode.` + ) + } + + // 2. Set this’s headers’s guard to "request-no-cors". + this[kHeaders][kGuard] = 'request-no-cors' + } + + // 32. If init is not empty, then: + if (initHasKey) { + /** @type {HeadersList} */ + const headersList = this[kHeaders][kHeadersList] + // 1. Let headers be a copy of this’s headers and its associated header + // list. + // 2. If init["headers"] exists, then set headers to init["headers"]. + const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList) + + // 3. Empty this’s headers’s header list. + headersList.clear() + + // 4. If headers is a Headers object, then for each header in its header + // list, append header’s name/header’s value to this’s headers. + if (headers instanceof HeadersList) { + for (const [key, val] of headers) { + headersList.append(key, val) + } + // Note: Copy the `set-cookie` meta-data. + headersList.cookies = headers.cookies + } else { + // 5. Otherwise, fill this’s headers with headers. + fillHeaders(this[kHeaders], headers) + } + } + + // 33. Let inputBody be input’s request’s body if input is a Request + // object; otherwise null. + const inputBody = input instanceof Request ? input[kState].body : null + + // 34. If either init["body"] exists and is non-null or inputBody is + // non-null, and request’s method is `GET` or `HEAD`, then throw a + // TypeError. + if ( + (init.body != null || inputBody != null) && + (request.method === 'GET' || request.method === 'HEAD') + ) { + throw new TypeError('Request with GET/HEAD method cannot have body.') + } + + // 35. Let initBody be null. + let initBody = null + + // 36. If init["body"] exists and is non-null, then: + if (init.body != null) { + // 1. Let Content-Type be null. + // 2. Set initBody and Content-Type to the result of extracting + // init["body"], with keepalive set to request’s keepalive. + const [extractedBody, contentType] = extractBody( + init.body, + request.keepalive + ) + initBody = extractedBody + + // 3, If Content-Type is non-null and this’s headers’s header list does + // not contain `Content-Type`, then append `Content-Type`/Content-Type to + // this’s headers. + if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) { + this[kHeaders].append('content-type', contentType) + } + } + + // 37. Let inputOrInitBody be initBody if it is non-null; otherwise + // inputBody. + const inputOrInitBody = initBody ?? inputBody + + // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is + // null, then: + if (inputOrInitBody != null && inputOrInitBody.source == null) { + // 1. If initBody is non-null and init["duplex"] does not exist, + // then throw a TypeError. + if (initBody != null && init.duplex == null) { + throw new TypeError('RequestInit: duplex option is required when sending a body.') + } + + // 2. If this’s request’s mode is neither "same-origin" nor "cors", + // then throw a TypeError. + if (request.mode !== 'same-origin' && request.mode !== 'cors') { + throw new TypeError( + 'If request is made from ReadableStream, mode should be "same-origin" or "cors"' + ) + } + + // 3. Set this’s request’s use-CORS-preflight flag. + request.useCORSPreflightFlag = true + } + + // 39. Let finalBody be inputOrInitBody. + let finalBody = inputOrInitBody + + // 40. If initBody is null and inputBody is non-null, then: + if (initBody == null && inputBody != null) { + // 1. If input is unusable, then throw a TypeError. + if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) { + throw new TypeError( + 'Cannot construct a Request with a Request object that has already been used.' + ) + } + + // 2. Set finalBody to the result of creating a proxy for inputBody. + if (!TransformStream) { + TransformStream = (__nccwpck_require__(5356).TransformStream) + } + + // https://streams.spec.whatwg.org/#readablestream-create-a-proxy + const identityTransform = new TransformStream() + inputBody.stream.pipeThrough(identityTransform) + finalBody = { + source: inputBody.source, + length: inputBody.length, + stream: identityTransform.readable + } + } + + // 41. Set this’s request’s body to finalBody. + this[kState].body = finalBody + } + + // Returns request’s HTTP method, which is "GET" by default. + get method () { + webidl.brandCheck(this, Request) + + // The method getter steps are to return this’s request’s method. + return this[kState].method + } + + // Returns the URL of request as a string. + get url () { + webidl.brandCheck(this, Request) + + // The url getter steps are to return this’s request’s URL, serialized. + return URLSerializer(this[kState].url) + } + + // Returns a Headers object consisting of the headers associated with request. + // Note that headers added in the network layer by the user agent will not + // be accounted for in this object, e.g., the "Host" header. + get headers () { + webidl.brandCheck(this, Request) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + // Returns the kind of resource requested by request, e.g., "document" + // or "script". + get destination () { + webidl.brandCheck(this, Request) + + // The destination getter are to return this’s request’s destination. + return this[kState].destination + } + + // Returns the referrer of request. Its value can be a same-origin URL if + // explicitly set in init, the empty string to indicate no referrer, and + // "about:client" when defaulting to the global’s default. This is used + // during fetching to determine the value of the `Referer` header of the + // request being made. + get referrer () { + webidl.brandCheck(this, Request) + + // 1. If this’s request’s referrer is "no-referrer", then return the + // empty string. + if (this[kState].referrer === 'no-referrer') { + return '' + } + + // 2. If this’s request’s referrer is "client", then return + // "about:client". + if (this[kState].referrer === 'client') { + return 'about:client' + } + + // Return this’s request’s referrer, serialized. + return this[kState].referrer.toString() + } + + // Returns the referrer policy associated with request. + // This is used during fetching to compute the value of the request’s + // referrer. + get referrerPolicy () { + webidl.brandCheck(this, Request) + + // The referrerPolicy getter steps are to return this’s request’s referrer policy. + return this[kState].referrerPolicy + } + + // Returns the mode associated with request, which is a string indicating + // whether the request will use CORS, or will be restricted to same-origin + // URLs. + get mode () { + webidl.brandCheck(this, Request) + + // The mode getter steps are to return this’s request’s mode. + return this[kState].mode + } + + // Returns the credentials mode associated with request, + // which is a string indicating whether credentials will be sent with the + // request always, never, or only when sent to a same-origin URL. + get credentials () { + // The credentials getter steps are to return this’s request’s credentials mode. + return this[kState].credentials + } + + // Returns the cache mode associated with request, + // which is a string indicating how the request will + // interact with the browser’s cache when fetching. + get cache () { + webidl.brandCheck(this, Request) + + // The cache getter steps are to return this’s request’s cache mode. + return this[kState].cache + } + + // Returns the redirect mode associated with request, + // which is a string indicating how redirects for the + // request will be handled during fetching. A request + // will follow redirects by default. + get redirect () { + webidl.brandCheck(this, Request) + + // The redirect getter steps are to return this’s request’s redirect mode. + return this[kState].redirect + } + + // Returns request’s subresource integrity metadata, which is a + // cryptographic hash of the resource being fetched. Its value + // consists of multiple hashes separated by whitespace. [SRI] + get integrity () { + webidl.brandCheck(this, Request) + + // The integrity getter steps are to return this’s request’s integrity + // metadata. + return this[kState].integrity + } + + // Returns a boolean indicating whether or not request can outlive the + // global in which it was created. + get keepalive () { + webidl.brandCheck(this, Request) + + // The keepalive getter steps are to return this’s request’s keepalive. + return this[kState].keepalive + } + + // Returns a boolean indicating whether or not request is for a reload + // navigation. + get isReloadNavigation () { + webidl.brandCheck(this, Request) + + // The isReloadNavigation getter steps are to return true if this’s + // request’s reload-navigation flag is set; otherwise false. + return this[kState].reloadNavigation + } + + // Returns a boolean indicating whether or not request is for a history + // navigation (a.k.a. back-foward navigation). + get isHistoryNavigation () { + webidl.brandCheck(this, Request) + + // The isHistoryNavigation getter steps are to return true if this’s request’s + // history-navigation flag is set; otherwise false. + return this[kState].historyNavigation + } + + // Returns the signal associated with request, which is an AbortSignal + // object indicating whether or not request has been aborted, and its + // abort event handler. + get signal () { + webidl.brandCheck(this, Request) + + // The signal getter steps are to return this’s signal. + return this[kSignal] + } + + get body () { + webidl.brandCheck(this, Request) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Request) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + get duplex () { + webidl.brandCheck(this, Request) + + return 'half' + } + + // Returns a clone of request. + clone () { + webidl.brandCheck(this, Request) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || this.body?.locked) { + throw new TypeError('unusable') + } + + // 2. Let clonedRequest be the result of cloning this’s request. + const clonedRequest = cloneRequest(this[kState]) + + // 3. Let clonedRequestObject be the result of creating a Request object, + // given clonedRequest, this’s headers’s guard, and this’s relevant Realm. + const clonedRequestObject = new Request(kConstruct) + clonedRequestObject[kState] = clonedRequest + clonedRequestObject[kRealm] = this[kRealm] + clonedRequestObject[kHeaders] = new Headers(kConstruct) + clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList + clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + // 4. Make clonedRequestObject’s signal follow this’s signal. + const ac = new AbortController() + if (this.signal.aborted) { + ac.abort(this.signal.reason) + } else { + util.addAbortListener( + this.signal, + () => { + ac.abort(this.signal.reason) + } + ) + } + clonedRequestObject[kSignal] = ac.signal + + // 4. Return clonedRequestObject. + return clonedRequestObject + } +} + +mixinBody(Request) + +function makeRequest (init) { + // https://fetch.spec.whatwg.org/#requests + const request = { + method: 'GET', + localURLsOnly: false, + unsafeRequest: false, + body: null, + client: null, + reservedClient: null, + replacesClientId: '', + window: 'client', + keepalive: false, + serviceWorkers: 'all', + initiator: '', + destination: '', + priority: null, + origin: 'client', + policyContainer: 'client', + referrer: 'client', + referrerPolicy: '', + mode: 'no-cors', + useCORSPreflightFlag: false, + credentials: 'same-origin', + useCredentials: false, + cache: 'default', + redirect: 'follow', + integrity: '', + cryptoGraphicsNonceMetadata: '', + parserMetadata: '', + reloadNavigation: false, + historyNavigation: false, + userActivation: false, + taintedOrigin: false, + redirectCount: 0, + responseTainting: 'basic', + preventNoCacheCacheControlHeaderModification: false, + done: false, + timingAllowFailed: false, + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList() + } + request.url = request.urlList[0] + return request +} + +// https://fetch.spec.whatwg.org/#concept-request-clone +function cloneRequest (request) { + // To clone a request request, run these steps: + + // 1. Let newRequest be a copy of request, except for its body. + const newRequest = makeRequest({ ...request, body: null }) + + // 2. If request’s body is non-null, set newRequest’s body to the + // result of cloning request’s body. + if (request.body != null) { + newRequest.body = cloneBody(request.body) + } + + // 3. Return newRequest. + return newRequest +} + +Object.defineProperties(Request.prototype, { + method: kEnumerableProperty, + url: kEnumerableProperty, + headers: kEnumerableProperty, + redirect: kEnumerableProperty, + clone: kEnumerableProperty, + signal: kEnumerableProperty, + duplex: kEnumerableProperty, + destination: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + isHistoryNavigation: kEnumerableProperty, + isReloadNavigation: kEnumerableProperty, + keepalive: kEnumerableProperty, + integrity: kEnumerableProperty, + cache: kEnumerableProperty, + credentials: kEnumerableProperty, + attribute: kEnumerableProperty, + referrerPolicy: kEnumerableProperty, + referrer: kEnumerableProperty, + mode: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Request', + configurable: true + } +}) + +webidl.converters.Request = webidl.interfaceConverter( + Request +) + +// https://fetch.spec.whatwg.org/#requestinfo +webidl.converters.RequestInfo = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (V instanceof Request) { + return webidl.converters.Request(V) + } + + return webidl.converters.USVString(V) +} + +webidl.converters.AbortSignal = webidl.interfaceConverter( + AbortSignal +) + +// https://fetch.spec.whatwg.org/#requestinit +webidl.converters.RequestInit = webidl.dictionaryConverter([ + { + key: 'method', + converter: webidl.converters.ByteString + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + }, + { + key: 'body', + converter: webidl.nullableConverter( + webidl.converters.BodyInit + ) + }, + { + key: 'referrer', + converter: webidl.converters.USVString + }, + { + key: 'referrerPolicy', + converter: webidl.converters.DOMString, + // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy + allowedValues: referrerPolicy + }, + { + key: 'mode', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#concept-request-mode + allowedValues: requestMode + }, + { + key: 'credentials', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcredentials + allowedValues: requestCredentials + }, + { + key: 'cache', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestcache + allowedValues: requestCache + }, + { + key: 'redirect', + converter: webidl.converters.DOMString, + // https://fetch.spec.whatwg.org/#requestredirect + allowedValues: requestRedirect + }, + { + key: 'integrity', + converter: webidl.converters.DOMString + }, + { + key: 'keepalive', + converter: webidl.converters.boolean + }, + { + key: 'signal', + converter: webidl.nullableConverter( + (signal) => webidl.converters.AbortSignal( + signal, + { strict: false } + ) + ) + }, + { + key: 'window', + converter: webidl.converters.any + }, + { + key: 'duplex', + converter: webidl.converters.DOMString, + allowedValues: requestDuplex + } +]) + +module.exports = { Request, makeRequest } + + +/***/ }), + +/***/ 7823: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Headers, HeadersList, fill } = __nccwpck_require__(554) +const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(1472) +const util = __nccwpck_require__(3983) +const { kEnumerableProperty } = util +const { + isValidReasonPhrase, + isCancelled, + isAborted, + isBlobLike, + serializeJavascriptValueToJSONString, + isErrorLike, + isomorphicEncode +} = __nccwpck_require__(2538) +const { + redirectStatusSet, + nullBodyStatus, + DOMException +} = __nccwpck_require__(1037) +const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(5861) +const { webidl } = __nccwpck_require__(1744) +const { FormData } = __nccwpck_require__(2015) +const { getGlobalOrigin } = __nccwpck_require__(1246) +const { URLSerializer } = __nccwpck_require__(685) +const { kHeadersList, kConstruct } = __nccwpck_require__(2785) +const assert = __nccwpck_require__(9491) +const { types } = __nccwpck_require__(3837) + +const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(5356).ReadableStream) +const textEncoder = new TextEncoder('utf-8') + +// https://fetch.spec.whatwg.org/#response-class +class Response { + // Creates network error Response. + static error () { + // TODO + const relevantRealm = { settingsObject: {} } + + // The static error() method steps are to return the result of creating a + // Response object, given a new network error, "immutable", and this’s + // relevant Realm. + const responseObject = new Response() + responseObject[kState] = makeNetworkError() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response-json + static json (data, init = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' }) + + if (init !== null) { + init = webidl.converters.ResponseInit(init) + } + + // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data. + const bytes = textEncoder.encode( + serializeJavascriptValueToJSONString(data) + ) + + // 2. Let body be the result of extracting bytes. + const body = extractBody(bytes) + + // 3. Let responseObject be the result of creating a Response object, given a new response, + // "response", and this’s relevant Realm. + const relevantRealm = { settingsObject: {} } + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'response' + responseObject[kHeaders][kRealm] = relevantRealm + + // 4. Perform initialize a response given responseObject, init, and (body, "application/json"). + initializeResponse(responseObject, init, { body: body[0], type: 'application/json' }) + + // 5. Return responseObject. + return responseObject + } + + // Creates a redirect Response that redirects to url with status status. + static redirect (url, status = 302) { + const relevantRealm = { settingsObject: {} } + + webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' }) + + url = webidl.converters.USVString(url) + status = webidl.converters['unsigned short'](status) + + // 1. Let parsedURL be the result of parsing url with current settings + // object’s API base URL. + // 2. If parsedURL is failure, then throw a TypeError. + // TODO: base-URL? + let parsedURL + try { + parsedURL = new URL(url, getGlobalOrigin()) + } catch (err) { + throw Object.assign(new TypeError('Failed to parse URL from ' + url), { + cause: err + }) + } + + // 3. If status is not a redirect status, then throw a RangeError. + if (!redirectStatusSet.has(status)) { + throw new RangeError('Invalid status code ' + status) + } + + // 4. Let responseObject be the result of creating a Response object, + // given a new response, "immutable", and this’s relevant Realm. + const responseObject = new Response() + responseObject[kRealm] = relevantRealm + responseObject[kHeaders][kGuard] = 'immutable' + responseObject[kHeaders][kRealm] = relevantRealm + + // 5. Set responseObject’s response’s status to status. + responseObject[kState].status = status + + // 6. Let value be parsedURL, serialized and isomorphic encoded. + const value = isomorphicEncode(URLSerializer(parsedURL)) + + // 7. Append `Location`/value to responseObject’s response’s header list. + responseObject[kState].headersList.append('location', value) + + // 8. Return responseObject. + return responseObject + } + + // https://fetch.spec.whatwg.org/#dom-response + constructor (body = null, init = {}) { + if (body !== null) { + body = webidl.converters.BodyInit(body) + } + + init = webidl.converters.ResponseInit(init) + + // TODO + this[kRealm] = { settingsObject: {} } + + // 1. Set this’s response to a new response. + this[kState] = makeResponse({}) + + // 2. Set this’s headers to a new Headers object with this’s relevant + // Realm, whose header list is this’s response’s header list and guard + // is "response". + this[kHeaders] = new Headers(kConstruct) + this[kHeaders][kGuard] = 'response' + this[kHeaders][kHeadersList] = this[kState].headersList + this[kHeaders][kRealm] = this[kRealm] + + // 3. Let bodyWithType be null. + let bodyWithType = null + + // 4. If body is non-null, then set bodyWithType to the result of extracting body. + if (body != null) { + const [extractedBody, type] = extractBody(body) + bodyWithType = { body: extractedBody, type } + } + + // 5. Perform initialize a response given this, init, and bodyWithType. + initializeResponse(this, init, bodyWithType) + } + + // Returns response’s type, e.g., "cors". + get type () { + webidl.brandCheck(this, Response) + + // The type getter steps are to return this’s response’s type. + return this[kState].type + } + + // Returns response’s URL, if it has one; otherwise the empty string. + get url () { + webidl.brandCheck(this, Response) + + const urlList = this[kState].urlList + + // The url getter steps are to return the empty string if this’s + // response’s URL is null; otherwise this’s response’s URL, + // serialized with exclude fragment set to true. + const url = urlList[urlList.length - 1] ?? null + + if (url === null) { + return '' + } + + return URLSerializer(url, true) + } + + // Returns whether response was obtained through a redirect. + get redirected () { + webidl.brandCheck(this, Response) + + // The redirected getter steps are to return true if this’s response’s URL + // list has more than one item; otherwise false. + return this[kState].urlList.length > 1 + } + + // Returns response’s status. + get status () { + webidl.brandCheck(this, Response) + + // The status getter steps are to return this’s response’s status. + return this[kState].status + } + + // Returns whether response’s status is an ok status. + get ok () { + webidl.brandCheck(this, Response) + + // The ok getter steps are to return true if this’s response’s status is an + // ok status; otherwise false. + return this[kState].status >= 200 && this[kState].status <= 299 + } + + // Returns response’s status message. + get statusText () { + webidl.brandCheck(this, Response) + + // The statusText getter steps are to return this’s response’s status + // message. + return this[kState].statusText + } + + // Returns response’s headers as Headers. + get headers () { + webidl.brandCheck(this, Response) + + // The headers getter steps are to return this’s headers. + return this[kHeaders] + } + + get body () { + webidl.brandCheck(this, Response) + + return this[kState].body ? this[kState].body.stream : null + } + + get bodyUsed () { + webidl.brandCheck(this, Response) + + return !!this[kState].body && util.isDisturbed(this[kState].body.stream) + } + + // Returns a clone of response. + clone () { + webidl.brandCheck(this, Response) + + // 1. If this is unusable, then throw a TypeError. + if (this.bodyUsed || (this.body && this.body.locked)) { + throw webidl.errors.exception({ + header: 'Response.clone', + message: 'Body has already been consumed.' + }) + } + + // 2. Let clonedResponse be the result of cloning this’s response. + const clonedResponse = cloneResponse(this[kState]) + + // 3. Return the result of creating a Response object, given + // clonedResponse, this’s headers’s guard, and this’s relevant Realm. + const clonedResponseObject = new Response() + clonedResponseObject[kState] = clonedResponse + clonedResponseObject[kRealm] = this[kRealm] + clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList + clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard] + clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm] + + return clonedResponseObject + } +} + +mixinBody(Response) + +Object.defineProperties(Response.prototype, { + type: kEnumerableProperty, + url: kEnumerableProperty, + status: kEnumerableProperty, + ok: kEnumerableProperty, + redirected: kEnumerableProperty, + statusText: kEnumerableProperty, + headers: kEnumerableProperty, + clone: kEnumerableProperty, + body: kEnumerableProperty, + bodyUsed: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'Response', + configurable: true + } +}) + +Object.defineProperties(Response, { + json: kEnumerableProperty, + redirect: kEnumerableProperty, + error: kEnumerableProperty +}) + +// https://fetch.spec.whatwg.org/#concept-response-clone +function cloneResponse (response) { + // To clone a response response, run these steps: + + // 1. If response is a filtered response, then return a new identical + // filtered response whose internal response is a clone of response’s + // internal response. + if (response.internalResponse) { + return filterResponse( + cloneResponse(response.internalResponse), + response.type + ) + } + + // 2. Let newResponse be a copy of response, except for its body. + const newResponse = makeResponse({ ...response, body: null }) + + // 3. If response’s body is non-null, then set newResponse’s body to the + // result of cloning response’s body. + if (response.body != null) { + newResponse.body = cloneBody(response.body) + } + + // 4. Return newResponse. + return newResponse +} + +function makeResponse (init) { + return { + aborted: false, + rangeRequested: false, + timingAllowPassed: false, + requestIncludesCredentials: false, + type: 'default', + status: 200, + timingInfo: null, + cacheState: '', + statusText: '', + ...init, + headersList: init.headersList + ? new HeadersList(init.headersList) + : new HeadersList(), + urlList: init.urlList ? [...init.urlList] : [] + } +} + +function makeNetworkError (reason) { + const isError = isErrorLike(reason) + return makeResponse({ + type: 'error', + status: 0, + error: isError + ? reason + : new Error(reason ? String(reason) : reason), + aborted: reason && reason.name === 'AbortError' + }) +} + +function makeFilteredResponse (response, state) { + state = { + internalResponse: response, + ...state + } + + return new Proxy(response, { + get (target, p) { + return p in state ? state[p] : target[p] + }, + set (target, p, value) { + assert(!(p in state)) + target[p] = value + return true + } + }) +} + +// https://fetch.spec.whatwg.org/#concept-filtered-response +function filterResponse (response, type) { + // Set response to the following filtered response with response as its + // internal response, depending on request’s response tainting: + if (type === 'basic') { + // A basic filtered response is a filtered response whose type is "basic" + // and header list excludes any headers in internal response’s header list + // whose name is a forbidden response-header name. + + // Note: undici does not implement forbidden response-header names + return makeFilteredResponse(response, { + type: 'basic', + headersList: response.headersList + }) + } else if (type === 'cors') { + // A CORS filtered response is a filtered response whose type is "cors" + // and header list excludes any headers in internal response’s header + // list whose name is not a CORS-safelisted response-header name, given + // internal response’s CORS-exposed header-name list. + + // Note: undici does not implement CORS-safelisted response-header names + return makeFilteredResponse(response, { + type: 'cors', + headersList: response.headersList + }) + } else if (type === 'opaque') { + // An opaque filtered response is a filtered response whose type is + // "opaque", URL list is the empty list, status is 0, status message + // is the empty byte sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaque', + urlList: Object.freeze([]), + status: 0, + statusText: '', + body: null + }) + } else if (type === 'opaqueredirect') { + // An opaque-redirect filtered response is a filtered response whose type + // is "opaqueredirect", status is 0, status message is the empty byte + // sequence, header list is empty, and body is null. + + return makeFilteredResponse(response, { + type: 'opaqueredirect', + status: 0, + statusText: '', + headersList: [], + body: null + }) + } else { + assert(false) + } +} + +// https://fetch.spec.whatwg.org/#appropriate-network-error +function makeAppropriateNetworkError (fetchParams, err = null) { + // 1. Assert: fetchParams is canceled. + assert(isCancelled(fetchParams)) + + // 2. Return an aborted network error if fetchParams is aborted; + // otherwise return a network error. + return isAborted(fetchParams) + ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err })) + : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err })) +} + +// https://whatpr.org/fetch/1392.html#initialize-a-response +function initializeResponse (response, init, body) { + // 1. If init["status"] is not in the range 200 to 599, inclusive, then + // throw a RangeError. + if (init.status !== null && (init.status < 200 || init.status > 599)) { + throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.') + } + + // 2. If init["statusText"] does not match the reason-phrase token production, + // then throw a TypeError. + if ('statusText' in init && init.statusText != null) { + // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2: + // reason-phrase = *( HTAB / SP / VCHAR / obs-text ) + if (!isValidReasonPhrase(String(init.statusText))) { + throw new TypeError('Invalid statusText') + } + } + + // 3. Set response’s response’s status to init["status"]. + if ('status' in init && init.status != null) { + response[kState].status = init.status + } + + // 4. Set response’s response’s status message to init["statusText"]. + if ('statusText' in init && init.statusText != null) { + response[kState].statusText = init.statusText + } + + // 5. If init["headers"] exists, then fill response’s headers with init["headers"]. + if ('headers' in init && init.headers != null) { + fill(response[kHeaders], init.headers) + } + + // 6. If body was given, then: + if (body) { + // 1. If response's status is a null body status, then throw a TypeError. + if (nullBodyStatus.includes(response.status)) { + throw webidl.errors.exception({ + header: 'Response constructor', + message: 'Invalid response status code ' + response.status + }) + } + + // 2. Set response's body to body's body. + response[kState].body = body.body + + // 3. If body's type is non-null and response's header list does not contain + // `Content-Type`, then append (`Content-Type`, body's type) to response's header list. + if (body.type != null && !response[kState].headersList.contains('Content-Type')) { + response[kState].headersList.append('content-type', body.type) + } + } +} + +webidl.converters.ReadableStream = webidl.interfaceConverter( + ReadableStream +) + +webidl.converters.FormData = webidl.interfaceConverter( + FormData +) + +webidl.converters.URLSearchParams = webidl.interfaceConverter( + URLSearchParams +) + +// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit +webidl.converters.XMLHttpRequestBodyInit = function (V) { + if (typeof V === 'string') { + return webidl.converters.USVString(V) + } + + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) { + return webidl.converters.BufferSource(V) + } + + if (util.isFormDataLike(V)) { + return webidl.converters.FormData(V, { strict: false }) + } + + if (V instanceof URLSearchParams) { + return webidl.converters.URLSearchParams(V) + } + + return webidl.converters.DOMString(V) +} + +// https://fetch.spec.whatwg.org/#bodyinit +webidl.converters.BodyInit = function (V) { + if (V instanceof ReadableStream) { + return webidl.converters.ReadableStream(V) + } + + // Note: the spec doesn't include async iterables, + // this is an undici extension. + if (V?.[Symbol.asyncIterator]) { + return V + } + + return webidl.converters.XMLHttpRequestBodyInit(V) +} + +webidl.converters.ResponseInit = webidl.dictionaryConverter([ + { + key: 'status', + converter: webidl.converters['unsigned short'], + defaultValue: 200 + }, + { + key: 'statusText', + converter: webidl.converters.ByteString, + defaultValue: '' + }, + { + key: 'headers', + converter: webidl.converters.HeadersInit + } +]) + +module.exports = { + makeNetworkError, + makeResponse, + makeAppropriateNetworkError, + filterResponse, + Response, + cloneResponse +} + + +/***/ }), + +/***/ 5861: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kUrl: Symbol('url'), + kHeaders: Symbol('headers'), + kSignal: Symbol('signal'), + kState: Symbol('state'), + kGuard: Symbol('guard'), + kRealm: Symbol('realm') +} + + +/***/ }), + +/***/ 2538: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(1037) +const { getGlobalOrigin } = __nccwpck_require__(1246) +const { performance } = __nccwpck_require__(4074) +const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(3983) +const assert = __nccwpck_require__(9491) +const { isUint8Array } = __nccwpck_require__(9830) + +// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable +/** @type {import('crypto')|undefined} */ +let crypto + +try { + crypto = __nccwpck_require__(6113) +} catch { + +} + +function responseURL (response) { + // https://fetch.spec.whatwg.org/#responses + // A response has an associated URL. It is a pointer to the last URL + // in response’s URL list and null if response’s URL list is empty. + const urlList = response.urlList + const length = urlList.length + return length === 0 ? null : urlList[length - 1].toString() +} + +// https://fetch.spec.whatwg.org/#concept-response-location-url +function responseLocationURL (response, requestFragment) { + // 1. If response’s status is not a redirect status, then return null. + if (!redirectStatusSet.has(response.status)) { + return null + } + + // 2. Let location be the result of extracting header list values given + // `Location` and response’s header list. + let location = response.headersList.get('location') + + // 3. If location is a header value, then set location to the result of + // parsing location with response’s URL. + if (location !== null && isValidHeaderValue(location)) { + location = new URL(location, responseURL(response)) + } + + // 4. If location is a URL whose fragment is null, then set location’s + // fragment to requestFragment. + if (location && !location.hash) { + location.hash = requestFragment + } + + // 5. Return location. + return location +} + +/** @returns {URL} */ +function requestCurrentURL (request) { + return request.urlList[request.urlList.length - 1] +} + +function requestBadPort (request) { + // 1. Let url be request’s current URL. + const url = requestCurrentURL(request) + + // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port, + // then return blocked. + if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) { + return 'blocked' + } + + // 3. Return allowed. + return 'allowed' +} + +function isErrorLike (object) { + return object instanceof Error || ( + object?.constructor?.name === 'Error' || + object?.constructor?.name === 'DOMException' + ) +} + +// Check whether |statusText| is a ByteString and +// matches the Reason-Phrase token production. +// RFC 2616: https://tools.ietf.org/html/rfc2616 +// RFC 7230: https://tools.ietf.org/html/rfc7230 +// "reason-phrase = *( HTAB / SP / VCHAR / obs-text )" +// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116 +function isValidReasonPhrase (statusText) { + for (let i = 0; i < statusText.length; ++i) { + const c = statusText.charCodeAt(i) + if ( + !( + ( + c === 0x09 || // HTAB + (c >= 0x20 && c <= 0x7e) || // SP / VCHAR + (c >= 0x80 && c <= 0xff) + ) // obs-text + ) + ) { + return false + } + } + return true +} + +/** + * @see https://tools.ietf.org/html/rfc7230#section-3.2.6 + * @param {number} c + */ +function isTokenCharCode (c) { + switch (c) { + case 0x22: + case 0x28: + case 0x29: + case 0x2c: + case 0x2f: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x40: + case 0x5b: + case 0x5c: + case 0x5d: + case 0x7b: + case 0x7d: + // DQUOTE and "(),/:;<=>?@[\]{}" + return false + default: + // VCHAR %x21-7E + return c >= 0x21 && c <= 0x7e + } +} + +/** + * @param {string} characters + */ +function isValidHTTPToken (characters) { + if (characters.length === 0) { + return false + } + for (let i = 0; i < characters.length; ++i) { + if (!isTokenCharCode(characters.charCodeAt(i))) { + return false + } + } + return true +} + +/** + * @see https://fetch.spec.whatwg.org/#header-name + * @param {string} potentialValue + */ +function isValidHeaderName (potentialValue) { + return isValidHTTPToken(potentialValue) +} + +/** + * @see https://fetch.spec.whatwg.org/#header-value + * @param {string} potentialValue + */ +function isValidHeaderValue (potentialValue) { + // - Has no leading or trailing HTTP tab or space bytes. + // - Contains no 0x00 (NUL) or HTTP newline bytes. + if ( + potentialValue.startsWith('\t') || + potentialValue.startsWith(' ') || + potentialValue.endsWith('\t') || + potentialValue.endsWith(' ') + ) { + return false + } + + if ( + potentialValue.includes('\0') || + potentialValue.includes('\r') || + potentialValue.includes('\n') + ) { + return false + } + + return true +} + +// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect +function setRequestReferrerPolicyOnRedirect (request, actualResponse) { + // Given a request request and a response actualResponse, this algorithm + // updates request’s referrer policy according to the Referrer-Policy + // header (if any) in actualResponse. + + // 1. Let policy be the result of executing § 8.1 Parse a referrer policy + // from a Referrer-Policy header on actualResponse. + + // 8.1 Parse a referrer policy from a Referrer-Policy header + // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list. + const { headersList } = actualResponse + // 2. Let policy be the empty string. + // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token. + // 4. Return policy. + const policyHeader = (headersList.get('referrer-policy') ?? '').split(',') + + // Note: As the referrer-policy can contain multiple policies + // separated by comma, we need to loop through all of them + // and pick the first valid one. + // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy + let policy = '' + if (policyHeader.length > 0) { + // The right-most policy takes precedence. + // The left-most policy is the fallback. + for (let i = policyHeader.length; i !== 0; i--) { + const token = policyHeader[i - 1].trim() + if (referrerPolicyTokens.has(token)) { + policy = token + break + } + } + } + + // 2. If policy is not the empty string, then set request’s referrer policy to policy. + if (policy !== '') { + request.referrerPolicy = policy + } +} + +// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check +function crossOriginResourcePolicyCheck () { + // TODO + return 'allowed' +} + +// https://fetch.spec.whatwg.org/#concept-cors-check +function corsCheck () { + // TODO + return 'success' +} + +// https://fetch.spec.whatwg.org/#concept-tao-check +function TAOCheck () { + // TODO + return 'success' +} + +function appendFetchMetadata (httpRequest) { + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header + + // 1. Assert: r’s url is a potentially trustworthy URL. + // TODO + + // 2. Let header be a Structured Header whose value is a token. + let header = null + + // 3. Set header’s value to r’s mode. + header = httpRequest.mode + + // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list. + httpRequest.headersList.set('sec-fetch-mode', header) + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header + // TODO + + // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header + // TODO +} + +// https://fetch.spec.whatwg.org/#append-a-request-origin-header +function appendRequestOriginHeader (request) { + // 1. Let serializedOrigin be the result of byte-serializing a request origin with request. + let serializedOrigin = request.origin + + // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list. + if (request.responseTainting === 'cors' || request.mode === 'websocket') { + if (serializedOrigin) { + request.headersList.append('origin', serializedOrigin) + } + + // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then: + } else if (request.method !== 'GET' && request.method !== 'HEAD') { + // 1. Switch on request’s referrer policy: + switch (request.referrerPolicy) { + case 'no-referrer': + // Set serializedOrigin to `null`. + serializedOrigin = null + break + case 'no-referrer-when-downgrade': + case 'strict-origin': + case 'strict-origin-when-cross-origin': + // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`. + if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) { + serializedOrigin = null + } + break + case 'same-origin': + // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`. + if (!sameOrigin(request, requestCurrentURL(request))) { + serializedOrigin = null + } + break + default: + // Do nothing. + } + + if (serializedOrigin) { + // 2. Append (`Origin`, serializedOrigin) to request’s header list. + request.headersList.append('origin', serializedOrigin) + } + } +} + +function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) { + // TODO + return performance.now() +} + +// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info +function createOpaqueTimingInfo (timingInfo) { + return { + startTime: timingInfo.startTime ?? 0, + redirectStartTime: 0, + redirectEndTime: 0, + postRedirectStartTime: timingInfo.startTime ?? 0, + finalServiceWorkerStartTime: 0, + finalNetworkResponseStartTime: 0, + finalNetworkRequestStartTime: 0, + endTime: 0, + encodedBodySize: 0, + decodedBodySize: 0, + finalConnectionTimingInfo: null + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#policy-container +function makePolicyContainer () { + // Note: the fetch spec doesn't make use of embedder policy or CSP list + return { + referrerPolicy: 'strict-origin-when-cross-origin' + } +} + +// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container +function clonePolicyContainer (policyContainer) { + return { + referrerPolicy: policyContainer.referrerPolicy + } +} + +// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer +function determineRequestsReferrer (request) { + // 1. Let policy be request's referrer policy. + const policy = request.referrerPolicy + + // Note: policy cannot (shouldn't) be null or an empty string. + assert(policy) + + // 2. Let environment be request’s client. + + let referrerSource = null + + // 3. Switch on request’s referrer: + if (request.referrer === 'client') { + // Note: node isn't a browser and doesn't implement document/iframes, + // so we bypass this step and replace it with our own. + + const globalOrigin = getGlobalOrigin() + + if (!globalOrigin || globalOrigin.origin === 'null') { + return 'no-referrer' + } + + // note: we need to clone it as it's mutated + referrerSource = new URL(globalOrigin) + } else if (request.referrer instanceof URL) { + // Let referrerSource be request’s referrer. + referrerSource = request.referrer + } + + // 4. Let request’s referrerURL be the result of stripping referrerSource for + // use as a referrer. + let referrerURL = stripURLForReferrer(referrerSource) + + // 5. Let referrerOrigin be the result of stripping referrerSource for use as + // a referrer, with the origin-only flag set to true. + const referrerOrigin = stripURLForReferrer(referrerSource, true) + + // 6. If the result of serializing referrerURL is a string whose length is + // greater than 4096, set referrerURL to referrerOrigin. + if (referrerURL.toString().length > 4096) { + referrerURL = referrerOrigin + } + + const areSameOrigin = sameOrigin(request, referrerURL) + const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) && + !isURLPotentiallyTrustworthy(request.url) + + // 8. Execute the switch statements corresponding to the value of policy: + switch (policy) { + case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true) + case 'unsafe-url': return referrerURL + case 'same-origin': + return areSameOrigin ? referrerOrigin : 'no-referrer' + case 'origin-when-cross-origin': + return areSameOrigin ? referrerURL : referrerOrigin + case 'strict-origin-when-cross-origin': { + const currentURL = requestCurrentURL(request) + + // 1. If the origin of referrerURL and the origin of request’s current + // URL are the same, then return referrerURL. + if (sameOrigin(referrerURL, currentURL)) { + return referrerURL + } + + // 2. If referrerURL is a potentially trustworthy URL and request’s + // current URL is not a potentially trustworthy URL, then return no + // referrer. + if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) { + return 'no-referrer' + } + + // 3. Return referrerOrigin. + return referrerOrigin + } + case 'strict-origin': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + case 'no-referrer-when-downgrade': // eslint-disable-line + /** + * 1. If referrerURL is a potentially trustworthy URL and + * request’s current URL is not a potentially trustworthy URL, + * then return no referrer. + * 2. Return referrerOrigin + */ + + default: // eslint-disable-line + return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin + } +} + +/** + * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url + * @param {URL} url + * @param {boolean|undefined} originOnly + */ +function stripURLForReferrer (url, originOnly) { + // 1. Assert: url is a URL. + assert(url instanceof URL) + + // 2. If url’s scheme is a local scheme, then return no referrer. + if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') { + return 'no-referrer' + } + + // 3. Set url’s username to the empty string. + url.username = '' + + // 4. Set url’s password to the empty string. + url.password = '' + + // 5. Set url’s fragment to null. + url.hash = '' + + // 6. If the origin-only flag is true, then: + if (originOnly) { + // 1. Set url’s path to « the empty string ». + url.pathname = '' + + // 2. Set url’s query to null. + url.search = '' + } + + // 7. Return url. + return url +} + +function isURLPotentiallyTrustworthy (url) { + if (!(url instanceof URL)) { + return false + } + + // If child of about, return true + if (url.href === 'about:blank' || url.href === 'about:srcdoc') { + return true + } + + // If scheme is data, return true + if (url.protocol === 'data:') return true + + // If file, return true + if (url.protocol === 'file:') return true + + return isOriginPotentiallyTrustworthy(url.origin) + + function isOriginPotentiallyTrustworthy (origin) { + // If origin is explicitly null, return false + if (origin == null || origin === 'null') return false + + const originAsURL = new URL(origin) + + // If secure, return true + if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') { + return true + } + + // If localhost or variants, return true + if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) || + (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) || + (originAsURL.hostname.endsWith('.localhost'))) { + return true + } + + // If any other, return false + return false + } +} + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist + * @param {Uint8Array} bytes + * @param {string} metadataList + */ +function bytesMatch (bytes, metadataList) { + // If node is not built with OpenSSL support, we cannot check + // a request's integrity, so allow it by default (the spec will + // allow requests if an invalid hash is given, as precedence). + /* istanbul ignore if: only if node is built with --without-ssl */ + if (crypto === undefined) { + return true + } + + // 1. Let parsedMetadata be the result of parsing metadataList. + const parsedMetadata = parseMetadata(metadataList) + + // 2. If parsedMetadata is no metadata, return true. + if (parsedMetadata === 'no metadata') { + return true + } + + // 3. If parsedMetadata is the empty set, return true. + if (parsedMetadata.length === 0) { + return true + } + + // 4. Let metadata be the result of getting the strongest + // metadata from parsedMetadata. + const list = parsedMetadata.sort((c, d) => d.algo.localeCompare(c.algo)) + // get the strongest algorithm + const strongest = list[0].algo + // get all entries that use the strongest algorithm; ignore weaker + const metadata = list.filter((item) => item.algo === strongest) + + // 5. For each item in metadata: + for (const item of metadata) { + // 1. Let algorithm be the alg component of item. + const algorithm = item.algo + + // 2. Let expectedValue be the val component of item. + let expectedValue = item.hash + + // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e + // "be liberal with padding". This is annoying, and it's not even in the spec. + + if (expectedValue.endsWith('==')) { + expectedValue = expectedValue.slice(0, -2) + } + + // 3. Let actualValue be the result of applying algorithm to bytes. + let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64') + + if (actualValue.endsWith('==')) { + actualValue = actualValue.slice(0, -2) + } + + // 4. If actualValue is a case-sensitive match for expectedValue, + // return true. + if (actualValue === expectedValue) { + return true + } + + let actualBase64URL = crypto.createHash(algorithm).update(bytes).digest('base64url') + + if (actualBase64URL.endsWith('==')) { + actualBase64URL = actualBase64URL.slice(0, -2) + } + + if (actualBase64URL === expectedValue) { + return true + } + } + + // 6. Return false. + return false +} + +// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options +// https://www.w3.org/TR/CSP2/#source-list-syntax +// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1 +const parseHashWithOptions = /((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i + +/** + * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata + * @param {string} metadata + */ +function parseMetadata (metadata) { + // 1. Let result be the empty set. + /** @type {{ algo: string, hash: string }[]} */ + const result = [] + + // 2. Let empty be equal to true. + let empty = true + + const supportedHashes = crypto.getHashes() + + // 3. For each token returned by splitting metadata on spaces: + for (const token of metadata.split(' ')) { + // 1. Set empty to false. + empty = false + + // 2. Parse token as a hash-with-options. + const parsedToken = parseHashWithOptions.exec(token) + + // 3. If token does not parse, continue to the next token. + if (parsedToken === null || parsedToken.groups === undefined) { + // Note: Chromium blocks the request at this point, but Firefox + // gives a warning that an invalid integrity was given. The + // correct behavior is to ignore these, and subsequently not + // check the integrity of the resource. + continue + } + + // 4. Let algorithm be the hash-algo component of token. + const algorithm = parsedToken.groups.algo + + // 5. If algorithm is a hash function recognized by the user + // agent, add the parsed token to result. + if (supportedHashes.includes(algorithm.toLowerCase())) { + result.push(parsedToken.groups) + } + } + + // 4. Return no metadata if empty is true, otherwise return result. + if (empty === true) { + return 'no metadata' + } + + return result +} + +// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request +function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) { + // TODO +} + +/** + * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin} + * @param {URL} A + * @param {URL} B + */ +function sameOrigin (A, B) { + // 1. If A and B are the same opaque origin, then return true. + if (A.origin === B.origin && A.origin === 'null') { + return true + } + + // 2. If A and B are both tuple origins and their schemes, + // hosts, and port are identical, then return true. + if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) { + return true + } + + // 3. Return false. + return false +} + +function createDeferredPromise () { + let res + let rej + const promise = new Promise((resolve, reject) => { + res = resolve + rej = reject + }) + + return { promise, resolve: res, reject: rej } +} + +function isAborted (fetchParams) { + return fetchParams.controller.state === 'aborted' +} + +function isCancelled (fetchParams) { + return fetchParams.controller.state === 'aborted' || + fetchParams.controller.state === 'terminated' +} + +const normalizeMethodRecord = { + delete: 'DELETE', + DELETE: 'DELETE', + get: 'GET', + GET: 'GET', + head: 'HEAD', + HEAD: 'HEAD', + options: 'OPTIONS', + OPTIONS: 'OPTIONS', + post: 'POST', + POST: 'POST', + put: 'PUT', + PUT: 'PUT' +} + +// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. +Object.setPrototypeOf(normalizeMethodRecord, null) + +/** + * @see https://fetch.spec.whatwg.org/#concept-method-normalize + * @param {string} method + */ +function normalizeMethod (method) { + return normalizeMethodRecord[method.toLowerCase()] ?? method +} + +// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string +function serializeJavascriptValueToJSONString (value) { + // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »). + const result = JSON.stringify(value) + + // 2. If result is undefined, then throw a TypeError. + if (result === undefined) { + throw new TypeError('Value is not JSON serializable') + } + + // 3. Assert: result is a string. + assert(typeof result === 'string') + + // 4. Return result. + return result +} + +// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object +const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())) + +/** + * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object + * @param {() => unknown[]} iterator + * @param {string} name name of the instance + * @param {'key'|'value'|'key+value'} kind + */ +function makeIterator (iterator, name, kind) { + const object = { + index: 0, + kind, + target: iterator + } + + const i = { + next () { + // 1. Let interface be the interface for which the iterator prototype object exists. + + // 2. Let thisValue be the this value. + + // 3. Let object be ? ToObject(thisValue). + + // 4. If object is a platform object, then perform a security + // check, passing: + + // 5. If object is not a default iterator object for interface, + // then throw a TypeError. + if (Object.getPrototypeOf(this) !== i) { + throw new TypeError( + `'next' called on an object that does not implement interface ${name} Iterator.` + ) + } + + // 6. Let index be object’s index. + // 7. Let kind be object’s kind. + // 8. Let values be object’s target's value pairs to iterate over. + const { index, kind, target } = object + const values = target() + + // 9. Let len be the length of values. + const len = values.length + + // 10. If index is greater than or equal to len, then return + // CreateIterResultObject(undefined, true). + if (index >= len) { + return { value: undefined, done: true } + } + + // 11. Let pair be the entry in values at index index. + const pair = values[index] + + // 12. Set object’s index to index + 1. + object.index = index + 1 + + // 13. Return the iterator result for pair and kind. + return iteratorResult(pair, kind) + }, + // The class string of an iterator prototype object for a given interface is the + // result of concatenating the identifier of the interface and the string " Iterator". + [Symbol.toStringTag]: `${name} Iterator` + } + + // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%. + Object.setPrototypeOf(i, esIteratorPrototype) + // esIteratorPrototype needs to be the prototype of i + // which is the prototype of an empty object. Yes, it's confusing. + return Object.setPrototypeOf({}, i) +} + +// https://webidl.spec.whatwg.org/#iterator-result +function iteratorResult (pair, kind) { + let result + + // 1. Let result be a value determined by the value of kind: + switch (kind) { + case 'key': { + // 1. Let idlKey be pair’s key. + // 2. Let key be the result of converting idlKey to an + // ECMAScript value. + // 3. result is key. + result = pair[0] + break + } + case 'value': { + // 1. Let idlValue be pair’s value. + // 2. Let value be the result of converting idlValue to + // an ECMAScript value. + // 3. result is value. + result = pair[1] + break + } + case 'key+value': { + // 1. Let idlKey be pair’s key. + // 2. Let idlValue be pair’s value. + // 3. Let key be the result of converting idlKey to an + // ECMAScript value. + // 4. Let value be the result of converting idlValue to + // an ECMAScript value. + // 5. Let array be ! ArrayCreate(2). + // 6. Call ! CreateDataProperty(array, "0", key). + // 7. Call ! CreateDataProperty(array, "1", value). + // 8. result is array. + result = pair + break + } + } + + // 2. Return CreateIterResultObject(result, false). + return { value: result, done: false } +} + +/** + * @see https://fetch.spec.whatwg.org/#body-fully-read + */ +async function fullyReadBody (body, processBody, processBodyError) { + // 1. If taskDestination is null, then set taskDestination to + // the result of starting a new parallel queue. + + // 2. Let successSteps given a byte sequence bytes be to queue a + // fetch task to run processBody given bytes, with taskDestination. + const successSteps = processBody + + // 3. Let errorSteps be to queue a fetch task to run processBodyError, + // with taskDestination. + const errorSteps = processBodyError + + // 4. Let reader be the result of getting a reader for body’s stream. + // If that threw an exception, then run errorSteps with that + // exception and return. + let reader + + try { + reader = body.stream.getReader() + } catch (e) { + errorSteps(e) + return + } + + // 5. Read all bytes from reader, given successSteps and errorSteps. + try { + const result = await readAllBytes(reader) + successSteps(result) + } catch (e) { + errorSteps(e) + } +} + +/** @type {ReadableStream} */ +let ReadableStream = globalThis.ReadableStream + +function isReadableStreamLike (stream) { + if (!ReadableStream) { + ReadableStream = (__nccwpck_require__(5356).ReadableStream) + } + + return stream instanceof ReadableStream || ( + stream[Symbol.toStringTag] === 'ReadableStream' && + typeof stream.tee === 'function' + ) +} + +const MAXIMUM_ARGUMENT_LENGTH = 65535 + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-decode + * @param {number[]|Uint8Array} input + */ +function isomorphicDecode (input) { + // 1. To isomorphic decode a byte sequence input, return a string whose code point + // length is equal to input’s length and whose code points have the same values + // as the values of input’s bytes, in the same order. + + if (input.length < MAXIMUM_ARGUMENT_LENGTH) { + return String.fromCharCode(...input) + } + + return input.reduce((previous, current) => previous + String.fromCharCode(current), '') +} + +/** + * @param {ReadableStreamController} controller + */ +function readableStreamClose (controller) { + try { + controller.close() + } catch (err) { + // TODO: add comment explaining why this error occurs. + if (!err.message.includes('Controller is already closed')) { + throw err + } + } +} + +/** + * @see https://infra.spec.whatwg.org/#isomorphic-encode + * @param {string} input + */ +function isomorphicEncode (input) { + // 1. Assert: input contains no code points greater than U+00FF. + for (let i = 0; i < input.length; i++) { + assert(input.charCodeAt(i) <= 0xFF) + } + + // 2. Return a byte sequence whose length is equal to input’s code + // point length and whose bytes have the same values as the + // values of input’s code points, in the same order + return input +} + +/** + * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes + * @see https://streams.spec.whatwg.org/#read-loop + * @param {ReadableStreamDefaultReader} reader + */ +async function readAllBytes (reader) { + const bytes = [] + let byteLength = 0 + + while (true) { + const { done, value: chunk } = await reader.read() + + if (done) { + // 1. Call successSteps with bytes. + return Buffer.concat(bytes, byteLength) + } + + // 1. If chunk is not a Uint8Array object, call failureSteps + // with a TypeError and abort these steps. + if (!isUint8Array(chunk)) { + throw new TypeError('Received non-Uint8Array chunk') + } + + // 2. Append the bytes represented by chunk to bytes. + bytes.push(chunk) + byteLength += chunk.length + + // 3. Read-loop given reader, bytes, successSteps, and failureSteps. + } +} + +/** + * @see https://fetch.spec.whatwg.org/#is-local + * @param {URL} url + */ +function urlIsLocal (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:' +} + +/** + * @param {string|URL} url + */ +function urlHasHttpsScheme (url) { + if (typeof url === 'string') { + return url.startsWith('https:') + } + + return url.protocol === 'https:' +} + +/** + * @see https://fetch.spec.whatwg.org/#http-scheme + * @param {URL} url + */ +function urlIsHttpHttpsScheme (url) { + assert('protocol' in url) // ensure it's a url object + + const protocol = url.protocol + + return protocol === 'http:' || protocol === 'https:' +} + +/** + * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0. + */ +const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key)) + +module.exports = { + isAborted, + isCancelled, + createDeferredPromise, + ReadableStreamFrom, + toUSVString, + tryUpgradeRequestToAPotentiallyTrustworthyURL, + coarsenedSharedCurrentTime, + determineRequestsReferrer, + makePolicyContainer, + clonePolicyContainer, + appendFetchMetadata, + appendRequestOriginHeader, + TAOCheck, + corsCheck, + crossOriginResourcePolicyCheck, + createOpaqueTimingInfo, + setRequestReferrerPolicyOnRedirect, + isValidHTTPToken, + requestBadPort, + requestCurrentURL, + responseURL, + responseLocationURL, + isBlobLike, + isURLPotentiallyTrustworthy, + isValidReasonPhrase, + sameOrigin, + normalizeMethod, + serializeJavascriptValueToJSONString, + makeIterator, + isValidHeaderName, + isValidHeaderValue, + hasOwn, + isErrorLike, + fullyReadBody, + bytesMatch, + isReadableStreamLike, + readableStreamClose, + isomorphicEncode, + isomorphicDecode, + urlIsLocal, + urlHasHttpsScheme, + urlIsHttpHttpsScheme, + readAllBytes, + normalizeMethodRecord +} + + +/***/ }), + +/***/ 1744: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { types } = __nccwpck_require__(3837) +const { hasOwn, toUSVString } = __nccwpck_require__(2538) + +/** @type {import('../../types/webidl').Webidl} */ +const webidl = {} +webidl.converters = {} +webidl.util = {} +webidl.errors = {} + +webidl.errors.exception = function (message) { + return new TypeError(`${message.header}: ${message.message}`) +} + +webidl.errors.conversionFailed = function (context) { + const plural = context.types.length === 1 ? '' : ' one of' + const message = + `${context.argument} could not be converted to` + + `${plural}: ${context.types.join(', ')}.` + + return webidl.errors.exception({ + header: context.prefix, + message + }) +} + +webidl.errors.invalidArgument = function (context) { + return webidl.errors.exception({ + header: context.prefix, + message: `"${context.value}" is an invalid ${context.type}.` + }) +} + +// https://webidl.spec.whatwg.org/#implements +webidl.brandCheck = function (V, I, opts = undefined) { + if (opts?.strict !== false && !(V instanceof I)) { + throw new TypeError('Illegal invocation') + } else { + return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag] + } +} + +webidl.argumentLengthCheck = function ({ length }, min, ctx) { + if (length < min) { + throw webidl.errors.exception({ + message: `${min} argument${min !== 1 ? 's' : ''} required, ` + + `but${length ? ' only' : ''} ${length} found.`, + ...ctx + }) + } +} + +webidl.illegalConstructor = function () { + throw webidl.errors.exception({ + header: 'TypeError', + message: 'Illegal constructor' + }) +} + +// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values +webidl.util.Type = function (V) { + switch (typeof V) { + case 'undefined': return 'Undefined' + case 'boolean': return 'Boolean' + case 'string': return 'String' + case 'symbol': return 'Symbol' + case 'number': return 'Number' + case 'bigint': return 'BigInt' + case 'function': + case 'object': { + if (V === null) { + return 'Null' + } + + return 'Object' + } + } +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint +webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) { + let upperBound + let lowerBound + + // 1. If bitLength is 64, then: + if (bitLength === 64) { + // 1. Let upperBound be 2^53 − 1. + upperBound = Math.pow(2, 53) - 1 + + // 2. If signedness is "unsigned", then let lowerBound be 0. + if (signedness === 'unsigned') { + lowerBound = 0 + } else { + // 3. Otherwise let lowerBound be −2^53 + 1. + lowerBound = Math.pow(-2, 53) + 1 + } + } else if (signedness === 'unsigned') { + // 2. Otherwise, if signedness is "unsigned", then: + + // 1. Let lowerBound be 0. + lowerBound = 0 + + // 2. Let upperBound be 2^bitLength − 1. + upperBound = Math.pow(2, bitLength) - 1 + } else { + // 3. Otherwise: + + // 1. Let lowerBound be -2^bitLength − 1. + lowerBound = Math.pow(-2, bitLength) - 1 + + // 2. Let upperBound be 2^bitLength − 1 − 1. + upperBound = Math.pow(2, bitLength - 1) - 1 + } + + // 4. Let x be ? ToNumber(V). + let x = Number(V) + + // 5. If x is −0, then set x to +0. + if (x === 0) { + x = 0 + } + + // 6. If the conversion is to an IDL type associated + // with the [EnforceRange] extended attribute, then: + if (opts.enforceRange === true) { + // 1. If x is NaN, +∞, or −∞, then throw a TypeError. + if ( + Number.isNaN(x) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Could not convert ${V} to an integer.` + }) + } + + // 2. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 3. If x < lowerBound or x > upperBound, then + // throw a TypeError. + if (x < lowerBound || x > upperBound) { + throw webidl.errors.exception({ + header: 'Integer conversion', + message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.` + }) + } + + // 4. Return x. + return x + } + + // 7. If x is not NaN and the conversion is to an IDL + // type associated with the [Clamp] extended + // attribute, then: + if (!Number.isNaN(x) && opts.clamp === true) { + // 1. Set x to min(max(x, lowerBound), upperBound). + x = Math.min(Math.max(x, lowerBound), upperBound) + + // 2. Round x to the nearest integer, choosing the + // even integer if it lies halfway between two, + // and choosing +0 rather than −0. + if (Math.floor(x) % 2 === 0) { + x = Math.floor(x) + } else { + x = Math.ceil(x) + } + + // 3. Return x. + return x + } + + // 8. If x is NaN, +0, +∞, or −∞, then return +0. + if ( + Number.isNaN(x) || + (x === 0 && Object.is(0, x)) || + x === Number.POSITIVE_INFINITY || + x === Number.NEGATIVE_INFINITY + ) { + return 0 + } + + // 9. Set x to IntegerPart(x). + x = webidl.util.IntegerPart(x) + + // 10. Set x to x modulo 2^bitLength. + x = x % Math.pow(2, bitLength) + + // 11. If signedness is "signed" and x ≥ 2^bitLength − 1, + // then return x − 2^bitLength. + if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) { + return x - Math.pow(2, bitLength) + } + + // 12. Otherwise, return x. + return x +} + +// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart +webidl.util.IntegerPart = function (n) { + // 1. Let r be floor(abs(n)). + const r = Math.floor(Math.abs(n)) + + // 2. If n < 0, then return -1 × r. + if (n < 0) { + return -1 * r + } + + // 3. Otherwise, return r. + return r +} + +// https://webidl.spec.whatwg.org/#es-sequence +webidl.sequenceConverter = function (converter) { + return (V) => { + // 1. If Type(V) is not Object, throw a TypeError. + if (webidl.util.Type(V) !== 'Object') { + throw webidl.errors.exception({ + header: 'Sequence', + message: `Value of type ${webidl.util.Type(V)} is not an Object.` + }) + } + + // 2. Let method be ? GetMethod(V, @@iterator). + /** @type {Generator} */ + const method = V?.[Symbol.iterator]?.() + const seq = [] + + // 3. If method is undefined, throw a TypeError. + if ( + method === undefined || + typeof method.next !== 'function' + ) { + throw webidl.errors.exception({ + header: 'Sequence', + message: 'Object is not an iterator.' + }) + } + + // https://webidl.spec.whatwg.org/#create-sequence-from-iterable + while (true) { + const { done, value } = method.next() + + if (done) { + break + } + + seq.push(converter(value)) + } + + return seq + } +} + +// https://webidl.spec.whatwg.org/#es-to-record +webidl.recordConverter = function (keyConverter, valueConverter) { + return (O) => { + // 1. If Type(O) is not Object, throw a TypeError. + if (webidl.util.Type(O) !== 'Object') { + throw webidl.errors.exception({ + header: 'Record', + message: `Value of type ${webidl.util.Type(O)} is not an Object.` + }) + } + + // 2. Let result be a new empty instance of record. + const result = {} + + if (!types.isProxy(O)) { + // Object.keys only returns enumerable properties + const keys = Object.keys(O) + + for (const key of keys) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + + // 5. Return result. + return result + } + + // 3. Let keys be ? O.[[OwnPropertyKeys]](). + const keys = Reflect.ownKeys(O) + + // 4. For each key of keys. + for (const key of keys) { + // 1. Let desc be ? O.[[GetOwnProperty]](key). + const desc = Reflect.getOwnPropertyDescriptor(O, key) + + // 2. If desc is not undefined and desc.[[Enumerable]] is true: + if (desc?.enumerable) { + // 1. Let typedKey be key converted to an IDL value of type K. + const typedKey = keyConverter(key) + + // 2. Let value be ? Get(O, key). + // 3. Let typedValue be value converted to an IDL value of type V. + const typedValue = valueConverter(O[key]) + + // 4. Set result[typedKey] to typedValue. + result[typedKey] = typedValue + } + } + + // 5. Return result. + return result + } +} + +webidl.interfaceConverter = function (i) { + return (V, opts = {}) => { + if (opts.strict !== false && !(V instanceof i)) { + throw webidl.errors.exception({ + header: i.name, + message: `Expected ${V} to be an instance of ${i.name}.` + }) + } + + return V + } +} + +webidl.dictionaryConverter = function (converters) { + return (dictionary) => { + const type = webidl.util.Type(dictionary) + const dict = {} + + if (type === 'Null' || type === 'Undefined') { + return dict + } else if (type !== 'Object') { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Expected ${dictionary} to be one of: Null, Undefined, Object.` + }) + } + + for (const options of converters) { + const { key, defaultValue, required, converter } = options + + if (required === true) { + if (!hasOwn(dictionary, key)) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `Missing required key "${key}".` + }) + } + } + + let value = dictionary[key] + const hasDefault = hasOwn(options, 'defaultValue') + + // Only use defaultValue if value is undefined and + // a defaultValue options was provided. + if (hasDefault && value !== null) { + value = value ?? defaultValue + } + + // A key can be optional and have no default value. + // When this happens, do not perform a conversion, + // and do not assign the key a value. + if (required || hasDefault || value !== undefined) { + value = converter(value) + + if ( + options.allowedValues && + !options.allowedValues.includes(value) + ) { + throw webidl.errors.exception({ + header: 'Dictionary', + message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.` + }) + } + + dict[key] = value + } + } + + return dict + } +} + +webidl.nullableConverter = function (converter) { + return (V) => { + if (V === null) { + return V + } + + return converter(V) + } +} + +// https://webidl.spec.whatwg.org/#es-DOMString +webidl.converters.DOMString = function (V, opts = {}) { + // 1. If V is null and the conversion is to an IDL type + // associated with the [LegacyNullToEmptyString] + // extended attribute, then return the DOMString value + // that represents the empty string. + if (V === null && opts.legacyNullToEmptyString) { + return '' + } + + // 2. Let x be ? ToString(V). + if (typeof V === 'symbol') { + throw new TypeError('Could not convert argument of type symbol to string.') + } + + // 3. Return the IDL DOMString value that represents the + // same sequence of code units as the one the + // ECMAScript String value x represents. + return String(V) +} + +// https://webidl.spec.whatwg.org/#es-ByteString +webidl.converters.ByteString = function (V) { + // 1. Let x be ? ToString(V). + // Note: DOMString converter perform ? ToString(V) + const x = webidl.converters.DOMString(V) + + // 2. If the value of any element of x is greater than + // 255, then throw a TypeError. + for (let index = 0; index < x.length; index++) { + if (x.charCodeAt(index) > 255) { + throw new TypeError( + 'Cannot convert argument to a ByteString because the character at ' + + `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.` + ) + } + } + + // 3. Return an IDL ByteString value whose length is the + // length of x, and where the value of each element is + // the value of the corresponding element of x. + return x +} + +// https://webidl.spec.whatwg.org/#es-USVString +webidl.converters.USVString = toUSVString + +// https://webidl.spec.whatwg.org/#es-boolean +webidl.converters.boolean = function (V) { + // 1. Let x be the result of computing ToBoolean(V). + const x = Boolean(V) + + // 2. Return the IDL boolean value that is the one that represents + // the same truth value as the ECMAScript Boolean value x. + return x +} + +// https://webidl.spec.whatwg.org/#es-any +webidl.converters.any = function (V) { + return V +} + +// https://webidl.spec.whatwg.org/#es-long-long +webidl.converters['long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "signed"). + const x = webidl.util.ConvertToInt(V, 64, 'signed') + + // 2. Return the IDL long long value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long-long +webidl.converters['unsigned long long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 64, "unsigned"). + const x = webidl.util.ConvertToInt(V, 64, 'unsigned') + + // 2. Return the IDL unsigned long long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-long +webidl.converters['unsigned long'] = function (V) { + // 1. Let x be ? ConvertToInt(V, 32, "unsigned"). + const x = webidl.util.ConvertToInt(V, 32, 'unsigned') + + // 2. Return the IDL unsigned long value that + // represents the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#es-unsigned-short +webidl.converters['unsigned short'] = function (V, opts) { + // 1. Let x be ? ConvertToInt(V, 16, "unsigned"). + const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts) + + // 2. Return the IDL unsigned short value that represents + // the same numeric value as x. + return x +} + +// https://webidl.spec.whatwg.org/#idl-ArrayBuffer +webidl.converters.ArrayBuffer = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have an + // [[ArrayBufferData]] internal slot, then throw a + // TypeError. + // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances + // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances + if ( + webidl.util.Type(V) !== 'Object' || + !types.isAnyArrayBuffer(V) + ) { + throw webidl.errors.conversionFailed({ + prefix: `${V}`, + argument: `${V}`, + types: ['ArrayBuffer'] + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V) is true, then throw a + // TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V) is true, then throw a + // TypeError. + // Note: resizable ArrayBuffers are currently a proposal. + + // 4. Return the IDL ArrayBuffer value that is a + // reference to the same object as V. + return V +} + +webidl.converters.TypedArray = function (V, T, opts = {}) { + // 1. Let T be the IDL type V is being converted to. + + // 2. If Type(V) is not Object, or V does not have a + // [[TypedArrayName]] internal slot with a value + // equal to T’s name, then throw a TypeError. + if ( + webidl.util.Type(V) !== 'Object' || + !types.isTypedArray(V) || + V.constructor.name !== T.name + ) { + throw webidl.errors.conversionFailed({ + prefix: `${T.name}`, + argument: `${V}`, + types: [T.name] + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 4. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable array buffers are currently a proposal + + // 5. Return the IDL value of type T that is a reference + // to the same object as V. + return V +} + +webidl.converters.DataView = function (V, opts = {}) { + // 1. If Type(V) is not Object, or V does not have a + // [[DataView]] internal slot, then throw a TypeError. + if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) { + throw webidl.errors.exception({ + header: 'DataView', + message: 'Object is not a DataView.' + }) + } + + // 2. If the conversion is not to an IDL type associated + // with the [AllowShared] extended attribute, and + // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true, + // then throw a TypeError. + if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) { + throw webidl.errors.exception({ + header: 'ArrayBuffer', + message: 'SharedArrayBuffer is not allowed.' + }) + } + + // 3. If the conversion is not to an IDL type associated + // with the [AllowResizable] extended attribute, and + // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is + // true, then throw a TypeError. + // Note: resizable ArrayBuffers are currently a proposal + + // 4. Return the IDL DataView value that is a reference + // to the same object as V. + return V +} + +// https://webidl.spec.whatwg.org/#BufferSource +webidl.converters.BufferSource = function (V, opts = {}) { + if (types.isAnyArrayBuffer(V)) { + return webidl.converters.ArrayBuffer(V, opts) + } + + if (types.isTypedArray(V)) { + return webidl.converters.TypedArray(V, V.constructor) + } + + if (types.isDataView(V)) { + return webidl.converters.DataView(V, opts) + } + + throw new TypeError(`Could not convert ${V} to a BufferSource.`) +} + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.ByteString +) + +webidl.converters['sequence>'] = webidl.sequenceConverter( + webidl.converters['sequence'] +) + +webidl.converters['record'] = webidl.recordConverter( + webidl.converters.ByteString, + webidl.converters.ByteString +) + +module.exports = { + webidl +} + + +/***/ }), + +/***/ 4854: +/***/ ((module) => { + +"use strict"; + + +/** + * @see https://encoding.spec.whatwg.org/#concept-encoding-get + * @param {string|undefined} label + */ +function getEncoding (label) { + if (!label) { + return 'failure' + } + + // 1. Remove any leading and trailing ASCII whitespace from label. + // 2. If label is an ASCII case-insensitive match for any of the + // labels listed in the table below, then return the + // corresponding encoding; otherwise return failure. + switch (label.trim().toLowerCase()) { + case 'unicode-1-1-utf-8': + case 'unicode11utf8': + case 'unicode20utf8': + case 'utf-8': + case 'utf8': + case 'x-unicode20utf8': + return 'UTF-8' + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866' + case 'csisolatin2': + case 'iso-8859-2': + case 'iso-ir-101': + case 'iso8859-2': + case 'iso88592': + case 'iso_8859-2': + case 'iso_8859-2:1987': + case 'l2': + case 'latin2': + return 'ISO-8859-2' + case 'csisolatin3': + case 'iso-8859-3': + case 'iso-ir-109': + case 'iso8859-3': + case 'iso88593': + case 'iso_8859-3': + case 'iso_8859-3:1988': + case 'l3': + case 'latin3': + return 'ISO-8859-3' + case 'csisolatin4': + case 'iso-8859-4': + case 'iso-ir-110': + case 'iso8859-4': + case 'iso88594': + case 'iso_8859-4': + case 'iso_8859-4:1988': + case 'l4': + case 'latin4': + return 'ISO-8859-4' + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso-8859-5': + case 'iso-ir-144': + case 'iso8859-5': + case 'iso88595': + case 'iso_8859-5': + case 'iso_8859-5:1988': + return 'ISO-8859-5' + case 'arabic': + case 'asmo-708': + case 'csiso88596e': + case 'csiso88596i': + case 'csisolatinarabic': + case 'ecma-114': + case 'iso-8859-6': + case 'iso-8859-6-e': + case 'iso-8859-6-i': + case 'iso-ir-127': + case 'iso8859-6': + case 'iso88596': + case 'iso_8859-6': + case 'iso_8859-6:1987': + return 'ISO-8859-6' + case 'csisolatingreek': + case 'ecma-118': + case 'elot_928': + case 'greek': + case 'greek8': + case 'iso-8859-7': + case 'iso-ir-126': + case 'iso8859-7': + case 'iso88597': + case 'iso_8859-7': + case 'iso_8859-7:1987': + case 'sun_eu_greek': + return 'ISO-8859-7' + case 'csiso88598e': + case 'csisolatinhebrew': + case 'hebrew': + case 'iso-8859-8': + case 'iso-8859-8-e': + case 'iso-ir-138': + case 'iso8859-8': + case 'iso88598': + case 'iso_8859-8': + case 'iso_8859-8:1988': + case 'visual': + return 'ISO-8859-8' + case 'csiso88598i': + case 'iso-8859-8-i': + case 'logical': + return 'ISO-8859-8-I' + case 'csisolatin6': + case 'iso-8859-10': + case 'iso-ir-157': + case 'iso8859-10': + case 'iso885910': + case 'l6': + case 'latin6': + return 'ISO-8859-10' + case 'iso-8859-13': + case 'iso8859-13': + case 'iso885913': + return 'ISO-8859-13' + case 'iso-8859-14': + case 'iso8859-14': + case 'iso885914': + return 'ISO-8859-14' + case 'csisolatin9': + case 'iso-8859-15': + case 'iso8859-15': + case 'iso885915': + case 'iso_8859-15': + case 'l9': + return 'ISO-8859-15' + case 'iso-8859-16': + return 'ISO-8859-16' + case 'cskoi8r': + case 'koi': + case 'koi8': + case 'koi8-r': + case 'koi8_r': + return 'KOI8-R' + case 'koi8-ru': + case 'koi8-u': + return 'KOI8-U' + case 'csmacintosh': + case 'mac': + case 'macintosh': + case 'x-mac-roman': + return 'macintosh' + case 'iso-8859-11': + case 'iso8859-11': + case 'iso885911': + case 'tis-620': + case 'windows-874': + return 'windows-874' + case 'cp1250': + case 'windows-1250': + case 'x-cp1250': + return 'windows-1250' + case 'cp1251': + case 'windows-1251': + case 'x-cp1251': + return 'windows-1251' + case 'ansi_x3.4-1968': + case 'ascii': + case 'cp1252': + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso-8859-1': + case 'iso-ir-100': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'iso_8859-1:1987': + case 'l1': + case 'latin1': + case 'us-ascii': + case 'windows-1252': + case 'x-cp1252': + return 'windows-1252' + case 'cp1253': + case 'windows-1253': + case 'x-cp1253': + return 'windows-1253' + case 'cp1254': + case 'csisolatin5': + case 'iso-8859-9': + case 'iso-ir-148': + case 'iso8859-9': + case 'iso88599': + case 'iso_8859-9': + case 'iso_8859-9:1989': + case 'l5': + case 'latin5': + case 'windows-1254': + case 'x-cp1254': + return 'windows-1254' + case 'cp1255': + case 'windows-1255': + case 'x-cp1255': + return 'windows-1255' + case 'cp1256': + case 'windows-1256': + case 'x-cp1256': + return 'windows-1256' + case 'cp1257': + case 'windows-1257': + case 'x-cp1257': + return 'windows-1257' + case 'cp1258': + case 'windows-1258': + case 'x-cp1258': + return 'windows-1258' + case 'x-mac-cyrillic': + case 'x-mac-ukrainian': + return 'x-mac-cyrillic' + case 'chinese': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb_2312': + case 'gb_2312-80': + case 'gbk': + case 'iso-ir-58': + case 'x-gbk': + return 'GBK' + case 'gb18030': + return 'gb18030' + case 'big5': + case 'big5-hkscs': + case 'cn-big5': + case 'csbig5': + case 'x-x-big5': + return 'Big5' + case 'cseucpkdfmtjapanese': + case 'euc-jp': + case 'x-euc-jp': + return 'EUC-JP' + case 'csiso2022jp': + case 'iso-2022-jp': + return 'ISO-2022-JP' + case 'csshiftjis': + case 'ms932': + case 'ms_kanji': + case 'shift-jis': + case 'shift_jis': + case 'sjis': + case 'windows-31j': + case 'x-sjis': + return 'Shift_JIS' + case 'cseuckr': + case 'csksc56011987': + case 'euc-kr': + case 'iso-ir-149': + case 'korean': + case 'ks_c_5601-1987': + case 'ks_c_5601-1989': + case 'ksc5601': + case 'ksc_5601': + case 'windows-949': + return 'EUC-KR' + case 'csiso2022kr': + case 'hz-gb-2312': + case 'iso-2022-cn': + case 'iso-2022-cn-ext': + case 'iso-2022-kr': + case 'replacement': + return 'replacement' + case 'unicodefffe': + case 'utf-16be': + return 'UTF-16BE' + case 'csunicode': + case 'iso-10646-ucs-2': + case 'ucs-2': + case 'unicode': + case 'unicodefeff': + case 'utf-16': + case 'utf-16le': + return 'UTF-16LE' + case 'x-user-defined': + return 'x-user-defined' + default: return 'failure' + } +} + +module.exports = { + getEncoding +} + + +/***/ }), + +/***/ 1446: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} = __nccwpck_require__(7530) +const { + kState, + kError, + kResult, + kEvents, + kAborted +} = __nccwpck_require__(9054) +const { webidl } = __nccwpck_require__(1744) +const { kEnumerableProperty } = __nccwpck_require__(3983) + +class FileReader extends EventTarget { + constructor () { + super() + + this[kState] = 'empty' + this[kResult] = null + this[kError] = null + this[kEvents] = { + loadend: null, + error: null, + abort: null, + load: null, + progress: null, + loadstart: null + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer + * @param {import('buffer').Blob} blob + */ + readAsArrayBuffer (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsArrayBuffer(blob) method, when invoked, + // must initiate a read operation for blob with ArrayBuffer. + readOperation(this, blob, 'ArrayBuffer') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsBinaryString + * @param {import('buffer').Blob} blob + */ + readAsBinaryString (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsBinaryString(blob) method, when invoked, + // must initiate a read operation for blob with BinaryString. + readOperation(this, blob, 'BinaryString') + } + + /** + * @see https://w3c.github.io/FileAPI/#readAsDataText + * @param {import('buffer').Blob} blob + * @param {string?} encoding + */ + readAsText (blob, encoding = undefined) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + if (encoding !== undefined) { + encoding = webidl.converters.DOMString(encoding) + } + + // The readAsText(blob, encoding) method, when invoked, + // must initiate a read operation for blob with Text and encoding. + readOperation(this, blob, 'Text', encoding) + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL + * @param {import('buffer').Blob} blob + */ + readAsDataURL (blob) { + webidl.brandCheck(this, FileReader) + + webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' }) + + blob = webidl.converters.Blob(blob, { strict: false }) + + // The readAsDataURL(blob) method, when invoked, must + // initiate a read operation for blob with DataURL. + readOperation(this, blob, 'DataURL') + } + + /** + * @see https://w3c.github.io/FileAPI/#dfn-abort + */ + abort () { + // 1. If this's state is "empty" or if this's state is + // "done" set this's result to null and terminate + // this algorithm. + if (this[kState] === 'empty' || this[kState] === 'done') { + this[kResult] = null + return + } + + // 2. If this's state is "loading" set this's state to + // "done" and set this's result to null. + if (this[kState] === 'loading') { + this[kState] = 'done' + this[kResult] = null + } + + // 3. If there are any tasks from this on the file reading + // task source in an affiliated task queue, then remove + // those tasks from that task queue. + this[kAborted] = true + + // 4. Terminate the algorithm for the read method being processed. + // TODO + + // 5. Fire a progress event called abort at this. + fireAProgressEvent('abort', this) + + // 6. If this's state is not "loading", fire a progress + // event called loadend at this. + if (this[kState] !== 'loading') { + fireAProgressEvent('loadend', this) + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate + */ + get readyState () { + webidl.brandCheck(this, FileReader) + + switch (this[kState]) { + case 'empty': return this.EMPTY + case 'loading': return this.LOADING + case 'done': return this.DONE + } + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-result + */ + get result () { + webidl.brandCheck(this, FileReader) + + // The result attribute’s getter, when invoked, must return + // this's result. + return this[kResult] + } + + /** + * @see https://w3c.github.io/FileAPI/#dom-filereader-error + */ + get error () { + webidl.brandCheck(this, FileReader) + + // The error attribute’s getter, when invoked, must return + // this's error. + return this[kError] + } + + get onloadend () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadend + } + + set onloadend (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadend) { + this.removeEventListener('loadend', this[kEvents].loadend) + } + + if (typeof fn === 'function') { + this[kEvents].loadend = fn + this.addEventListener('loadend', fn) + } else { + this[kEvents].loadend = null + } + } + + get onerror () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].error + } + + set onerror (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].error) { + this.removeEventListener('error', this[kEvents].error) + } + + if (typeof fn === 'function') { + this[kEvents].error = fn + this.addEventListener('error', fn) + } else { + this[kEvents].error = null + } + } + + get onloadstart () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].loadstart + } + + set onloadstart (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].loadstart) { + this.removeEventListener('loadstart', this[kEvents].loadstart) + } + + if (typeof fn === 'function') { + this[kEvents].loadstart = fn + this.addEventListener('loadstart', fn) + } else { + this[kEvents].loadstart = null + } + } + + get onprogress () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].progress + } + + set onprogress (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].progress) { + this.removeEventListener('progress', this[kEvents].progress) + } + + if (typeof fn === 'function') { + this[kEvents].progress = fn + this.addEventListener('progress', fn) + } else { + this[kEvents].progress = null + } + } + + get onload () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].load + } + + set onload (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].load) { + this.removeEventListener('load', this[kEvents].load) + } + + if (typeof fn === 'function') { + this[kEvents].load = fn + this.addEventListener('load', fn) + } else { + this[kEvents].load = null + } + } + + get onabort () { + webidl.brandCheck(this, FileReader) + + return this[kEvents].abort + } + + set onabort (fn) { + webidl.brandCheck(this, FileReader) + + if (this[kEvents].abort) { + this.removeEventListener('abort', this[kEvents].abort) + } + + if (typeof fn === 'function') { + this[kEvents].abort = fn + this.addEventListener('abort', fn) + } else { + this[kEvents].abort = null + } + } +} + +// https://w3c.github.io/FileAPI/#dom-filereader-empty +FileReader.EMPTY = FileReader.prototype.EMPTY = 0 +// https://w3c.github.io/FileAPI/#dom-filereader-loading +FileReader.LOADING = FileReader.prototype.LOADING = 1 +// https://w3c.github.io/FileAPI/#dom-filereader-done +FileReader.DONE = FileReader.prototype.DONE = 2 + +Object.defineProperties(FileReader.prototype, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors, + readAsArrayBuffer: kEnumerableProperty, + readAsBinaryString: kEnumerableProperty, + readAsText: kEnumerableProperty, + readAsDataURL: kEnumerableProperty, + abort: kEnumerableProperty, + readyState: kEnumerableProperty, + result: kEnumerableProperty, + error: kEnumerableProperty, + onloadstart: kEnumerableProperty, + onprogress: kEnumerableProperty, + onload: kEnumerableProperty, + onabort: kEnumerableProperty, + onerror: kEnumerableProperty, + onloadend: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'FileReader', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(FileReader, { + EMPTY: staticPropertyDescriptors, + LOADING: staticPropertyDescriptors, + DONE: staticPropertyDescriptors +}) + +module.exports = { + FileReader +} + + +/***/ }), + +/***/ 5504: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(1744) + +const kState = Symbol('ProgressEvent state') + +/** + * @see https://xhr.spec.whatwg.org/#progressevent + */ +class ProgressEvent extends Event { + constructor (type, eventInitDict = {}) { + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {}) + + super(type, eventInitDict) + + this[kState] = { + lengthComputable: eventInitDict.lengthComputable, + loaded: eventInitDict.loaded, + total: eventInitDict.total + } + } + + get lengthComputable () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].lengthComputable + } + + get loaded () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].loaded + } + + get total () { + webidl.brandCheck(this, ProgressEvent) + + return this[kState].total + } +} + +webidl.converters.ProgressEventInit = webidl.dictionaryConverter([ + { + key: 'lengthComputable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'loaded', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'total', + converter: webidl.converters['unsigned long long'], + defaultValue: 0 + }, + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +]) + +module.exports = { + ProgressEvent +} + + +/***/ }), + +/***/ 9054: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kState: Symbol('FileReader state'), + kResult: Symbol('FileReader result'), + kError: Symbol('FileReader error'), + kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'), + kEvents: Symbol('FileReader events'), + kAborted: Symbol('FileReader aborted') +} + + +/***/ }), + +/***/ 7530: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + kState, + kError, + kResult, + kAborted, + kLastProgressEventFired +} = __nccwpck_require__(9054) +const { ProgressEvent } = __nccwpck_require__(5504) +const { getEncoding } = __nccwpck_require__(4854) +const { DOMException } = __nccwpck_require__(1037) +const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(685) +const { types } = __nccwpck_require__(3837) +const { StringDecoder } = __nccwpck_require__(1576) +const { btoa } = __nccwpck_require__(4300) + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +/** + * @see https://w3c.github.io/FileAPI/#readOperation + * @param {import('./filereader').FileReader} fr + * @param {import('buffer').Blob} blob + * @param {string} type + * @param {string?} encodingName + */ +function readOperation (fr, blob, type, encodingName) { + // 1. If fr’s state is "loading", throw an InvalidStateError + // DOMException. + if (fr[kState] === 'loading') { + throw new DOMException('Invalid state', 'InvalidStateError') + } + + // 2. Set fr’s state to "loading". + fr[kState] = 'loading' + + // 3. Set fr’s result to null. + fr[kResult] = null + + // 4. Set fr’s error to null. + fr[kError] = null + + // 5. Let stream be the result of calling get stream on blob. + /** @type {import('stream/web').ReadableStream} */ + const stream = blob.stream() + + // 6. Let reader be the result of getting a reader from stream. + const reader = stream.getReader() + + // 7. Let bytes be an empty byte sequence. + /** @type {Uint8Array[]} */ + const bytes = [] + + // 8. Let chunkPromise be the result of reading a chunk from + // stream with reader. + let chunkPromise = reader.read() + + // 9. Let isFirstChunk be true. + let isFirstChunk = true + + // 10. In parallel, while true: + // Note: "In parallel" just means non-blocking + // Note 2: readOperation itself cannot be async as double + // reading the body would then reject the promise, instead + // of throwing an error. + ;(async () => { + while (!fr[kAborted]) { + // 1. Wait for chunkPromise to be fulfilled or rejected. + try { + const { done, value } = await chunkPromise + + // 2. If chunkPromise is fulfilled, and isFirstChunk is + // true, queue a task to fire a progress event called + // loadstart at fr. + if (isFirstChunk && !fr[kAborted]) { + queueMicrotask(() => { + fireAProgressEvent('loadstart', fr) + }) + } + + // 3. Set isFirstChunk to false. + isFirstChunk = false + + // 4. If chunkPromise is fulfilled with an object whose + // done property is false and whose value property is + // a Uint8Array object, run these steps: + if (!done && types.isUint8Array(value)) { + // 1. Let bs be the byte sequence represented by the + // Uint8Array object. + + // 2. Append bs to bytes. + bytes.push(value) + + // 3. If roughly 50ms have passed since these steps + // were last invoked, queue a task to fire a + // progress event called progress at fr. + if ( + ( + fr[kLastProgressEventFired] === undefined || + Date.now() - fr[kLastProgressEventFired] >= 50 + ) && + !fr[kAborted] + ) { + fr[kLastProgressEventFired] = Date.now() + queueMicrotask(() => { + fireAProgressEvent('progress', fr) + }) + } + + // 4. Set chunkPromise to the result of reading a + // chunk from stream with reader. + chunkPromise = reader.read() + } else if (done) { + // 5. Otherwise, if chunkPromise is fulfilled with an + // object whose done property is true, queue a task + // to run the following steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Let result be the result of package data given + // bytes, type, blob’s type, and encodingName. + try { + const result = packageData(bytes, type, blob.type, encodingName) + + // 4. Else: + + if (fr[kAborted]) { + return + } + + // 1. Set fr’s result to result. + fr[kResult] = result + + // 2. Fire a progress event called load at the fr. + fireAProgressEvent('load', fr) + } catch (error) { + // 3. If package data threw an exception error: + + // 1. Set fr’s error to error. + fr[kError] = error + + // 2. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + } + + // 5. If fr’s state is not "loading", fire a progress + // event called loadend at the fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } catch (error) { + if (fr[kAborted]) { + return + } + + // 6. Otherwise, if chunkPromise is rejected with an + // error error, queue a task to run the following + // steps and abort this algorithm: + queueMicrotask(() => { + // 1. Set fr’s state to "done". + fr[kState] = 'done' + + // 2. Set fr’s error to error. + fr[kError] = error + + // 3. Fire a progress event called error at fr. + fireAProgressEvent('error', fr) + + // 4. If fr’s state is not "loading", fire a progress + // event called loadend at fr. + if (fr[kState] !== 'loading') { + fireAProgressEvent('loadend', fr) + } + }) + + break + } + } + })() +} + +/** + * @see https://w3c.github.io/FileAPI/#fire-a-progress-event + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e The name of the event + * @param {import('./filereader').FileReader} reader + */ +function fireAProgressEvent (e, reader) { + // The progress event e does not bubble. e.bubbles must be false + // The progress event e is NOT cancelable. e.cancelable must be false + const event = new ProgressEvent(e, { + bubbles: false, + cancelable: false + }) + + reader.dispatchEvent(event) +} + +/** + * @see https://w3c.github.io/FileAPI/#blob-package-data + * @param {Uint8Array[]} bytes + * @param {string} type + * @param {string?} mimeType + * @param {string?} encodingName + */ +function packageData (bytes, type, mimeType, encodingName) { + // 1. A Blob has an associated package data algorithm, given + // bytes, a type, a optional mimeType, and a optional + // encodingName, which switches on type and runs the + // associated steps: + + switch (type) { + case 'DataURL': { + // 1. Return bytes as a DataURL [RFC2397] subject to + // the considerations below: + // * Use mimeType as part of the Data URL if it is + // available in keeping with the Data URL + // specification [RFC2397]. + // * If mimeType is not available return a Data URL + // without a media-type. [RFC2397]. + + // https://datatracker.ietf.org/doc/html/rfc2397#section-3 + // dataurl := "data:" [ mediatype ] [ ";base64" ] "," data + // mediatype := [ type "/" subtype ] *( ";" parameter ) + // data := *urlchar + // parameter := attribute "=" value + let dataURL = 'data:' + + const parsed = parseMIMEType(mimeType || 'application/octet-stream') + + if (parsed !== 'failure') { + dataURL += serializeAMimeType(parsed) + } + + dataURL += ';base64,' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + dataURL += btoa(decoder.write(chunk)) + } + + dataURL += btoa(decoder.end()) + + return dataURL + } + case 'Text': { + // 1. Let encoding be failure + let encoding = 'failure' + + // 2. If the encodingName is present, set encoding to the + // result of getting an encoding from encodingName. + if (encodingName) { + encoding = getEncoding(encodingName) + } + + // 3. If encoding is failure, and mimeType is present: + if (encoding === 'failure' && mimeType) { + // 1. Let type be the result of parse a MIME type + // given mimeType. + const type = parseMIMEType(mimeType) + + // 2. If type is not failure, set encoding to the result + // of getting an encoding from type’s parameters["charset"]. + if (type !== 'failure') { + encoding = getEncoding(type.parameters.get('charset')) + } + } + + // 4. If encoding is failure, then set encoding to UTF-8. + if (encoding === 'failure') { + encoding = 'UTF-8' + } + + // 5. Decode bytes using fallback encoding encoding, and + // return the result. + return decode(bytes, encoding) + } + case 'ArrayBuffer': { + // Return a new ArrayBuffer whose contents are bytes. + const sequence = combineByteSequences(bytes) + + return sequence.buffer + } + case 'BinaryString': { + // Return bytes as a binary string, in which every byte + // is represented by a code unit of equal value [0..255]. + let binaryString = '' + + const decoder = new StringDecoder('latin1') + + for (const chunk of bytes) { + binaryString += decoder.write(chunk) + } + + binaryString += decoder.end() + + return binaryString + } + } +} + +/** + * @see https://encoding.spec.whatwg.org/#decode + * @param {Uint8Array[]} ioQueue + * @param {string} encoding + */ +function decode (ioQueue, encoding) { + const bytes = combineByteSequences(ioQueue) + + // 1. Let BOMEncoding be the result of BOM sniffing ioQueue. + const BOMEncoding = BOMSniffing(bytes) + + let slice = 0 + + // 2. If BOMEncoding is non-null: + if (BOMEncoding !== null) { + // 1. Set encoding to BOMEncoding. + encoding = BOMEncoding + + // 2. Read three bytes from ioQueue, if BOMEncoding is + // UTF-8; otherwise read two bytes. + // (Do nothing with those bytes.) + slice = BOMEncoding === 'UTF-8' ? 3 : 2 + } + + // 3. Process a queue with an instance of encoding’s + // decoder, ioQueue, output, and "replacement". + + // 4. Return output. + + const sliced = bytes.slice(slice) + return new TextDecoder(encoding).decode(sliced) +} + +/** + * @see https://encoding.spec.whatwg.org/#bom-sniff + * @param {Uint8Array} ioQueue + */ +function BOMSniffing (ioQueue) { + // 1. Let BOM be the result of peeking 3 bytes from ioQueue, + // converted to a byte sequence. + const [a, b, c] = ioQueue + + // 2. For each of the rows in the table below, starting with + // the first one and going down, if BOM starts with the + // bytes given in the first column, then return the + // encoding given in the cell in the second column of that + // row. Otherwise, return null. + if (a === 0xEF && b === 0xBB && c === 0xBF) { + return 'UTF-8' + } else if (a === 0xFE && b === 0xFF) { + return 'UTF-16BE' + } else if (a === 0xFF && b === 0xFE) { + return 'UTF-16LE' + } + + return null +} + +/** + * @param {Uint8Array[]} sequences + */ +function combineByteSequences (sequences) { + const size = sequences.reduce((a, b) => { + return a + b.byteLength + }, 0) + + let offset = 0 + + return sequences.reduce((a, b) => { + a.set(b, offset) + offset += b.byteLength + return a + }, new Uint8Array(size)) +} + +module.exports = { + staticPropertyDescriptors, + readOperation, + fireAProgressEvent +} + + +/***/ }), + +/***/ 1892: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// We include a version number for the Dispatcher API. In case of breaking changes, +// this version number must be increased to avoid conflicts. +const globalDispatcher = Symbol.for('undici.globalDispatcher.1') +const { InvalidArgumentError } = __nccwpck_require__(8045) +const Agent = __nccwpck_require__(7890) + +if (getGlobalDispatcher() === undefined) { + setGlobalDispatcher(new Agent()) +} + +function setGlobalDispatcher (agent) { + if (!agent || typeof agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument agent must implement Agent') + } + Object.defineProperty(globalThis, globalDispatcher, { + value: agent, + writable: true, + enumerable: false, + configurable: false + }) +} + +function getGlobalDispatcher () { + return globalThis[globalDispatcher] +} + +module.exports = { + setGlobalDispatcher, + getGlobalDispatcher +} + + +/***/ }), + +/***/ 6930: +/***/ ((module) => { + +"use strict"; + + +module.exports = class DecoratorHandler { + constructor (handler) { + this.handler = handler + } + + onConnect (...args) { + return this.handler.onConnect(...args) + } + + onError (...args) { + return this.handler.onError(...args) + } + + onUpgrade (...args) { + return this.handler.onUpgrade(...args) + } + + onHeaders (...args) { + return this.handler.onHeaders(...args) + } + + onData (...args) { + return this.handler.onData(...args) + } + + onComplete (...args) { + return this.handler.onComplete(...args) + } + + onBodySent (...args) { + return this.handler.onBodySent(...args) + } +} + + +/***/ }), + +/***/ 2860: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const util = __nccwpck_require__(3983) +const { kBodyUsed } = __nccwpck_require__(2785) +const assert = __nccwpck_require__(9491) +const { InvalidArgumentError } = __nccwpck_require__(8045) +const EE = __nccwpck_require__(2361) + +const redirectableStatusCodes = [300, 301, 302, 303, 307, 308] + +const kBody = Symbol('body') + +class BodyAsyncIterable { + constructor (body) { + this[kBody] = body + this[kBodyUsed] = false + } + + async * [Symbol.asyncIterator] () { + assert(!this[kBodyUsed], 'disturbed') + this[kBodyUsed] = true + yield * this[kBody] + } +} + +class RedirectHandler { + constructor (dispatch, maxRedirections, opts, handler) { + if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) { + throw new InvalidArgumentError('maxRedirections must be a positive number') + } + + util.validateHandler(handler, opts.method, opts.upgrade) + + this.dispatch = dispatch + this.location = null + this.abort = null + this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy + this.maxRedirections = maxRedirections + this.handler = handler + this.history = [] + + if (util.isStream(this.opts.body)) { + // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp + // so that it can be dispatched again? + // TODO (fix): Do we need 100-expect support to provide a way to do this properly? + if (util.bodyLength(this.opts.body) === 0) { + this.opts.body + .on('data', function () { + assert(false) + }) + } + + if (typeof this.opts.body.readableDidRead !== 'boolean') { + this.opts.body[kBodyUsed] = false + EE.prototype.on.call(this.opts.body, 'data', function () { + this[kBodyUsed] = true + }) + } + } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') { + // TODO (fix): We can't access ReadableStream internal state + // to determine whether or not it has been disturbed. This is just + // a workaround. + this.opts.body = new BodyAsyncIterable(this.opts.body) + } else if ( + this.opts.body && + typeof this.opts.body !== 'string' && + !ArrayBuffer.isView(this.opts.body) && + util.isIterable(this.opts.body) + ) { + // TODO: Should we allow re-using iterable if !this.opts.idempotent + // or through some other flag? + this.opts.body = new BodyAsyncIterable(this.opts.body) + } + } + + onConnect (abort) { + this.abort = abort + this.handler.onConnect(abort, { history: this.history }) + } + + onUpgrade (statusCode, headers, socket) { + this.handler.onUpgrade(statusCode, headers, socket) + } + + onError (error) { + this.handler.onError(error) + } + + onHeaders (statusCode, headers, resume, statusText) { + this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body) + ? null + : parseLocation(statusCode, headers) + + if (this.opts.origin) { + this.history.push(new URL(this.opts.path, this.opts.origin)) + } + + if (!this.location) { + return this.handler.onHeaders(statusCode, headers, resume, statusText) + } + + const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin))) + const path = search ? `${pathname}${search}` : pathname + + // Remove headers referring to the original URL. + // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers. + // https://tools.ietf.org/html/rfc7231#section-6.4 + 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 + + // https://tools.ietf.org/html/rfc7231#section-6.4.4 + // In case of HTTP 303, always replace method to be either HEAD or GET + if (statusCode === 303 && this.opts.method !== 'HEAD') { + this.opts.method = 'GET' + this.opts.body = null + } + } + + onData (chunk) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response bodies. + + Redirection is used to serve the requested resource from another URL, so it is assumes that + no body is generated (and thus can be ignored). Even though generating a body is not prohibited. + + For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually + (which means it's optional and not mandated) contain just an hyperlink to the value of + the Location response header, so the body can be ignored safely. + + For status 300, which is "Multiple Choices", the spec mentions both generating a Location + response header AND a response body with the other possible location to follow. + Since the spec explicitily chooses not to specify a format for such body and leave it to + servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it. + */ + } else { + return this.handler.onData(chunk) + } + } + + onComplete (trailers) { + if (this.location) { + /* + https://tools.ietf.org/html/rfc7231#section-6.4 + + TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections + and neither are useful if present. + + See comment on onData method above for more detailed informations. + */ + + this.location = null + this.abort = null + + this.dispatch(this.opts, this) + } else { + this.handler.onComplete(trailers) + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) { + this.handler.onBodySent(chunk) + } + } +} + +function parseLocation (statusCode, headers) { + if (redirectableStatusCodes.indexOf(statusCode) === -1) { + return null + } + + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toString().toLowerCase() === 'location') { + return headers[i + 1] + } + } +} + +// https://tools.ietf.org/html/rfc7231#section-6.4.4 +function shouldRemoveHeader (header, removeContent, unknownOrigin) { + return ( + (header.length === 4 && header.toString().toLowerCase() === 'host') || + (removeContent && header.toString().toLowerCase().indexOf('content-') === 0) || + (unknownOrigin && header.length === 13 && header.toString().toLowerCase() === 'authorization') || + (unknownOrigin && header.length === 6 && header.toString().toLowerCase() === 'cookie') + ) +} + +// https://tools.ietf.org/html/rfc7231#section-6.4 +function cleanRequestHeaders (headers, removeContent, unknownOrigin) { + const ret = [] + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) { + ret.push(headers[i], headers[i + 1]) + } + } + } else if (headers && typeof headers === 'object') { + for (const key of Object.keys(headers)) { + if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) { + ret.push(key, headers[key]) + } + } + } else { + assert(headers == null, 'headers must be an object or an array') + } + return ret +} + +module.exports = RedirectHandler + + +/***/ }), + +/***/ 2286: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const assert = __nccwpck_require__(9491) + +const { kRetryHandlerDefaultRetry } = __nccwpck_require__(2785) +const { RequestRetryError } = __nccwpck_require__(8045) +const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(3983) + +function calculateRetryAfterHeader (retryAfter) { + const current = Date.now() + const diff = new Date(retryAfter).getTime() - current + + return diff +} + +class RetryHandler { + constructor (opts, handlers) { + const { retryOptions, ...dispatchOpts } = opts + const { + // Retry scoped + retry: retryFn, + maxRetries, + maxTimeout, + minTimeout, + timeoutFactor, + // Response scoped + methods, + errorCodes, + retryAfter, + statusCodes + } = retryOptions ?? {} + + this.dispatch = handlers.dispatch + this.handler = handlers.handler + this.opts = dispatchOpts + this.abort = null + this.aborted = false + this.retryOpts = { + retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry], + retryAfter: retryAfter ?? true, + maxTimeout: maxTimeout ?? 30 * 1000, // 30s, + timeout: minTimeout ?? 500, // .5s + timeoutFactor: timeoutFactor ?? 2, + maxRetries: maxRetries ?? 5, + // What errors we should retry + methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'], + // Indicates which errors to retry + statusCodes: statusCodes ?? [500, 502, 503, 504, 429], + // List of errors to retry + errorCodes: errorCodes ?? [ + 'ECONNRESET', + 'ECONNREFUSED', + 'ENOTFOUND', + 'ENETDOWN', + 'ENETUNREACH', + 'EHOSTDOWN', + 'EHOSTUNREACH', + 'EPIPE' + ] + } + + this.retryCount = 0 + this.start = 0 + this.end = null + this.etag = null + this.resume = null + + // Handle possible onConnect duplication + this.handler.onConnect(reason => { + this.aborted = true + if (this.abort) { + this.abort(reason) + } else { + this.reason = reason + } + }) + } + + onRequestSent () { + if (this.handler.onRequestSent) { + this.handler.onRequestSent() + } + } + + onUpgrade (statusCode, headers, socket) { + if (this.handler.onUpgrade) { + this.handler.onUpgrade(statusCode, headers, socket) + } + } + + onConnect (abort) { + if (this.aborted) { + abort(this.reason) + } else { + this.abort = abort + } + } + + onBodySent (chunk) { + if (this.handler.onBodySent) return this.handler.onBodySent(chunk) + } + + static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) { + const { statusCode, code, headers } = err + const { method, retryOptions } = opts + const { + maxRetries, + timeout, + maxTimeout, + timeoutFactor, + statusCodes, + errorCodes, + methods + } = retryOptions + let { counter, currentTimeout } = state + + currentTimeout = + currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout + + // Any code that is not a Undici's originated and allowed to retry + if ( + code && + code !== 'UND_ERR_REQ_RETRY' && + code !== 'UND_ERR_SOCKET' && + !errorCodes.includes(code) + ) { + cb(err) + return + } + + // If a set of method are provided and the current method is not in the list + if (Array.isArray(methods) && !methods.includes(method)) { + cb(err) + return + } + + // If a set of status code are provided and the current status code is not in the list + if ( + statusCode != null && + Array.isArray(statusCodes) && + !statusCodes.includes(statusCode) + ) { + cb(err) + return + } + + // If we reached the max number of retries + if (counter > maxRetries) { + cb(err) + return + } + + let retryAfterHeader = headers != null && headers['retry-after'] + if (retryAfterHeader) { + retryAfterHeader = Number(retryAfterHeader) + retryAfterHeader = isNaN(retryAfterHeader) + ? calculateRetryAfterHeader(retryAfterHeader) + : retryAfterHeader * 1e3 // Retry-After is in seconds + } + + const retryTimeout = + retryAfterHeader > 0 + ? Math.min(retryAfterHeader, maxTimeout) + : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout) + + state.currentTimeout = retryTimeout + + setTimeout(() => cb(null), retryTimeout) + } + + onHeaders (statusCode, rawHeaders, resume, statusMessage) { + const headers = parseHeaders(rawHeaders) + + this.retryCount += 1 + + if (statusCode >= 300) { + this.abort( + new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Checkpoint for resume from where we left it + if (this.resume != null) { + this.resume = null + + if (statusCode !== 206) { + return true + } + + const contentRange = parseRangeHeader(headers['content-range']) + // If no content range + if (!contentRange) { + this.abort( + new RequestRetryError('Content-Range mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + // Let's start with a weak etag check + if (this.etag != null && this.etag !== headers.etag) { + this.abort( + new RequestRetryError('ETag mismatch', statusCode, { + headers, + count: this.retryCount + }) + ) + return false + } + + const { start, size, end = size } = contentRange + + assert(this.start === start, 'content-range mismatch') + assert(this.end == null || this.end === end, 'content-range mismatch') + + this.resume = resume + return true + } + + if (this.end == null) { + if (statusCode === 206) { + // First time we receive 206 + const range = parseRangeHeader(headers['content-range']) + + if (range == null) { + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const { start, size, end = size } = range + + assert( + start != null && Number.isFinite(start) && this.start !== start, + 'content-range mismatch' + ) + assert(Number.isFinite(start)) + assert( + end != null && Number.isFinite(end) && this.end !== end, + 'invalid content-length' + ) + + this.start = start + this.end = end + } + + // We make our best to checkpoint the body for further range headers + if (this.end == null) { + const contentLength = headers['content-length'] + this.end = contentLength != null ? Number(contentLength) : null + } + + assert(Number.isFinite(this.start)) + assert( + this.end == null || Number.isFinite(this.end), + 'invalid content-length' + ) + + this.resume = resume + this.etag = headers.etag != null ? headers.etag : null + + return this.handler.onHeaders( + statusCode, + rawHeaders, + resume, + statusMessage + ) + } + + const err = new RequestRetryError('Request failed', statusCode, { + headers, + count: this.retryCount + }) + + this.abort(err) + + return false + } + + onData (chunk) { + this.start += chunk.length + + return this.handler.onData(chunk) + } + + onComplete (rawTrailers) { + this.retryCount = 0 + return this.handler.onComplete(rawTrailers) + } + + onError (err) { + if (this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + this.retryOpts.retry( + err, + { + state: { counter: this.retryCount++, currentTimeout: this.retryAfter }, + opts: { retryOptions: this.retryOpts, ...this.opts } + }, + onRetry.bind(this) + ) + + function onRetry (err) { + if (err != null || this.aborted || isDisturbed(this.opts.body)) { + return this.handler.onError(err) + } + + if (this.start !== 0) { + this.opts = { + ...this.opts, + headers: { + ...this.opts.headers, + range: `bytes=${this.start}-${this.end ?? ''}` + } + } + } + + try { + this.dispatch(this.opts, this) + } catch (err) { + this.handler.onError(err) + } + } + } +} + +module.exports = RetryHandler + + +/***/ }), + +/***/ 8861: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const RedirectHandler = __nccwpck_require__(2860) + +function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) { + return (dispatch) => { + return function Intercept (opts, handler) { + const { maxRedirections = defaultMaxRedirections } = opts + + if (!maxRedirections) { + return dispatch(opts, handler) + } + + const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler) + opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting. + return dispatch(opts, redirectHandler) + } + } +} + +module.exports = createRedirectInterceptor + + +/***/ }), + +/***/ 953: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0; +const utils_1 = __nccwpck_require__(1891); +// C headers +var ERROR; +(function (ERROR) { + ERROR[ERROR["OK"] = 0] = "OK"; + ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL"; + ERROR[ERROR["STRICT"] = 2] = "STRICT"; + ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED"; + ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH"; + ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION"; + ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD"; + ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL"; + ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT"; + ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION"; + ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN"; + ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH"; + ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE"; + ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS"; + ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE"; + ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING"; + ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN"; + ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE"; + ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE"; + ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER"; + ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE"; + ERROR[ERROR["PAUSED"] = 21] = "PAUSED"; + ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE"; + ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE"; + ERROR[ERROR["USER"] = 24] = "USER"; +})(ERROR = exports.ERROR || (exports.ERROR = {})); +var TYPE; +(function (TYPE) { + TYPE[TYPE["BOTH"] = 0] = "BOTH"; + TYPE[TYPE["REQUEST"] = 1] = "REQUEST"; + TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE"; +})(TYPE = exports.TYPE || (exports.TYPE = {})); +var FLAGS; +(function (FLAGS) { + FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE"; + FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE"; + FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE"; + FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED"; + FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE"; + FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH"; + FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY"; + FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING"; + // 1 << 8 is unused + FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING"; +})(FLAGS = exports.FLAGS || (exports.FLAGS = {})); +var LENIENT_FLAGS; +(function (LENIENT_FLAGS) { + LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS"; + LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH"; + LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE"; +})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {})); +var METHODS; +(function (METHODS) { + METHODS[METHODS["DELETE"] = 0] = "DELETE"; + METHODS[METHODS["GET"] = 1] = "GET"; + METHODS[METHODS["HEAD"] = 2] = "HEAD"; + METHODS[METHODS["POST"] = 3] = "POST"; + METHODS[METHODS["PUT"] = 4] = "PUT"; + /* pathological */ + METHODS[METHODS["CONNECT"] = 5] = "CONNECT"; + METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS"; + METHODS[METHODS["TRACE"] = 7] = "TRACE"; + /* WebDAV */ + METHODS[METHODS["COPY"] = 8] = "COPY"; + METHODS[METHODS["LOCK"] = 9] = "LOCK"; + METHODS[METHODS["MKCOL"] = 10] = "MKCOL"; + METHODS[METHODS["MOVE"] = 11] = "MOVE"; + METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND"; + METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH"; + METHODS[METHODS["SEARCH"] = 14] = "SEARCH"; + METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK"; + METHODS[METHODS["BIND"] = 16] = "BIND"; + METHODS[METHODS["REBIND"] = 17] = "REBIND"; + METHODS[METHODS["UNBIND"] = 18] = "UNBIND"; + METHODS[METHODS["ACL"] = 19] = "ACL"; + /* subversion */ + METHODS[METHODS["REPORT"] = 20] = "REPORT"; + METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY"; + METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT"; + METHODS[METHODS["MERGE"] = 23] = "MERGE"; + /* upnp */ + METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH"; + METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY"; + METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE"; + METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE"; + /* RFC-5789 */ + METHODS[METHODS["PATCH"] = 28] = "PATCH"; + METHODS[METHODS["PURGE"] = 29] = "PURGE"; + /* CalDAV */ + METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR"; + /* RFC-2068, section 19.6.1.2 */ + METHODS[METHODS["LINK"] = 31] = "LINK"; + METHODS[METHODS["UNLINK"] = 32] = "UNLINK"; + /* icecast */ + METHODS[METHODS["SOURCE"] = 33] = "SOURCE"; + /* RFC-7540, section 11.6 */ + METHODS[METHODS["PRI"] = 34] = "PRI"; + /* RFC-2326 RTSP */ + METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE"; + METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE"; + METHODS[METHODS["SETUP"] = 37] = "SETUP"; + METHODS[METHODS["PLAY"] = 38] = "PLAY"; + METHODS[METHODS["PAUSE"] = 39] = "PAUSE"; + METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN"; + METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER"; + METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER"; + METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT"; + METHODS[METHODS["RECORD"] = 44] = "RECORD"; + /* RAOP */ + METHODS[METHODS["FLUSH"] = 45] = "FLUSH"; +})(METHODS = exports.METHODS || (exports.METHODS = {})); +exports.METHODS_HTTP = [ + METHODS.DELETE, + METHODS.GET, + METHODS.HEAD, + METHODS.POST, + METHODS.PUT, + METHODS.CONNECT, + METHODS.OPTIONS, + METHODS.TRACE, + METHODS.COPY, + METHODS.LOCK, + METHODS.MKCOL, + METHODS.MOVE, + METHODS.PROPFIND, + METHODS.PROPPATCH, + METHODS.SEARCH, + METHODS.UNLOCK, + METHODS.BIND, + METHODS.REBIND, + METHODS.UNBIND, + METHODS.ACL, + METHODS.REPORT, + METHODS.MKACTIVITY, + METHODS.CHECKOUT, + METHODS.MERGE, + METHODS['M-SEARCH'], + METHODS.NOTIFY, + METHODS.SUBSCRIBE, + METHODS.UNSUBSCRIBE, + METHODS.PATCH, + METHODS.PURGE, + METHODS.MKCALENDAR, + METHODS.LINK, + METHODS.UNLINK, + METHODS.PRI, + // TODO(indutny): should we allow it with HTTP? + METHODS.SOURCE, +]; +exports.METHODS_ICE = [ + METHODS.SOURCE, +]; +exports.METHODS_RTSP = [ + METHODS.OPTIONS, + METHODS.DESCRIBE, + METHODS.ANNOUNCE, + METHODS.SETUP, + METHODS.PLAY, + METHODS.PAUSE, + METHODS.TEARDOWN, + METHODS.GET_PARAMETER, + METHODS.SET_PARAMETER, + METHODS.REDIRECT, + METHODS.RECORD, + METHODS.FLUSH, + // For AirPlay + METHODS.GET, + METHODS.POST, +]; +exports.METHOD_MAP = utils_1.enumToMap(METHODS); +exports.H_METHOD_MAP = {}; +Object.keys(exports.METHOD_MAP).forEach((key) => { + if (/^H/.test(key)) { + exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key]; + } +}); +var FINISH; +(function (FINISH) { + FINISH[FINISH["SAFE"] = 0] = "SAFE"; + FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB"; + FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE"; +})(FINISH = exports.FINISH || (exports.FINISH = {})); +exports.ALPHA = []; +for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) { + // Upper case + exports.ALPHA.push(String.fromCharCode(i)); + // Lower case + exports.ALPHA.push(String.fromCharCode(i + 0x20)); +} +exports.NUM_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, +}; +exports.HEX_MAP = { + 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, + 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, + A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF, + a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf, +}; +exports.NUM = [ + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', +]; +exports.ALPHANUM = exports.ALPHA.concat(exports.NUM); +exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')']; +exports.USERINFO_CHARS = exports.ALPHANUM + .concat(exports.MARK) + .concat(['%', ';', ':', '&', '=', '+', '$', ',']); +// TODO(indutny): use RFC +exports.STRICT_URL_CHAR = [ + '!', '"', '$', '%', '&', '\'', + '(', ')', '*', '+', ',', '-', '.', '/', + ':', ';', '<', '=', '>', + '@', '[', '\\', ']', '^', '_', + '`', + '{', '|', '}', '~', +].concat(exports.ALPHANUM); +exports.URL_CHAR = exports.STRICT_URL_CHAR + .concat(['\t', '\f']); +// All characters with 0x80 bit set to 1 +for (let i = 0x80; i <= 0xff; i++) { + exports.URL_CHAR.push(i); +} +exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']); +/* Tokens as defined by rfc 2616. Also lowercases them. + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + */ +exports.STRICT_TOKEN = [ + '!', '#', '$', '%', '&', '\'', + '*', '+', '-', '.', + '^', '_', '`', + '|', '~', +].concat(exports.ALPHANUM); +exports.TOKEN = exports.STRICT_TOKEN.concat([' ']); +/* + * Verify that a char is a valid visible (printable) US-ASCII + * character or %x80-FF + */ +exports.HEADER_CHARS = ['\t']; +for (let i = 32; i <= 255; i++) { + if (i !== 127) { + exports.HEADER_CHARS.push(i); + } +} +// ',' = \x44 +exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44); +exports.MAJOR = exports.NUM_MAP; +exports.MINOR = exports.MAJOR; +var HEADER_STATE; +(function (HEADER_STATE) { + HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL"; + HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION"; + HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING"; + HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE"; + HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE"; + HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE"; + HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE"; + HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED"; +})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {})); +exports.SPECIAL_HEADERS = { + 'connection': HEADER_STATE.CONNECTION, + 'content-length': HEADER_STATE.CONTENT_LENGTH, + 'proxy-connection': HEADER_STATE.CONNECTION, + 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING, + 'upgrade': HEADER_STATE.UPGRADE, +}; +//# sourceMappingURL=constants.js.map + +/***/ }), + +/***/ 1145: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCsLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC1kAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=' + + +/***/ }), + +/***/ 5627: +/***/ ((module) => { + +module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==' + + +/***/ }), + +/***/ 1891: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.enumToMap = void 0; +function enumToMap(obj) { + const res = {}; + Object.keys(obj).forEach((key) => { + const value = obj[key]; + if (typeof value === 'number') { + res[key] = value; + } + }); + return res; +} +exports.enumToMap = enumToMap; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 6771: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kClients } = __nccwpck_require__(2785) +const Agent = __nccwpck_require__(7890) +const { + kAgent, + kMockAgentSet, + kMockAgentGet, + kDispatches, + kIsMockActive, + kNetConnect, + kGetNetConnect, + kOptions, + kFactory +} = __nccwpck_require__(4347) +const MockClient = __nccwpck_require__(8687) +const MockPool = __nccwpck_require__(6193) +const { matchValue, buildMockOptions } = __nccwpck_require__(9323) +const { InvalidArgumentError, UndiciError } = __nccwpck_require__(8045) +const Dispatcher = __nccwpck_require__(412) +const Pluralizer = __nccwpck_require__(8891) +const PendingInterceptorsFormatter = __nccwpck_require__(6823) + +class FakeWeakRef { + constructor (value) { + this.value = value + } + + deref () { + return this.value + } +} + +class MockAgent extends Dispatcher { + constructor (opts) { + super(opts) + + this[kNetConnect] = true + this[kIsMockActive] = true + + // Instantiate Agent and encapsulate + if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + const agent = opts && opts.agent ? opts.agent : new Agent(opts) + this[kAgent] = agent + + this[kClients] = agent[kClients] + this[kOptions] = buildMockOptions(opts) + } + + get (origin) { + let dispatcher = this[kMockAgentGet](origin) + + if (!dispatcher) { + dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + } + return dispatcher + } + + dispatch (opts, handler) { + // Call MockAgent.get to perform additional setup before dispatching as normal + this.get(opts.origin) + return this[kAgent].dispatch(opts, handler) + } + + async close () { + await this[kAgent].close() + this[kClients].clear() + } + + deactivate () { + this[kIsMockActive] = false + } + + activate () { + this[kIsMockActive] = true + } + + enableNetConnect (matcher) { + if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) { + if (Array.isArray(this[kNetConnect])) { + this[kNetConnect].push(matcher) + } else { + this[kNetConnect] = [matcher] + } + } else if (typeof matcher === 'undefined') { + this[kNetConnect] = true + } else { + throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.') + } + } + + disableNetConnect () { + this[kNetConnect] = false + } + + // This is required to bypass issues caused by using global symbols - see: + // https://github.com/nodejs/undici/issues/1447 + get isMockActive () { + return this[kIsMockActive] + } + + [kMockAgentSet] (origin, dispatcher) { + this[kClients].set(origin, new FakeWeakRef(dispatcher)) + } + + [kFactory] (origin) { + const mockOptions = Object.assign({ agent: this }, this[kOptions]) + return this[kOptions] && this[kOptions].connections === 1 + ? new MockClient(origin, mockOptions) + : new MockPool(origin, mockOptions) + } + + [kMockAgentGet] (origin) { + // First check if we can immediately find it + const ref = this[kClients].get(origin) + if (ref) { + return ref.deref() + } + + // If the origin is not a string create a dummy parent pool and return to user + if (typeof origin !== 'string') { + const dispatcher = this[kFactory]('http://localhost:9999') + this[kMockAgentSet](origin, dispatcher) + return dispatcher + } + + // If we match, create a pool and assign the same dispatches + for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) { + const nonExplicitDispatcher = nonExplicitRef.deref() + if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) { + const dispatcher = this[kFactory](origin) + this[kMockAgentSet](origin, dispatcher) + dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches] + return dispatcher + } + } + } + + [kGetNetConnect] () { + return this[kNetConnect] + } + + pendingInterceptors () { + const mockAgentClients = this[kClients] + + return Array.from(mockAgentClients.entries()) + .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin }))) + .filter(({ pending }) => pending) + } + + assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) { + const pending = this.pendingInterceptors() + + if (pending.length === 0) { + return + } + + const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length) + + throw new UndiciError(` +${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending: + +${pendingInterceptorsFormatter.format(pending)} +`.trim()) + } +} + +module.exports = MockAgent + + +/***/ }), + +/***/ 8687: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(3837) +const Client = __nccwpck_require__(3598) +const { buildMockDispatch } = __nccwpck_require__(9323) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(4347) +const { MockInterceptor } = __nccwpck_require__(410) +const Symbols = __nccwpck_require__(2785) +const { InvalidArgumentError } = __nccwpck_require__(8045) + +/** + * MockClient provides an API that extends the Client to influence the mockDispatches. + */ +class MockClient extends Client { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockClient + + +/***/ }), + +/***/ 888: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { UndiciError } = __nccwpck_require__(8045) + +class MockNotMatchedError extends UndiciError { + constructor (message) { + super(message) + Error.captureStackTrace(this, MockNotMatchedError) + this.name = 'MockNotMatchedError' + this.message = message || 'The request does not match any registered mock dispatches' + this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED' + } +} + +module.exports = { + MockNotMatchedError +} + + +/***/ }), + +/***/ 410: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(9323) +const { + kDispatches, + kDispatchKey, + kDefaultHeaders, + kDefaultTrailers, + kContentLength, + kMockDispatch +} = __nccwpck_require__(4347) +const { InvalidArgumentError } = __nccwpck_require__(8045) +const { buildURL } = __nccwpck_require__(3983) + +/** + * Defines the scope API for an interceptor reply + */ +class MockScope { + constructor (mockDispatch) { + this[kMockDispatch] = mockDispatch + } + + /** + * Delay a reply by a set amount in ms. + */ + delay (waitInMs) { + if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) { + throw new InvalidArgumentError('waitInMs must be a valid integer > 0') + } + + this[kMockDispatch].delay = waitInMs + return this + } + + /** + * For a defined reply, never mark as consumed. + */ + persist () { + this[kMockDispatch].persist = true + return this + } + + /** + * Allow one to define a reply for a set amount of matching requests. + */ + times (repeatTimes) { + if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) { + throw new InvalidArgumentError('repeatTimes must be a valid integer > 0') + } + + this[kMockDispatch].times = repeatTimes + return this + } +} + +/** + * Defines an interceptor for a Mock + */ +class MockInterceptor { + constructor (opts, mockDispatches) { + if (typeof opts !== 'object') { + throw new InvalidArgumentError('opts must be an object') + } + if (typeof opts.path === 'undefined') { + throw new InvalidArgumentError('opts.path must be defined') + } + if (typeof opts.method === 'undefined') { + opts.method = 'GET' + } + // See https://github.com/nodejs/undici/issues/1245 + // As per RFC 3986, clients are not supposed to send URI + // fragments to servers when they retrieve a document, + if (typeof opts.path === 'string') { + if (opts.query) { + opts.path = buildURL(opts.path, opts.query) + } else { + // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811 + const parsedURL = new URL(opts.path, 'data://') + opts.path = parsedURL.pathname + parsedURL.search + } + } + if (typeof opts.method === 'string') { + opts.method = opts.method.toUpperCase() + } + + this[kDispatchKey] = buildKey(opts) + this[kDispatches] = mockDispatches + this[kDefaultHeaders] = {} + this[kDefaultTrailers] = {} + this[kContentLength] = false + } + + createMockScopeDispatchData (statusCode, data, responseOptions = {}) { + const responseData = getResponseData(data) + const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {} + const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers } + const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers } + + return { statusCode, data, headers, trailers } + } + + validateReplyParameters (statusCode, data, responseOptions) { + if (typeof statusCode === 'undefined') { + throw new InvalidArgumentError('statusCode must be defined') + } + if (typeof data === 'undefined') { + throw new InvalidArgumentError('data must be defined') + } + if (typeof responseOptions !== 'object') { + throw new InvalidArgumentError('responseOptions must be an object') + } + } + + /** + * Mock an undici request with a defined reply. + */ + reply (replyData) { + // Values of reply aren't available right now as they + // can only be available when the reply callback is invoked. + if (typeof replyData === 'function') { + // We'll first wrap the provided callback in another function, + // this function will properly resolve the data from the callback + // when invoked. + const wrappedDefaultsCallback = (opts) => { + // Our reply options callback contains the parameter for statusCode, data and options. + const resolvedData = replyData(opts) + + // Check if it is in the right format + if (typeof resolvedData !== 'object') { + throw new InvalidArgumentError('reply options callback must return an object') + } + + const { statusCode, data = '', responseOptions = {} } = resolvedData + this.validateReplyParameters(statusCode, data, responseOptions) + // Since the values can be obtained immediately we return them + // from this higher order function that will be resolved later. + return { + ...this.createMockScopeDispatchData(statusCode, data, responseOptions) + } + } + + // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data. + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback) + return new MockScope(newMockDispatch) + } + + // We can have either one or three parameters, if we get here, + // we should have 1-3 parameters. So we spread the arguments of + // this function to obtain the parameters, since replyData will always + // just be the statusCode. + const [statusCode, data = '', responseOptions = {}] = [...arguments] + this.validateReplyParameters(statusCode, data, responseOptions) + + // Send in-already provided data like usual + const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions) + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData) + return new MockScope(newMockDispatch) + } + + /** + * Mock an undici request with a defined error. + */ + replyWithError (error) { + if (typeof error === 'undefined') { + throw new InvalidArgumentError('error must be defined') + } + + const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error }) + return new MockScope(newMockDispatch) + } + + /** + * Set default reply headers on the interceptor for subsequent replies + */ + defaultReplyHeaders (headers) { + if (typeof headers === 'undefined') { + throw new InvalidArgumentError('headers must be defined') + } + + this[kDefaultHeaders] = headers + return this + } + + /** + * Set default reply trailers on the interceptor for subsequent replies + */ + defaultReplyTrailers (trailers) { + if (typeof trailers === 'undefined') { + throw new InvalidArgumentError('trailers must be defined') + } + + this[kDefaultTrailers] = trailers + return this + } + + /** + * Set reply content length header for replies on the interceptor + */ + replyContentLength () { + this[kContentLength] = true + return this + } +} + +module.exports.MockInterceptor = MockInterceptor +module.exports.MockScope = MockScope + + +/***/ }), + +/***/ 6193: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { promisify } = __nccwpck_require__(3837) +const Pool = __nccwpck_require__(4634) +const { buildMockDispatch } = __nccwpck_require__(9323) +const { + kDispatches, + kMockAgent, + kClose, + kOriginalClose, + kOrigin, + kOriginalDispatch, + kConnected +} = __nccwpck_require__(4347) +const { MockInterceptor } = __nccwpck_require__(410) +const Symbols = __nccwpck_require__(2785) +const { InvalidArgumentError } = __nccwpck_require__(8045) + +/** + * MockPool provides an API that extends the Pool to influence the mockDispatches. + */ +class MockPool extends Pool { + constructor (origin, opts) { + super(origin, opts) + + if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') { + throw new InvalidArgumentError('Argument opts.agent must implement Agent') + } + + this[kMockAgent] = opts.agent + this[kOrigin] = origin + this[kDispatches] = [] + this[kConnected] = 1 + this[kOriginalDispatch] = this.dispatch + this[kOriginalClose] = this.close.bind(this) + + this.dispatch = buildMockDispatch.call(this) + this.close = this[kClose] + } + + get [Symbols.kConnected] () { + return this[kConnected] + } + + /** + * Sets up the base interceptor for mocking replies from undici. + */ + intercept (opts) { + return new MockInterceptor(opts, this[kDispatches]) + } + + async [kClose] () { + await promisify(this[kOriginalClose])() + this[kConnected] = 0 + this[kMockAgent][Symbols.kClients].delete(this[kOrigin]) + } +} + +module.exports = MockPool + + +/***/ }), + +/***/ 4347: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kAgent: Symbol('agent'), + kOptions: Symbol('options'), + kFactory: Symbol('factory'), + kDispatches: Symbol('dispatches'), + kDispatchKey: Symbol('dispatch key'), + kDefaultHeaders: Symbol('default headers'), + kDefaultTrailers: Symbol('default trailers'), + kContentLength: Symbol('content length'), + kMockAgent: Symbol('mock agent'), + kMockAgentSet: Symbol('mock agent set'), + kMockAgentGet: Symbol('mock agent get'), + kMockDispatch: Symbol('mock dispatch'), + kClose: Symbol('close'), + kOriginalClose: Symbol('original agent close'), + kOrigin: Symbol('origin'), + kIsMockActive: Symbol('is mock active'), + kNetConnect: Symbol('net connect'), + kGetNetConnect: Symbol('get net connect'), + kConnected: Symbol('connected') +} + + +/***/ }), + +/***/ 9323: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { MockNotMatchedError } = __nccwpck_require__(888) +const { + kDispatches, + kMockAgent, + kOriginalDispatch, + kOrigin, + kGetNetConnect +} = __nccwpck_require__(4347) +const { buildURL, nop } = __nccwpck_require__(3983) +const { STATUS_CODES } = __nccwpck_require__(3685) +const { + types: { + isPromise + } +} = __nccwpck_require__(3837) + +function matchValue (match, value) { + if (typeof match === 'string') { + return match === value + } + if (match instanceof RegExp) { + return match.test(value) + } + if (typeof match === 'function') { + return match(value) === true + } + return false +} + +function lowerCaseEntries (headers) { + return Object.fromEntries( + Object.entries(headers).map(([headerName, headerValue]) => { + return [headerName.toLocaleLowerCase(), headerValue] + }) + ) +} + +/** + * @param {import('../../index').Headers|string[]|Record} headers + * @param {string} key + */ +function getHeaderByName (headers, key) { + if (Array.isArray(headers)) { + for (let i = 0; i < headers.length; i += 2) { + if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) { + return headers[i + 1] + } + } + + return undefined + } else if (typeof headers.get === 'function') { + return headers.get(key) + } else { + return lowerCaseEntries(headers)[key.toLocaleLowerCase()] + } +} + +/** @param {string[]} headers */ +function buildHeadersFromArray (headers) { // fetch HeadersList + const clone = headers.slice() + const entries = [] + for (let index = 0; index < clone.length; index += 2) { + entries.push([clone[index], clone[index + 1]]) + } + return Object.fromEntries(entries) +} + +function matchHeaders (mockDispatch, headers) { + if (typeof mockDispatch.headers === 'function') { + if (Array.isArray(headers)) { // fetch HeadersList + headers = buildHeadersFromArray(headers) + } + return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {}) + } + if (typeof mockDispatch.headers === 'undefined') { + return true + } + if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') { + return false + } + + for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) { + const headerValue = getHeaderByName(headers, matchHeaderName) + + if (!matchValue(matchHeaderValue, headerValue)) { + return false + } + } + return true +} + +function safeUrl (path) { + if (typeof path !== 'string') { + return path + } + + const pathSegments = path.split('?') + + if (pathSegments.length !== 2) { + return path + } + + const qp = new URLSearchParams(pathSegments.pop()) + qp.sort() + return [...pathSegments, qp.toString()].join('?') +} + +function matchKey (mockDispatch, { path, method, body, headers }) { + const pathMatch = matchValue(mockDispatch.path, path) + const methodMatch = matchValue(mockDispatch.method, method) + const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true + const headersMatch = matchHeaders(mockDispatch, headers) + return pathMatch && methodMatch && bodyMatch && headersMatch +} + +function getResponseData (data) { + if (Buffer.isBuffer(data)) { + return data + } else if (typeof data === 'object') { + return JSON.stringify(data) + } else { + return data.toString() + } +} + +function getMockDispatch (mockDispatches, key) { + const basePath = key.query ? buildURL(key.path, key.query) : key.path + const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath + + // Match path + let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`) + } + + // Match method + matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`) + } + + // Match body + matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`) + } + + // Match headers + matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers)) + if (matchedMockDispatches.length === 0) { + throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`) + } + + return matchedMockDispatches[0] +} + +function addMockDispatch (mockDispatches, key, data) { + const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false } + const replyData = typeof data === 'function' ? { callback: data } : { ...data } + const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } } + mockDispatches.push(newMockDispatch) + return newMockDispatch +} + +function deleteMockDispatch (mockDispatches, key) { + const index = mockDispatches.findIndex(dispatch => { + if (!dispatch.consumed) { + return false + } + return matchKey(dispatch, key) + }) + if (index !== -1) { + mockDispatches.splice(index, 1) + } +} + +function buildKey (opts) { + const { path, method, body, headers, query } = opts + return { + path, + method, + body, + headers, + query + } +} + +function generateKeyValues (data) { + return Object.entries(data).reduce((keyValuePairs, [key, value]) => [ + ...keyValuePairs, + Buffer.from(`${key}`), + Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`) + ], []) +} + +/** + * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status + * @param {number} statusCode + */ +function getStatusText (statusCode) { + return STATUS_CODES[statusCode] || 'unknown' +} + +async function getResponse (body) { + const buffers = [] + for await (const data of body) { + buffers.push(data) + } + return Buffer.concat(buffers).toString('utf8') +} + +/** + * Mock dispatch function used to simulate undici dispatches + */ +function mockDispatch (opts, handler) { + // Get mock dispatch from built key + const key = buildKey(opts) + const mockDispatch = getMockDispatch(this[kDispatches], key) + + mockDispatch.timesInvoked++ + + // Here's where we resolve a callback if a callback is present for the dispatch data. + if (mockDispatch.data.callback) { + mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) } + } + + // Parse mockDispatch data + const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch + const { timesInvoked, times } = mockDispatch + + // If it's used up and not persistent, mark as consumed + mockDispatch.consumed = !persist && timesInvoked >= times + mockDispatch.pending = timesInvoked < times + + // If specified, trigger dispatch error + if (error !== null) { + deleteMockDispatch(this[kDispatches], key) + handler.onError(error) + return true + } + + // Handle the request with a delay if necessary + if (typeof delay === 'number' && delay > 0) { + setTimeout(() => { + handleReply(this[kDispatches]) + }, delay) + } else { + handleReply(this[kDispatches]) + } + + function handleReply (mockDispatches, _data = data) { + // fetch's HeadersList is a 1D string array + const optsHeaders = Array.isArray(opts.headers) + ? buildHeadersFromArray(opts.headers) + : opts.headers + const body = typeof _data === 'function' + ? _data({ ...opts, headers: optsHeaders }) + : _data + + // util.types.isPromise is likely needed for jest. + if (isPromise(body)) { + // If handleReply is asynchronous, throwing an error + // in the callback will reject the promise, rather than + // synchronously throw the error, which breaks some tests. + // Rather, we wait for the callback to resolve if it is a + // promise, and then re-run handleReply with the new body. + body.then((newData) => handleReply(mockDispatches, newData)) + return + } + + const responseData = getResponseData(body) + const responseHeaders = generateKeyValues(headers) + const responseTrailers = generateKeyValues(trailers) + + handler.abort = nop + handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode)) + handler.onData(Buffer.from(responseData)) + handler.onComplete(responseTrailers) + deleteMockDispatch(mockDispatches, key) + } + + function resume () {} + + return true +} + +function buildMockDispatch () { + const agent = this[kMockAgent] + const origin = this[kOrigin] + const originalDispatch = this[kOriginalDispatch] + + return function dispatch (opts, handler) { + if (agent.isMockActive) { + try { + mockDispatch.call(this, opts, handler) + } catch (error) { + if (error instanceof MockNotMatchedError) { + const netConnect = agent[kGetNetConnect]() + if (netConnect === false) { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`) + } + if (checkNetConnect(netConnect, origin)) { + originalDispatch.call(this, opts, handler) + } else { + throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`) + } + } else { + throw error + } + } + } else { + originalDispatch.call(this, opts, handler) + } + } +} + +function checkNetConnect (netConnect, origin) { + const url = new URL(origin) + if (netConnect === true) { + return true + } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) { + return true + } + return false +} + +function buildMockOptions (opts) { + if (opts) { + const { agent, ...mockOptions } = opts + return mockOptions + } +} + +module.exports = { + getResponseData, + getMockDispatch, + addMockDispatch, + deleteMockDispatch, + buildKey, + generateKeyValues, + matchValue, + getResponse, + getStatusText, + mockDispatch, + buildMockDispatch, + checkNetConnect, + buildMockOptions, + getHeaderByName +} + + +/***/ }), + +/***/ 6823: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Transform } = __nccwpck_require__(2781) +const { Console } = __nccwpck_require__(6206) + +/** + * Gets the output of `console.table(…)` as a string. + */ +module.exports = class PendingInterceptorsFormatter { + constructor ({ disableColors } = {}) { + this.transform = new Transform({ + transform (chunk, _enc, cb) { + cb(null, chunk) + } + }) + + this.logger = new Console({ + stdout: this.transform, + inspectOptions: { + colors: !disableColors && !process.env.CI + } + }) + } + + format (pendingInterceptors) { + const withPrettyHeaders = pendingInterceptors.map( + ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ + Method: method, + Origin: origin, + Path: path, + 'Status code': statusCode, + Persistent: persist ? '✅' : '❌', + Invocations: timesInvoked, + Remaining: persist ? Infinity : times - timesInvoked + })) + + this.logger.table(withPrettyHeaders) + return this.transform.read().toString() + } +} + + +/***/ }), + +/***/ 8891: +/***/ ((module) => { + +"use strict"; + + +const singulars = { + pronoun: 'it', + is: 'is', + was: 'was', + this: 'this' +} + +const plurals = { + pronoun: 'they', + is: 'are', + was: 'were', + this: 'these' +} + +module.exports = class Pluralizer { + constructor (singular, plural) { + this.singular = singular + this.plural = plural + } + + pluralize (count) { + const one = count === 1 + const keys = one ? singulars : plurals + const noun = one ? this.singular : this.plural + return { ...keys, count, noun } + } +} + + +/***/ }), + +/***/ 8266: +/***/ ((module) => { + +"use strict"; +/* eslint-disable */ + + + +// Extracted from node/lib/internal/fixed_queue.js + +// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two. +const kSize = 2048; +const kMask = kSize - 1; + +// The FixedQueue is implemented as a singly-linked list of fixed-size +// circular buffers. It looks something like this: +// +// head tail +// | | +// v v +// +-----------+ <-----\ +-----------+ <------\ +-----------+ +// | [null] | \----- | next | \------- | next | +// +-----------+ +-----------+ +-----------+ +// | item | <-- bottom | item | <-- bottom | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | | [empty] | +// | item | | item | bottom --> | item | +// | item | | item | | item | +// | ... | | ... | | ... | +// | item | | item | | item | +// | item | | item | | item | +// | [empty] | <-- top | item | | item | +// | [empty] | | item | | item | +// | [empty] | | [empty] | <-- top top --> | [empty] | +// +-----------+ +-----------+ +-----------+ +// +// Or, if there is only one circular buffer, it looks something +// like either of these: +// +// head tail head tail +// | | | | +// v v v v +// +-----------+ +-----------+ +// | [null] | | [null] | +// +-----------+ +-----------+ +// | [empty] | | item | +// | [empty] | | item | +// | item | <-- bottom top --> | [empty] | +// | item | | [empty] | +// | [empty] | <-- top bottom --> | item | +// | [empty] | | item | +// +-----------+ +-----------+ +// +// Adding a value means moving `top` forward by one, removing means +// moving `bottom` forward by one. After reaching the end, the queue +// wraps around. +// +// When `top === bottom` the current queue is empty and when +// `top + 1 === bottom` it's full. This wastes a single space of storage +// but allows much quicker checks. + +class FixedCircularBuffer { + constructor() { + this.bottom = 0; + this.top = 0; + this.list = new Array(kSize); + this.next = null; + } + + isEmpty() { + return this.top === this.bottom; + } + + isFull() { + return ((this.top + 1) & kMask) === this.bottom; + } + + push(data) { + this.list[this.top] = data; + this.top = (this.top + 1) & kMask; + } + + shift() { + const nextItem = this.list[this.bottom]; + if (nextItem === undefined) + return null; + this.list[this.bottom] = undefined; + this.bottom = (this.bottom + 1) & kMask; + return nextItem; + } +} + +module.exports = class FixedQueue { + constructor() { + this.head = this.tail = new FixedCircularBuffer(); + } + + isEmpty() { + return this.head.isEmpty(); + } + + push(data) { + if (this.head.isFull()) { + // Head is full: Creates a new queue, sets the old queue's `.next` to it, + // and sets it as the new main queue. + this.head = this.head.next = new FixedCircularBuffer(); + } + this.head.push(data); + } + + shift() { + const tail = this.tail; + const next = tail.shift(); + if (tail.isEmpty() && tail.next !== null) { + // If there is another queue, it forms the new tail. + this.tail = tail.next; + } + return next; + } +}; + + +/***/ }), + +/***/ 3198: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const DispatcherBase = __nccwpck_require__(4839) +const FixedQueue = __nccwpck_require__(8266) +const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(2785) +const PoolStats = __nccwpck_require__(9689) + +const kClients = Symbol('clients') +const kNeedDrain = Symbol('needDrain') +const kQueue = Symbol('queue') +const kClosedResolve = Symbol('closed resolve') +const kOnDrain = Symbol('onDrain') +const kOnConnect = Symbol('onConnect') +const kOnDisconnect = Symbol('onDisconnect') +const kOnConnectionError = Symbol('onConnectionError') +const kGetDispatcher = Symbol('get dispatcher') +const kAddClient = Symbol('add client') +const kRemoveClient = Symbol('remove client') +const kStats = Symbol('stats') + +class PoolBase extends DispatcherBase { + constructor () { + super() + + this[kQueue] = new FixedQueue() + this[kClients] = [] + this[kQueued] = 0 + + const pool = this + + this[kOnDrain] = function onDrain (origin, targets) { + const queue = pool[kQueue] + + let needDrain = false + + while (!needDrain) { + const item = queue.shift() + if (!item) { + break + } + pool[kQueued]-- + needDrain = !this.dispatch(item.opts, item.handler) + } + + this[kNeedDrain] = needDrain + + if (!this[kNeedDrain] && pool[kNeedDrain]) { + pool[kNeedDrain] = false + pool.emit('drain', origin, [pool, ...targets]) + } + + if (pool[kClosedResolve] && queue.isEmpty()) { + Promise + .all(pool[kClients].map(c => c.close())) + .then(pool[kClosedResolve]) + } + } + + this[kOnConnect] = (origin, targets) => { + pool.emit('connect', origin, [pool, ...targets]) + } + + this[kOnDisconnect] = (origin, targets, err) => { + pool.emit('disconnect', origin, [pool, ...targets], err) + } + + this[kOnConnectionError] = (origin, targets, err) => { + pool.emit('connectionError', origin, [pool, ...targets], err) + } + + this[kStats] = new PoolStats(this) + } + + get [kBusy] () { + return this[kNeedDrain] + } + + get [kConnected] () { + return this[kClients].filter(client => client[kConnected]).length + } + + get [kFree] () { + return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length + } + + get [kPending] () { + let ret = this[kQueued] + for (const { [kPending]: pending } of this[kClients]) { + ret += pending + } + return ret + } + + get [kRunning] () { + let ret = 0 + for (const { [kRunning]: running } of this[kClients]) { + ret += running + } + return ret + } + + get [kSize] () { + let ret = this[kQueued] + for (const { [kSize]: size } of this[kClients]) { + ret += size + } + return ret + } + + get stats () { + return this[kStats] + } + + async [kClose] () { + if (this[kQueue].isEmpty()) { + return Promise.all(this[kClients].map(c => c.close())) + } else { + return new Promise((resolve) => { + this[kClosedResolve] = resolve + }) + } + } + + async [kDestroy] (err) { + while (true) { + const item = this[kQueue].shift() + if (!item) { + break + } + item.handler.onError(err) + } + + return Promise.all(this[kClients].map(c => c.destroy(err))) + } + + [kDispatch] (opts, handler) { + const dispatcher = this[kGetDispatcher]() + + if (!dispatcher) { + this[kNeedDrain] = true + this[kQueue].push({ opts, handler }) + this[kQueued]++ + } else if (!dispatcher.dispatch(opts, handler)) { + dispatcher[kNeedDrain] = true + this[kNeedDrain] = !this[kGetDispatcher]() + } + + return !this[kNeedDrain] + } + + [kAddClient] (client) { + client + .on('drain', this[kOnDrain]) + .on('connect', this[kOnConnect]) + .on('disconnect', this[kOnDisconnect]) + .on('connectionError', this[kOnConnectionError]) + + this[kClients].push(client) + + if (this[kNeedDrain]) { + process.nextTick(() => { + if (this[kNeedDrain]) { + this[kOnDrain](client[kUrl], [this, client]) + } + }) + } + + return this + } + + [kRemoveClient] (client) { + client.close(() => { + const idx = this[kClients].indexOf(client) + if (idx !== -1) { + this[kClients].splice(idx, 1) + } + }) + + this[kNeedDrain] = this[kClients].some(dispatcher => ( + !dispatcher[kNeedDrain] && + dispatcher.closed !== true && + dispatcher.destroyed !== true + )) + } +} + +module.exports = { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kRemoveClient, + kGetDispatcher +} + + +/***/ }), + +/***/ 9689: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(2785) +const kPool = Symbol('pool') + +class PoolStats { + 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] + } +} + +module.exports = PoolStats + + +/***/ }), + +/***/ 4634: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { + PoolBase, + kClients, + kNeedDrain, + kAddClient, + kGetDispatcher +} = __nccwpck_require__(3198) +const Client = __nccwpck_require__(3598) +const { + InvalidArgumentError +} = __nccwpck_require__(8045) +const util = __nccwpck_require__(3983) +const { kUrl, kInterceptors } = __nccwpck_require__(2785) +const buildConnector = __nccwpck_require__(2067) + +const kOptions = Symbol('options') +const kConnections = Symbol('connections') +const kFactory = Symbol('factory') + +function defaultFactory (origin, opts) { + return new Client(origin, opts) +} + +class Pool extends PoolBase { + constructor (origin, { + connections, + factory = defaultFactory, + connect, + connectTimeout, + tls, + maxCachedSessions, + socketPath, + autoSelectFamily, + autoSelectFamilyAttemptTimeout, + allowH2, + ...options + } = {}) { + super() + + if (connections != null && (!Number.isFinite(connections) || connections < 0)) { + throw new InvalidArgumentError('invalid connections') + } + + if (typeof factory !== 'function') { + throw new InvalidArgumentError('factory must be a function.') + } + + if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') { + throw new InvalidArgumentError('connect must be a function or an object') + } + + if (typeof connect !== 'function') { + connect = buildConnector({ + ...tls, + maxCachedSessions, + allowH2, + socketPath, + timeout: connectTimeout, + ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined), + ...connect + }) + } + + this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool) + ? options.interceptors.Pool + : [] + this[kConnections] = connections || null + this[kUrl] = util.parseOrigin(origin) + this[kOptions] = { ...util.deepClone(options), connect, allowH2 } + this[kOptions].interceptors = options.interceptors + ? { ...options.interceptors } + : undefined + this[kFactory] = factory + } + + [kGetDispatcher] () { + let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain]) + + if (dispatcher) { + return dispatcher + } + + if (!this[kConnections] || this[kClients].length < this[kConnections]) { + dispatcher = this[kFactory](this[kUrl], this[kOptions]) + this[kAddClient](dispatcher) + } + + return dispatcher + } +} + +module.exports = Pool + + +/***/ }), + +/***/ 7858: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(2785) +const { URL } = __nccwpck_require__(7310) +const Agent = __nccwpck_require__(7890) +const Pool = __nccwpck_require__(4634) +const DispatcherBase = __nccwpck_require__(4839) +const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(8045) +const buildConnector = __nccwpck_require__(2067) + +const kAgent = Symbol('proxy agent') +const kClient = Symbol('proxy client') +const kProxyHeaders = Symbol('proxy headers') +const kRequestTls = Symbol('request tls settings') +const kProxyTls = Symbol('proxy tls settings') +const kConnectEndpoint = Symbol('connect endpoint function') + +function defaultProtocolPort (protocol) { + return protocol === 'https:' ? 443 : 80 +} + +function buildProxyOptions (opts) { + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + return { + uri: opts.uri, + protocol: opts.protocol || 'https' + } +} + +function defaultFactory (origin, opts) { + return new Pool(origin, opts) +} + +class ProxyAgent extends DispatcherBase { + constructor (opts) { + super(opts) + this[kProxy] = buildProxyOptions(opts) + this[kAgent] = new Agent(opts) + this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent) + ? opts.interceptors.ProxyAgent + : [] + + if (typeof opts === 'string') { + opts = { uri: opts } + } + + if (!opts || !opts.uri) { + throw new InvalidArgumentError('Proxy opts.uri is mandatory') + } + + const { clientFactory = defaultFactory } = opts + + if (typeof clientFactory !== 'function') { + throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.') + } + + this[kRequestTls] = opts.requestTls + this[kProxyTls] = opts.proxyTls + this[kProxyHeaders] = opts.headers || {} + + const resolvedUrl = new URL(opts.uri) + const { origin, port, host, username, password } = resolvedUrl + + if (opts.auth && opts.token) { + throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token') + } else if (opts.auth) { + /* @deprecated in favour of opts.token */ + this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}` + } else if (opts.token) { + this[kProxyHeaders]['proxy-authorization'] = opts.token + } else if (username && password) { + this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}` + } + + const connect = buildConnector({ ...opts.proxyTls }) + this[kConnectEndpoint] = buildConnector({ ...opts.requestTls }) + this[kClient] = clientFactory(resolvedUrl, { connect }) + this[kAgent] = new Agent({ + ...opts, + connect: async (opts, callback) => { + let requestedHost = opts.host + if (!opts.port) { + requestedHost += `:${defaultProtocolPort(opts.protocol)}` + } + try { + const { socket, statusCode } = await this[kClient].connect({ + origin, + port, + path: requestedHost, + signal: opts.signal, + headers: { + ...this[kProxyHeaders], + host + } + }) + if (statusCode !== 200) { + socket.on('error', () => {}).destroy() + callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`)) + } + if (opts.protocol !== 'https:') { + callback(null, socket) + return + } + let servername + if (this[kRequestTls]) { + servername = this[kRequestTls].servername + } else { + servername = opts.servername + } + this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback) + } catch (err) { + callback(err) + } + } + }) + } + + dispatch (opts, handler) { + const { host } = new URL(opts.origin) + const headers = buildHeaders(opts.headers) + throwIfProxyAuthIsSent(headers) + return this[kAgent].dispatch( + { + ...opts, + headers: { + ...headers, + host + } + }, + handler + ) + } + + async [kClose] () { + await this[kAgent].close() + await this[kClient].close() + } + + async [kDestroy] () { + await this[kAgent].destroy() + await this[kClient].destroy() + } +} + +/** + * @param {string[] | Record} headers + * @returns {Record} + */ +function buildHeaders (headers) { + // When using undici.fetch, the headers list is stored + // as an array. + if (Array.isArray(headers)) { + /** @type {Record} */ + const headersPair = {} + + for (let i = 0; i < headers.length; i += 2) { + headersPair[headers[i]] = headers[i + 1] + } + + return headersPair + } + + return headers +} + +/** + * @param {Record} headers + * + * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers + * Nevertheless, it was changed and to avoid a security vulnerability by end users + * this check was created. + * It should be removed in the next major version for performance reasons + */ +function throwIfProxyAuthIsSent (headers) { + const existProxyAuth = headers && Object.keys(headers) + .find((key) => key.toLowerCase() === 'proxy-authorization') + if (existProxyAuth) { + throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor') + } +} + +module.exports = ProxyAgent + + +/***/ }), + +/***/ 9459: +/***/ ((module) => { + +"use strict"; + + +let fastNow = Date.now() +let fastNowTimeout + +const fastTimers = [] + +function onTimeout () { + fastNow = Date.now() + + let len = fastTimers.length + let idx = 0 + while (idx < len) { + const timer = fastTimers[idx] + + if (timer.state === 0) { + timer.state = fastNow + timer.delay + } else if (timer.state > 0 && fastNow >= timer.state) { + timer.state = -1 + timer.callback(timer.opaque) + } + + if (timer.state === -1) { + timer.state = -2 + if (idx !== len - 1) { + fastTimers[idx] = fastTimers.pop() + } else { + fastTimers.pop() + } + len -= 1 + } else { + idx += 1 + } + } + + if (fastTimers.length > 0) { + refreshTimeout() + } +} + +function refreshTimeout () { + if (fastNowTimeout && fastNowTimeout.refresh) { + fastNowTimeout.refresh() + } else { + clearTimeout(fastNowTimeout) + fastNowTimeout = setTimeout(onTimeout, 1e3) + if (fastNowTimeout.unref) { + fastNowTimeout.unref() + } + } +} + +class Timeout { + constructor (callback, delay, opaque) { + this.callback = callback + this.delay = delay + this.opaque = opaque + + // -2 not in timer list + // -1 in timer list but inactive + // 0 in timer list waiting for time + // > 0 in timer list waiting for time to expire + this.state = -2 + + this.refresh() + } + + refresh () { + if (this.state === -2) { + fastTimers.push(this) + if (!fastNowTimeout || fastTimers.length === 1) { + refreshTimeout() + } + } + + this.state = 0 + } + + clear () { + this.state = -1 + } +} + +module.exports = { + setTimeout (callback, delay, opaque) { + return delay < 1e3 + ? setTimeout(callback, delay, opaque) + : new Timeout(callback, delay, opaque) + }, + clearTimeout (timeout) { + if (timeout instanceof Timeout) { + timeout.clear() + } else { + clearTimeout(timeout) + } + } +} + + +/***/ }), + +/***/ 5354: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const diagnosticsChannel = __nccwpck_require__(7643) +const { uid, states } = __nccwpck_require__(9188) +const { + kReadyState, + kSentClose, + kByteParser, + kReceivedClose +} = __nccwpck_require__(7578) +const { fireEvent, failWebsocketConnection } = __nccwpck_require__(5515) +const { CloseEvent } = __nccwpck_require__(2611) +const { makeRequest } = __nccwpck_require__(8359) +const { fetching } = __nccwpck_require__(4881) +const { Headers } = __nccwpck_require__(554) +const { getGlobalDispatcher } = __nccwpck_require__(1892) +const { kHeadersList } = __nccwpck_require__(2785) + +const channels = {} +channels.open = diagnosticsChannel.channel('undici:websocket:open') +channels.close = diagnosticsChannel.channel('undici:websocket:close') +channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error') + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6113) +} catch { + +} + +/** + * @see https://websockets.spec.whatwg.org/#concept-websocket-establish + * @param {URL} url + * @param {string|string[]} protocols + * @param {import('./websocket').WebSocket} ws + * @param {(response: any) => void} onEstablish + * @param {Partial} options + */ +function establishWebSocketConnection (url, protocols, ws, onEstablish, options) { + // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s + // scheme is "ws", and to "https" otherwise. + const requestURL = url + + requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:' + + // 2. Let request be a new request, whose URL is requestURL, client is client, + // service-workers mode is "none", referrer is "no-referrer", mode is + // "websocket", credentials mode is "include", cache mode is "no-store" , + // and redirect mode is "error". + const request = makeRequest({ + urlList: [requestURL], + serviceWorkers: 'none', + referrer: 'no-referrer', + mode: 'websocket', + credentials: 'include', + cache: 'no-store', + redirect: 'error' + }) + + // Note: undici extension, allow setting custom headers. + if (options.headers) { + const headersList = new Headers(options.headers)[kHeadersList] + + request.headersList = headersList + } + + // 3. Append (`Upgrade`, `websocket`) to request’s header list. + // 4. Append (`Connection`, `Upgrade`) to request’s header list. + // Note: both of these are handled by undici currently. + // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397 + + // 5. Let keyValue be a nonce consisting of a randomly selected + // 16-byte value that has been forgiving-base64-encoded and + // isomorphic encoded. + const keyValue = crypto.randomBytes(16).toString('base64') + + // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s + // header list. + request.headersList.append('sec-websocket-key', keyValue) + + // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s + // header list. + request.headersList.append('sec-websocket-version', '13') + + // 8. For each protocol in protocols, combine + // (`Sec-WebSocket-Protocol`, protocol) in request’s header + // list. + for (const protocol of protocols) { + request.headersList.append('sec-websocket-protocol', protocol) + } + + // 9. Let permessageDeflate be a user-agent defined + // "permessage-deflate" extension header value. + // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673 + // TODO: enable once permessage-deflate is supported + const permessageDeflate = '' // 'permessage-deflate; 15' + + // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to + // request’s header list. + // request.headersList.append('sec-websocket-extensions', permessageDeflate) + + // 11. Fetch request with useParallelQueue set to true, and + // processResponse given response being these steps: + const controller = fetching({ + request, + useParallelQueue: true, + dispatcher: options.dispatcher ?? getGlobalDispatcher(), + processResponse (response) { + // 1. If response is a network error or its status is not 101, + // fail the WebSocket connection. + if (response.type === 'error' || response.status !== 101) { + failWebsocketConnection(ws, 'Received network error or non-101 status code.') + return + } + + // 2. If protocols is not the empty list and extracting header + // list values given `Sec-WebSocket-Protocol` and response’s + // header list results in null, failure, or the empty byte + // sequence, then fail the WebSocket connection. + if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Server did not respond with sent protocols.') + return + } + + // 3. Follow the requirements stated step 2 to step 6, inclusive, + // of the last set of steps in section 4.1 of The WebSocket + // Protocol to validate response. This either results in fail + // the WebSocket connection or the WebSocket connection is + // established. + + // 2. If the response lacks an |Upgrade| header field or the |Upgrade| + // header field contains a value that is not an ASCII case- + // insensitive match for the value "websocket", the client MUST + // _Fail the WebSocket Connection_. + if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') { + failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".') + return + } + + // 3. If the response lacks a |Connection| header field or the + // |Connection| header field doesn't contain a token that is an + // ASCII case-insensitive match for the value "Upgrade", the client + // MUST _Fail the WebSocket Connection_. + if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') { + failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".') + return + } + + // 4. If the response lacks a |Sec-WebSocket-Accept| header field or + // the |Sec-WebSocket-Accept| contains a value other than the + // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket- + // Key| (as a string, not base64-decoded) with the string "258EAFA5- + // E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and + // trailing whitespace, the client MUST _Fail the WebSocket + // Connection_. + const secWSAccept = response.headersList.get('Sec-WebSocket-Accept') + const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64') + if (secWSAccept !== digest) { + failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.') + return + } + + // 5. If the response includes a |Sec-WebSocket-Extensions| header + // field and this header field indicates the use of an extension + // that was not present in the client's handshake (the server has + // indicated an extension not requested by the client), the client + // MUST _Fail the WebSocket Connection_. (The parsing of this + // header field to determine which extensions are requested is + // discussed in Section 9.1.) + const secExtension = response.headersList.get('Sec-WebSocket-Extensions') + + if (secExtension !== null && secExtension !== permessageDeflate) { + failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.') + return + } + + // 6. If the response includes a |Sec-WebSocket-Protocol| header field + // and this header field indicates the use of a subprotocol that was + // not present in the client's handshake (the server has indicated a + // subprotocol not requested by the client), the client MUST _Fail + // the WebSocket Connection_. + const secProtocol = response.headersList.get('Sec-WebSocket-Protocol') + + if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) { + failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.') + return + } + + response.socket.on('data', onSocketData) + response.socket.on('close', onSocketClose) + response.socket.on('error', onSocketError) + + if (channels.open.hasSubscribers) { + channels.open.publish({ + address: response.socket.address(), + protocol: secProtocol, + extensions: secExtension + }) + } + + onEstablish(response) + } + }) + + return controller +} + +/** + * @param {Buffer} chunk + */ +function onSocketData (chunk) { + if (!this.ws[kByteParser].write(chunk)) { + this.pause() + } +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4 + */ +function onSocketClose () { + const { ws } = this + + // If the TCP connection was closed after the + // WebSocket closing handshake was completed, the WebSocket connection + // is said to have been closed _cleanly_. + const wasClean = ws[kSentClose] && ws[kReceivedClose] + + let code = 1005 + let reason = '' + + const result = ws[kByteParser].closingInfo + + if (result) { + code = result.code ?? 1005 + reason = result.reason + } else if (!ws[kSentClose]) { + // If _The WebSocket + // Connection is Closed_ and no Close control frame was received by the + // endpoint (such as could occur if the underlying transport connection + // is lost), _The WebSocket Connection Close Code_ is considered to be + // 1006. + code = 1006 + } + + // 1. Change the ready state to CLOSED (3). + ws[kReadyState] = states.CLOSED + + // 2. If the user agent was required to fail the WebSocket + // connection, or if the WebSocket connection was closed + // after being flagged as full, fire an event named error + // at the WebSocket object. + // TODO + + // 3. Fire an event named close at the WebSocket object, + // using CloseEvent, with the wasClean attribute + // initialized to true if the connection closed cleanly + // and false otherwise, the code attribute initialized to + // the WebSocket connection close code, and the reason + // attribute initialized to the result of applying UTF-8 + // decode without BOM to the WebSocket connection close + // reason. + fireEvent('close', ws, CloseEvent, { + wasClean, code, reason + }) + + if (channels.close.hasSubscribers) { + channels.close.publish({ + websocket: ws, + code, + reason + }) + } +} + +function onSocketError (error) { + const { ws } = this + + ws[kReadyState] = states.CLOSING + + if (channels.socketError.hasSubscribers) { + channels.socketError.publish(error) + } + + this.destroy() +} + +module.exports = { + establishWebSocketConnection +} + + +/***/ }), + +/***/ 9188: +/***/ ((module) => { + +"use strict"; + + +// This is a Globally Unique Identifier unique used +// to validate that the endpoint accepts websocket +// connections. +// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3 +const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' + +/** @type {PropertyDescriptor} */ +const staticPropertyDescriptors = { + enumerable: true, + writable: false, + configurable: false +} + +const states = { + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3 +} + +const opcodes = { + CONTINUATION: 0x0, + TEXT: 0x1, + BINARY: 0x2, + CLOSE: 0x8, + PING: 0x9, + PONG: 0xA +} + +const maxUnsigned16Bit = 2 ** 16 - 1 // 65535 + +const parserStates = { + INFO: 0, + PAYLOADLENGTH_16: 2, + PAYLOADLENGTH_64: 3, + READ_DATA: 4 +} + +const emptyBuffer = Buffer.allocUnsafe(0) + +module.exports = { + uid, + staticPropertyDescriptors, + states, + opcodes, + maxUnsigned16Bit, + parserStates, + emptyBuffer +} + + +/***/ }), + +/***/ 2611: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(1744) +const { kEnumerableProperty } = __nccwpck_require__(3983) +const { MessagePort } = __nccwpck_require__(1267) + +/** + * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent + */ +class MessageEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.MessageEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get data () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.data + } + + get origin () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.origin + } + + get lastEventId () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.lastEventId + } + + get source () { + webidl.brandCheck(this, MessageEvent) + + return this.#eventInit.source + } + + get ports () { + webidl.brandCheck(this, MessageEvent) + + if (!Object.isFrozen(this.#eventInit.ports)) { + Object.freeze(this.#eventInit.ports) + } + + return this.#eventInit.ports + } + + initMessageEvent ( + type, + bubbles = false, + cancelable = false, + data = null, + origin = '', + lastEventId = '', + source = null, + ports = [] + ) { + webidl.brandCheck(this, MessageEvent) + + webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' }) + + return new MessageEvent(type, { + bubbles, cancelable, data, origin, lastEventId, source, ports + }) + } +} + +/** + * @see https://websockets.spec.whatwg.org/#the-closeevent-interface + */ +class CloseEvent extends Event { + #eventInit + + constructor (type, eventInitDict = {}) { + webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' }) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.CloseEventInit(eventInitDict) + + super(type, eventInitDict) + + this.#eventInit = eventInitDict + } + + get wasClean () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.wasClean + } + + get code () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.code + } + + get reason () { + webidl.brandCheck(this, CloseEvent) + + return this.#eventInit.reason + } +} + +// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface +class ErrorEvent extends Event { + #eventInit + + constructor (type, eventInitDict) { + webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' }) + + super(type, eventInitDict) + + type = webidl.converters.DOMString(type) + eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {}) + + this.#eventInit = eventInitDict + } + + get message () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.message + } + + get filename () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.filename + } + + get lineno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.lineno + } + + get colno () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.colno + } + + get error () { + webidl.brandCheck(this, ErrorEvent) + + return this.#eventInit.error + } +} + +Object.defineProperties(MessageEvent.prototype, { + [Symbol.toStringTag]: { + value: 'MessageEvent', + configurable: true + }, + data: kEnumerableProperty, + origin: kEnumerableProperty, + lastEventId: kEnumerableProperty, + source: kEnumerableProperty, + ports: kEnumerableProperty, + initMessageEvent: kEnumerableProperty +}) + +Object.defineProperties(CloseEvent.prototype, { + [Symbol.toStringTag]: { + value: 'CloseEvent', + configurable: true + }, + reason: kEnumerableProperty, + code: kEnumerableProperty, + wasClean: kEnumerableProperty +}) + +Object.defineProperties(ErrorEvent.prototype, { + [Symbol.toStringTag]: { + value: 'ErrorEvent', + configurable: true + }, + message: kEnumerableProperty, + filename: kEnumerableProperty, + lineno: kEnumerableProperty, + colno: kEnumerableProperty, + error: kEnumerableProperty +}) + +webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.MessagePort +) + +const eventInit = [ + { + key: 'bubbles', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'cancelable', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'composed', + converter: webidl.converters.boolean, + defaultValue: false + } +] + +webidl.converters.MessageEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'data', + converter: webidl.converters.any, + defaultValue: null + }, + { + key: 'origin', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lastEventId', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'source', + // Node doesn't implement WindowProxy or ServiceWorker, so the only + // valid value for source is a MessagePort. + converter: webidl.nullableConverter(webidl.converters.MessagePort), + defaultValue: null + }, + { + key: 'ports', + converter: webidl.converters['sequence'], + get defaultValue () { + return [] + } + } +]) + +webidl.converters.CloseEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'wasClean', + converter: webidl.converters.boolean, + defaultValue: false + }, + { + key: 'code', + converter: webidl.converters['unsigned short'], + defaultValue: 0 + }, + { + key: 'reason', + converter: webidl.converters.USVString, + defaultValue: '' + } +]) + +webidl.converters.ErrorEventInit = webidl.dictionaryConverter([ + ...eventInit, + { + key: 'message', + converter: webidl.converters.DOMString, + defaultValue: '' + }, + { + key: 'filename', + converter: webidl.converters.USVString, + defaultValue: '' + }, + { + key: 'lineno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'colno', + converter: webidl.converters['unsigned long'], + defaultValue: 0 + }, + { + key: 'error', + converter: webidl.converters.any + } +]) + +module.exports = { + MessageEvent, + CloseEvent, + ErrorEvent +} + + +/***/ }), + +/***/ 5444: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { maxUnsigned16Bit } = __nccwpck_require__(9188) + +/** @type {import('crypto')} */ +let crypto +try { + crypto = __nccwpck_require__(6113) +} catch { + +} + +class WebsocketFrameSend { + /** + * @param {Buffer|undefined} data + */ + constructor (data) { + this.frameData = data + this.maskKey = crypto.randomBytes(4) + } + + createFrame (opcode) { + const bodyLength = this.frameData?.byteLength ?? 0 + + /** @type {number} */ + let payloadLength = bodyLength // 0-125 + let offset = 6 + + if (bodyLength > maxUnsigned16Bit) { + offset += 8 // payload length is next 8 bytes + payloadLength = 127 + } else if (bodyLength > 125) { + offset += 2 // payload length is next 2 bytes + payloadLength = 126 + } + + const buffer = Buffer.allocUnsafe(bodyLength + offset) + + // Clear first 2 bytes, everything else is overwritten + buffer[0] = buffer[1] = 0 + buffer[0] |= 0x80 // FIN + buffer[0] = (buffer[0] & 0xF0) + opcode // opcode + + /*! ws. MIT License. Einar Otto Stangvik */ + buffer[offset - 4] = this.maskKey[0] + buffer[offset - 3] = this.maskKey[1] + buffer[offset - 2] = this.maskKey[2] + buffer[offset - 1] = this.maskKey[3] + + buffer[1] = payloadLength + + if (payloadLength === 126) { + buffer.writeUInt16BE(bodyLength, 2) + } else if (payloadLength === 127) { + // Clear extended payload length + buffer[2] = buffer[3] = 0 + buffer.writeUIntBE(bodyLength, 4, 6) + } + + buffer[1] |= 0x80 // MASK + + // mask body + for (let i = 0; i < bodyLength; i++) { + buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4] + } + + return buffer + } +} + +module.exports = { + WebsocketFrameSend +} + + +/***/ }), + +/***/ 1688: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { Writable } = __nccwpck_require__(2781) +const diagnosticsChannel = __nccwpck_require__(7643) +const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(9188) +const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(7578) +const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(5515) +const { WebsocketFrameSend } = __nccwpck_require__(5444) + +// This code was influenced by ws released under the MIT license. +// Copyright (c) 2011 Einar Otto Stangvik +// Copyright (c) 2013 Arnout Kazemier and contributors +// Copyright (c) 2016 Luigi Pinca and contributors + +const channels = {} +channels.ping = diagnosticsChannel.channel('undici:websocket:ping') +channels.pong = diagnosticsChannel.channel('undici:websocket:pong') + +class ByteParser extends Writable { + #buffers = [] + #byteOffset = 0 + + #state = parserStates.INFO + + #info = {} + #fragments = [] + + constructor (ws) { + super() + + this.ws = ws + } + + /** + * @param {Buffer} chunk + * @param {() => void} callback + */ + _write (chunk, _, callback) { + this.#buffers.push(chunk) + this.#byteOffset += chunk.length + + this.run(callback) + } + + /** + * Runs whenever a new chunk is received. + * Callback is called whenever there are no more chunks buffering, + * or not enough bytes are buffered to parse. + */ + run (callback) { + while (true) { + if (this.#state === parserStates.INFO) { + // If there aren't enough bytes to parse the payload length, etc. + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.fin = (buffer[0] & 0x80) !== 0 + this.#info.opcode = buffer[0] & 0x0F + + // If we receive a fragmented message, we use the type of the first + // frame to parse the full message as binary/text, when it's terminated + this.#info.originalOpcode ??= this.#info.opcode + + this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION + + if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) { + // Only text and binary frames can be fragmented + failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.') + return + } + + const payloadLength = buffer[1] & 0x7F + + if (payloadLength <= 125) { + this.#info.payloadLength = payloadLength + this.#state = parserStates.READ_DATA + } else if (payloadLength === 126) { + this.#state = parserStates.PAYLOADLENGTH_16 + } else if (payloadLength === 127) { + this.#state = parserStates.PAYLOADLENGTH_64 + } + + if (this.#info.fragmented && payloadLength > 125) { + // A fragmented frame can't be fragmented itself + failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.') + return + } else if ( + (this.#info.opcode === opcodes.PING || + this.#info.opcode === opcodes.PONG || + this.#info.opcode === opcodes.CLOSE) && + payloadLength > 125 + ) { + // Control frames can have a payload length of 125 bytes MAX + failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.') + return + } else if (this.#info.opcode === opcodes.CLOSE) { + if (payloadLength === 1) { + failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.') + return + } + + const body = this.consume(payloadLength) + + this.#info.closeInfo = this.parseCloseBody(false, body) + + if (!this.ws[kSentClose]) { + // If an endpoint receives a Close frame and did not previously send a + // Close frame, the endpoint MUST send a Close frame in response. (When + // sending a Close frame in response, the endpoint typically echos the + // status code it received.) + const body = Buffer.allocUnsafe(2) + body.writeUInt16BE(this.#info.closeInfo.code, 0) + const closeFrame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write( + closeFrame.createFrame(opcodes.CLOSE), + (err) => { + if (!err) { + this.ws[kSentClose] = true + } + } + ) + } + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this.ws[kReadyState] = states.CLOSING + this.ws[kReceivedClose] = true + + this.end() + + return + } else if (this.#info.opcode === opcodes.PING) { + // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in + // response, unless it already received a Close frame. + // A Pong frame sent in response to a Ping frame must have identical + // "Application data" + + const body = this.consume(payloadLength) + + if (!this.ws[kReceivedClose]) { + const frame = new WebsocketFrameSend(body) + + this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG)) + + if (channels.ping.hasSubscribers) { + channels.ping.publish({ + payload: body + }) + } + } + + this.#state = parserStates.INFO + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } else if (this.#info.opcode === opcodes.PONG) { + // A Pong frame MAY be sent unsolicited. This serves as a + // unidirectional heartbeat. A response to an unsolicited Pong frame is + // not expected. + + const body = this.consume(payloadLength) + + if (channels.pong.hasSubscribers) { + channels.pong.publish({ + payload: body + }) + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + return + } + } + } else if (this.#state === parserStates.PAYLOADLENGTH_16) { + if (this.#byteOffset < 2) { + return callback() + } + + const buffer = this.consume(2) + + this.#info.payloadLength = buffer.readUInt16BE(0) + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.PAYLOADLENGTH_64) { + if (this.#byteOffset < 8) { + return callback() + } + + const buffer = this.consume(8) + const upper = buffer.readUInt32BE(0) + + // 2^31 is the maxinimum bytes an arraybuffer can contain + // on 32-bit systems. Although, on 64-bit systems, this is + // 2^53-1 bytes. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275 + // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e + if (upper > 2 ** 31 - 1) { + failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.') + return + } + + const lower = buffer.readUInt32BE(4) + + this.#info.payloadLength = (upper << 8) + lower + this.#state = parserStates.READ_DATA + } else if (this.#state === parserStates.READ_DATA) { + if (this.#byteOffset < this.#info.payloadLength) { + // If there is still more data in this chunk that needs to be read + return callback() + } else if (this.#byteOffset >= this.#info.payloadLength) { + // If the server sent multiple frames in a single chunk + + const body = this.consume(this.#info.payloadLength) + + this.#fragments.push(body) + + // If the frame is unfragmented, or a fragmented frame was terminated, + // a message was received + if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) { + const fullMessage = Buffer.concat(this.#fragments) + + websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage) + + this.#info = {} + this.#fragments.length = 0 + } + + this.#state = parserStates.INFO + } + } + + if (this.#byteOffset > 0) { + continue + } else { + callback() + break + } + } + } + + /** + * Take n bytes from the buffered Buffers + * @param {number} n + * @returns {Buffer|null} + */ + consume (n) { + if (n > this.#byteOffset) { + return null + } else if (n === 0) { + return emptyBuffer + } + + if (this.#buffers[0].length === n) { + this.#byteOffset -= this.#buffers[0].length + return this.#buffers.shift() + } + + const buffer = Buffer.allocUnsafe(n) + let offset = 0 + + while (offset !== n) { + const next = this.#buffers[0] + const { length } = next + + if (length + offset === n) { + buffer.set(this.#buffers.shift(), offset) + break + } else if (length + offset > n) { + buffer.set(next.subarray(0, n - offset), offset) + this.#buffers[0] = next.subarray(n - offset) + break + } else { + buffer.set(this.#buffers.shift(), offset) + offset += next.length + } + } + + this.#byteOffset -= n + + return buffer + } + + parseCloseBody (onlyCode, data) { + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5 + /** @type {number|undefined} */ + let code + + if (data.length >= 2) { + // _The WebSocket Connection Close Code_ is + // defined as the status code (Section 7.4) contained in the first Close + // control frame received by the application + code = data.readUInt16BE(0) + } + + if (onlyCode) { + if (!isValidStatusCode(code)) { + return null + } + + return { code } + } + + // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6 + /** @type {Buffer} */ + let reason = data.subarray(2) + + // Remove BOM + if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) { + reason = reason.subarray(3) + } + + if (code !== undefined && !isValidStatusCode(code)) { + return null + } + + try { + // TODO: optimize this + reason = new TextDecoder('utf-8', { fatal: true }).decode(reason) + } catch { + return null + } + + return { code, reason } + } + + get closingInfo () { + return this.#info.closeInfo + } +} + +module.exports = { + ByteParser +} + + +/***/ }), + +/***/ 7578: +/***/ ((module) => { + +"use strict"; + + +module.exports = { + kWebSocketURL: Symbol('url'), + kReadyState: Symbol('ready state'), + kController: Symbol('controller'), + kResponse: Symbol('response'), + kBinaryType: Symbol('binary type'), + kSentClose: Symbol('sent close'), + kReceivedClose: Symbol('received close'), + kByteParser: Symbol('byte parser') +} + + +/***/ }), + +/***/ 5515: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(7578) +const { states, opcodes } = __nccwpck_require__(9188) +const { MessageEvent, ErrorEvent } = __nccwpck_require__(2611) + +/* globals Blob */ + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isEstablished (ws) { + // If the server's response is validated as provided for above, it is + // said that _The WebSocket Connection is Established_ and that the + // WebSocket Connection is in the OPEN state. + return ws[kReadyState] === states.OPEN +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosing (ws) { + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + return ws[kReadyState] === states.CLOSING +} + +/** + * @param {import('./websocket').WebSocket} ws + */ +function isClosed (ws) { + return ws[kReadyState] === states.CLOSED +} + +/** + * @see https://dom.spec.whatwg.org/#concept-event-fire + * @param {string} e + * @param {EventTarget} target + * @param {EventInit | undefined} eventInitDict + */ +function fireEvent (e, target, eventConstructor = Event, eventInitDict) { + // 1. If eventConstructor is not given, then let eventConstructor be Event. + + // 2. Let event be the result of creating an event given eventConstructor, + // in the relevant realm of target. + // 3. Initialize event’s type attribute to e. + const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap + + // 4. Initialize any other IDL attributes of event as described in the + // invocation of this algorithm. + + // 5. Return the result of dispatching event at target, with legacy target + // override flag set if set. + target.dispatchEvent(event) +} + +/** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + * @param {import('./websocket').WebSocket} ws + * @param {number} type Opcode + * @param {Buffer} data application data + */ +function websocketMessageReceived (ws, type, data) { + // 1. If ready state is not OPEN (1), then return. + if (ws[kReadyState] !== states.OPEN) { + return + } + + // 2. Let dataForEvent be determined by switching on type and binary type: + let dataForEvent + + if (type === opcodes.TEXT) { + // -> type indicates that the data is Text + // a new DOMString containing data + try { + dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data) + } catch { + failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.') + return + } + } else if (type === opcodes.BINARY) { + if (ws[kBinaryType] === 'blob') { + // -> type indicates that the data is Binary and binary type is "blob" + // a new Blob object, created in the relevant Realm of the WebSocket + // object, that represents data as its raw data + dataForEvent = new Blob([data]) + } else { + // -> type indicates that the data is Binary and binary type is "arraybuffer" + // a new ArrayBuffer object, created in the relevant Realm of the + // WebSocket object, whose contents are data + dataForEvent = new Uint8Array(data).buffer + } + } + + // 3. Fire an event named message at the WebSocket object, using MessageEvent, + // with the origin attribute initialized to the serialization of the WebSocket + // object’s url's origin, and the data attribute initialized to dataForEvent. + fireEvent('message', ws, MessageEvent, { + origin: ws[kWebSocketURL].origin, + data: dataForEvent + }) +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455 + * @see https://datatracker.ietf.org/doc/html/rfc2616 + * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407 + * @param {string} protocol + */ +function isValidSubprotocol (protocol) { + // If present, this value indicates one + // or more comma-separated subprotocol the client wishes to speak, + // ordered by preference. The elements that comprise this value + // MUST be non-empty strings with characters in the range U+0021 to + // U+007E not including separator characters as defined in + // [RFC2616] and MUST all be unique strings. + if (protocol.length === 0) { + return false + } + + for (const char of protocol) { + const code = char.charCodeAt(0) + + if ( + code < 0x21 || + code > 0x7E || + char === '(' || + char === ')' || + char === '<' || + char === '>' || + char === '@' || + char === ',' || + char === ';' || + char === ':' || + char === '\\' || + char === '"' || + char === '/' || + char === '[' || + char === ']' || + char === '?' || + char === '=' || + char === '{' || + char === '}' || + code === 32 || // SP + code === 9 // HT + ) { + return false + } + } + + return true +} + +/** + * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4 + * @param {number} code + */ +function isValidStatusCode (code) { + if (code >= 1000 && code < 1015) { + return ( + code !== 1004 && // reserved + code !== 1005 && // "MUST NOT be set as a status code" + code !== 1006 // "MUST NOT be set as a status code" + ) + } + + return code >= 3000 && code <= 4999 +} + +/** + * @param {import('./websocket').WebSocket} ws + * @param {string|undefined} reason + */ +function failWebsocketConnection (ws, reason) { + const { [kController]: controller, [kResponse]: response } = ws + + controller.abort() + + if (response?.socket && !response.socket.destroyed) { + response.socket.destroy() + } + + if (reason) { + fireEvent('error', ws, ErrorEvent, { + error: new Error(reason) + }) + } +} + +module.exports = { + isEstablished, + isClosing, + isClosed, + fireEvent, + isValidSubprotocol, + isValidStatusCode, + failWebsocketConnection, + websocketMessageReceived +} + + +/***/ }), + +/***/ 4284: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const { webidl } = __nccwpck_require__(1744) +const { DOMException } = __nccwpck_require__(1037) +const { URLSerializer } = __nccwpck_require__(685) +const { getGlobalOrigin } = __nccwpck_require__(1246) +const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(9188) +const { + kWebSocketURL, + kReadyState, + kController, + kBinaryType, + kResponse, + kSentClose, + kByteParser +} = __nccwpck_require__(7578) +const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(5515) +const { establishWebSocketConnection } = __nccwpck_require__(5354) +const { WebsocketFrameSend } = __nccwpck_require__(5444) +const { ByteParser } = __nccwpck_require__(1688) +const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(3983) +const { getGlobalDispatcher } = __nccwpck_require__(1892) +const { types } = __nccwpck_require__(3837) + +let experimentalWarned = false + +// https://websockets.spec.whatwg.org/#interface-definition +class WebSocket extends EventTarget { + #events = { + open: null, + error: null, + close: null, + message: null + } + + #bufferedAmount = 0 + #protocol = '' + #extensions = '' + + /** + * @param {string} url + * @param {string|string[]} protocols + */ + constructor (url, protocols = []) { + super() + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' }) + + if (!experimentalWarned) { + experimentalWarned = true + process.emitWarning('WebSockets are experimental, expect them to change at any time.', { + code: 'UNDICI-WS' + }) + } + + const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols) + + url = webidl.converters.USVString(url) + protocols = options.protocols + + // 1. Let baseURL be this's relevant settings object's API base URL. + const baseURL = getGlobalOrigin() + + // 1. Let urlRecord be the result of applying the URL parser to url with baseURL. + let urlRecord + + try { + urlRecord = new URL(url, baseURL) + } catch (e) { + // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException. + throw new DOMException(e, 'SyntaxError') + } + + // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws". + if (urlRecord.protocol === 'http:') { + urlRecord.protocol = 'ws:' + } else if (urlRecord.protocol === 'https:') { + // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss". + urlRecord.protocol = 'wss:' + } + + // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException. + if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') { + throw new DOMException( + `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`, + 'SyntaxError' + ) + } + + // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError" + // DOMException. + if (urlRecord.hash || urlRecord.href.endsWith('#')) { + throw new DOMException('Got fragment', 'SyntaxError') + } + + // 8. If protocols is a string, set protocols to a sequence consisting + // of just that string. + if (typeof protocols === 'string') { + protocols = [protocols] + } + + // 9. If any of the values in protocols occur more than once or otherwise + // fail to match the requirements for elements that comprise the value + // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket + // protocol, then throw a "SyntaxError" DOMException. + if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) { + throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError') + } + + // 10. Set this's url to urlRecord. + this[kWebSocketURL] = new URL(urlRecord.href) + + // 11. Let client be this's relevant settings object. + + // 12. Run this step in parallel: + + // 1. Establish a WebSocket connection given urlRecord, protocols, + // and client. + this[kController] = establishWebSocketConnection( + urlRecord, + protocols, + this, + (response) => this.#onConnectionEstablished(response), + options + ) + + // Each WebSocket object has an associated ready state, which is a + // number representing the state of the connection. Initially it must + // be CONNECTING (0). + this[kReadyState] = WebSocket.CONNECTING + + // The extensions attribute must initially return the empty string. + + // The protocol attribute must initially return the empty string. + + // Each WebSocket object has an associated binary type, which is a + // BinaryType. Initially it must be "blob". + this[kBinaryType] = 'blob' + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-close + * @param {number|undefined} code + * @param {string|undefined} reason + */ + close (code = undefined, reason = undefined) { + webidl.brandCheck(this, WebSocket) + + if (code !== undefined) { + code = webidl.converters['unsigned short'](code, { clamp: true }) + } + + if (reason !== undefined) { + reason = webidl.converters.USVString(reason) + } + + // 1. If code is present, but is neither an integer equal to 1000 nor an + // integer in the range 3000 to 4999, inclusive, throw an + // "InvalidAccessError" DOMException. + if (code !== undefined) { + if (code !== 1000 && (code < 3000 || code > 4999)) { + throw new DOMException('invalid code', 'InvalidAccessError') + } + } + + let reasonByteLength = 0 + + // 2. If reason is present, then run these substeps: + if (reason !== undefined) { + // 1. Let reasonBytes be the result of encoding reason. + // 2. If reasonBytes is longer than 123 bytes, then throw a + // "SyntaxError" DOMException. + reasonByteLength = Buffer.byteLength(reason) + + if (reasonByteLength > 123) { + throw new DOMException( + `Reason must be less than 123 bytes; received ${reasonByteLength}`, + 'SyntaxError' + ) + } + } + + // 3. Run the first matching steps from the following list: + if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) { + // If this's ready state is CLOSING (2) or CLOSED (3) + // Do nothing. + } else if (!isEstablished(this)) { + // If the WebSocket connection is not yet established + // Fail the WebSocket connection and set this's ready state + // to CLOSING (2). + failWebsocketConnection(this, 'Connection was closed before it was established.') + this[kReadyState] = WebSocket.CLOSING + } else if (!isClosing(this)) { + // If the WebSocket closing handshake has not yet been started + // Start the WebSocket closing handshake and set this's ready + // state to CLOSING (2). + // - If neither code nor reason is present, the WebSocket Close + // message must not have a body. + // - If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + // - If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + + const frame = new WebsocketFrameSend() + + // If neither code nor reason is present, the WebSocket Close + // message must not have a body. + + // If code is present, then the status code to use in the + // WebSocket Close message must be the integer given by code. + if (code !== undefined && reason === undefined) { + frame.frameData = Buffer.allocUnsafe(2) + frame.frameData.writeUInt16BE(code, 0) + } else if (code !== undefined && reason !== undefined) { + // If reason is also present, then reasonBytes must be + // provided in the Close message after the status code. + frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength) + frame.frameData.writeUInt16BE(code, 0) + // the body MAY contain UTF-8-encoded data with value /reason/ + frame.frameData.write(reason, 2, 'utf-8') + } else { + frame.frameData = emptyBuffer + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + socket.write(frame.createFrame(opcodes.CLOSE), (err) => { + if (!err) { + this[kSentClose] = true + } + }) + + // Upon either sending or receiving a Close control frame, it is said + // that _The WebSocket Closing Handshake is Started_ and that the + // WebSocket connection is in the CLOSING state. + this[kReadyState] = states.CLOSING + } else { + // Otherwise + // Set this's ready state to CLOSING (2). + this[kReadyState] = WebSocket.CLOSING + } + } + + /** + * @see https://websockets.spec.whatwg.org/#dom-websocket-send + * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data + */ + send (data) { + webidl.brandCheck(this, WebSocket) + + webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' }) + + data = webidl.converters.WebSocketSendData(data) + + // 1. If this's ready state is CONNECTING, then throw an + // "InvalidStateError" DOMException. + if (this[kReadyState] === WebSocket.CONNECTING) { + throw new DOMException('Sent before connected.', 'InvalidStateError') + } + + // 2. Run the appropriate set of steps from the following list: + // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1 + // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2 + + if (!isEstablished(this) || isClosing(this)) { + return + } + + /** @type {import('stream').Duplex} */ + const socket = this[kResponse].socket + + // If data is a string + if (typeof data === 'string') { + // If the WebSocket connection is established and the WebSocket + // closing handshake has not yet started, then the user agent + // must send a WebSocket Message comprised of the data argument + // using a text frame opcode; if the data cannot be sent, e.g. + // because it would need to be buffered but the buffer is full, + // the user agent must flag the WebSocket as full and then close + // the WebSocket connection. Any invocation of this method with a + // string argument that does not throw an exception must increase + // the bufferedAmount attribute by the number of bytes needed to + // express the argument as UTF-8. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.TEXT) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (types.isArrayBuffer(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need + // to be buffered but the buffer is full, the user agent must flag + // the WebSocket as full and then close the WebSocket connection. + // The data to be sent is the data stored in the buffer described + // by the ArrayBuffer object. Any invocation of this method with an + // ArrayBuffer argument that does not throw an exception must + // increase the bufferedAmount attribute by the length of the + // ArrayBuffer in bytes. + + const value = Buffer.from(data) + const frame = new WebsocketFrameSend(value) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + } else if (ArrayBuffer.isView(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The + // data to be sent is the data stored in the section of the buffer + // described by the ArrayBuffer object that data references. Any + // invocation of this method with this kind of argument that does + // not throw an exception must increase the bufferedAmount attribute + // by the length of data’s buffer in bytes. + + const ab = Buffer.from(data, data.byteOffset, data.byteLength) + + const frame = new WebsocketFrameSend(ab) + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += ab.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= ab.byteLength + }) + } else if (isBlobLike(data)) { + // If the WebSocket connection is established, and the WebSocket + // closing handshake has not yet started, then the user agent must + // send a WebSocket Message comprised of data using a binary frame + // opcode; if the data cannot be sent, e.g. because it would need to + // be buffered but the buffer is full, the user agent must flag the + // WebSocket as full and then close the WebSocket connection. The data + // to be sent is the raw data represented by the Blob object. Any + // invocation of this method with a Blob argument that does not throw + // an exception must increase the bufferedAmount attribute by the size + // of the Blob object’s raw data, in bytes. + + const frame = new WebsocketFrameSend() + + data.arrayBuffer().then((ab) => { + const value = Buffer.from(ab) + frame.frameData = value + const buffer = frame.createFrame(opcodes.BINARY) + + this.#bufferedAmount += value.byteLength + socket.write(buffer, () => { + this.#bufferedAmount -= value.byteLength + }) + }) + } + } + + get readyState () { + webidl.brandCheck(this, WebSocket) + + // The readyState getter steps are to return this's ready state. + return this[kReadyState] + } + + get bufferedAmount () { + webidl.brandCheck(this, WebSocket) + + return this.#bufferedAmount + } + + get url () { + webidl.brandCheck(this, WebSocket) + + // The url getter steps are to return this's url, serialized. + return URLSerializer(this[kWebSocketURL]) + } + + get extensions () { + webidl.brandCheck(this, WebSocket) + + return this.#extensions + } + + get protocol () { + webidl.brandCheck(this, WebSocket) + + return this.#protocol + } + + get onopen () { + webidl.brandCheck(this, WebSocket) + + return this.#events.open + } + + set onopen (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.open) { + this.removeEventListener('open', this.#events.open) + } + + if (typeof fn === 'function') { + this.#events.open = fn + this.addEventListener('open', fn) + } else { + this.#events.open = null + } + } + + get onerror () { + webidl.brandCheck(this, WebSocket) + + return this.#events.error + } + + set onerror (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.error) { + this.removeEventListener('error', this.#events.error) + } + + if (typeof fn === 'function') { + this.#events.error = fn + this.addEventListener('error', fn) + } else { + this.#events.error = null + } + } + + get onclose () { + webidl.brandCheck(this, WebSocket) + + return this.#events.close + } + + set onclose (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.close) { + this.removeEventListener('close', this.#events.close) + } + + if (typeof fn === 'function') { + this.#events.close = fn + this.addEventListener('close', fn) + } else { + this.#events.close = null + } + } + + get onmessage () { + webidl.brandCheck(this, WebSocket) + + return this.#events.message + } + + set onmessage (fn) { + webidl.brandCheck(this, WebSocket) + + if (this.#events.message) { + this.removeEventListener('message', this.#events.message) + } + + if (typeof fn === 'function') { + this.#events.message = fn + this.addEventListener('message', fn) + } else { + this.#events.message = null + } + } + + get binaryType () { + webidl.brandCheck(this, WebSocket) + + return this[kBinaryType] + } + + set binaryType (type) { + webidl.brandCheck(this, WebSocket) + + if (type !== 'blob' && type !== 'arraybuffer') { + this[kBinaryType] = 'blob' + } else { + this[kBinaryType] = type + } + } + + /** + * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol + */ + #onConnectionEstablished (response) { + // processResponse is called when the "response’s header list has been received and initialized." + // once this happens, the connection is open + this[kResponse] = response + + const parser = new ByteParser(this) + parser.on('drain', function onParserDrain () { + this.ws[kResponse].socket.resume() + }) + + response.socket.ws = this + this[kByteParser] = parser + + // 1. Change the ready state to OPEN (1). + this[kReadyState] = states.OPEN + + // 2. Change the extensions attribute’s value to the extensions in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1 + const extensions = response.headersList.get('sec-websocket-extensions') + + if (extensions !== null) { + this.#extensions = extensions + } + + // 3. Change the protocol attribute’s value to the subprotocol in use, if + // it is not the null value. + // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9 + const protocol = response.headersList.get('sec-websocket-protocol') + + if (protocol !== null) { + this.#protocol = protocol + } + + // 4. Fire an event named open at the WebSocket object. + fireEvent('open', this) + } +} + +// https://websockets.spec.whatwg.org/#dom-websocket-connecting +WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING +// https://websockets.spec.whatwg.org/#dom-websocket-open +WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN +// https://websockets.spec.whatwg.org/#dom-websocket-closing +WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING +// https://websockets.spec.whatwg.org/#dom-websocket-closed +WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED + +Object.defineProperties(WebSocket.prototype, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors, + url: kEnumerableProperty, + readyState: kEnumerableProperty, + bufferedAmount: kEnumerableProperty, + onopen: kEnumerableProperty, + onerror: kEnumerableProperty, + onclose: kEnumerableProperty, + close: kEnumerableProperty, + onmessage: kEnumerableProperty, + binaryType: kEnumerableProperty, + send: kEnumerableProperty, + extensions: kEnumerableProperty, + protocol: kEnumerableProperty, + [Symbol.toStringTag]: { + value: 'WebSocket', + writable: false, + enumerable: false, + configurable: true + } +}) + +Object.defineProperties(WebSocket, { + CONNECTING: staticPropertyDescriptors, + OPEN: staticPropertyDescriptors, + CLOSING: staticPropertyDescriptors, + CLOSED: staticPropertyDescriptors +}) + +webidl.converters['sequence'] = webidl.sequenceConverter( + webidl.converters.DOMString +) + +webidl.converters['DOMString or sequence'] = function (V) { + if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) { + return webidl.converters['sequence'](V) + } + + return webidl.converters.DOMString(V) +} + +// This implements the propsal made in https://github.com/whatwg/websockets/issues/42 +webidl.converters.WebSocketInit = webidl.dictionaryConverter([ + { + key: 'protocols', + converter: webidl.converters['DOMString or sequence'], + get defaultValue () { + return [] + } + }, + { + key: 'dispatcher', + converter: (V) => V, + get defaultValue () { + return getGlobalDispatcher() + } + }, + { + key: 'headers', + converter: webidl.nullableConverter(webidl.converters.HeadersInit) + } +]) + +webidl.converters['DOMString or sequence or WebSocketInit'] = function (V) { + if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) { + return webidl.converters.WebSocketInit(V) + } + + return { protocols: webidl.converters['DOMString or sequence'](V) } +} + +webidl.converters.WebSocketSendData = function (V) { + if (webidl.util.Type(V) === 'Object') { + if (isBlobLike(V)) { + return webidl.converters.Blob(V, { strict: false }) + } + + if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) { + return webidl.converters.BufferSource(V) + } + } + + return webidl.converters.USVString(V) +} + +module.exports = { + WebSocket +} + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && process.version !== undefined) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 2707: +/***/ ((module) => { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([ + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]] + ]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), + +/***/ 5859: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. + +var crypto = __nccwpck_require__(6113); + +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; + + +/***/ }), + +/***/ 824: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var rng = __nccwpck_require__(5859); +var bytesToUuid = __nccwpck_require__(2707); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), + +/***/ 2940: +/***/ ((module) => { + +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + + +/***/ }), + +/***/ 7554: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.updateChecksums = void 0; +const fs_1 = __nccwpck_require__(7147); +const tc = __importStar(__nccwpck_require__(7784)); +function updateChecksums(filePath, downloadUrls) { + return __awaiter(this, void 0, void 0, function* () { + yield fs_1.promises.rm(filePath); + yield fs_1.promises.appendFile(filePath, "// AUTOGENERATED_DO_NOT_EDIT\nexport const KNOWN_CHECKSUMS: {[key: string]: string} = {\n"); + let firstLine = true; + for (const downloadUrl of downloadUrls) { + const content = yield downloadAssetContent(downloadUrl); + const checksum = content.split(" ")[0].trim(); + const key = getKey(downloadUrl); + if (!firstLine) { + yield fs_1.promises.appendFile(filePath, ",\n"); + } + yield fs_1.promises.appendFile(filePath, ` '${key}':\n '${checksum}'`); + firstLine = false; + } + yield fs_1.promises.appendFile(filePath, "}\n"); + }); +} +exports.updateChecksums = updateChecksums; +function getKey(downloadUrl) { + // https://github.com/astral-sh/uv/releases/download/0.3.2/uv-aarch64-apple-darwin.tar.gz.sha256 + const parts = downloadUrl.split("/"); + const fileName = parts[parts.length - 1]; + const name = fileName.split(".")[0].split("uv-")[1]; + const version = parts[parts.length - 2]; + return `${name}-${version}`; +} +function downloadAssetContent(downloadUrl) { + return __awaiter(this, void 0, void 0, function* () { + const downloadPath = yield tc.downloadTool(downloadUrl); + const content = yield fs_1.promises.readFile(downloadPath, "utf8"); + return content; + }); +} + + +/***/ }), + +/***/ 1265: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +const github = __importStar(__nccwpck_require__(5438)); +const core = __importStar(__nccwpck_require__(2186)); +const utils_1 = __nccwpck_require__(239); +const semver = __importStar(__nccwpck_require__(5911)); +const update_known_checksums_1 = __nccwpck_require__(7554); +function run() { + return __awaiter(this, void 0, void 0, function* () { + const checksumFilePath = process.argv.slice(2)[0]; + const github_token = process.argv.slice(2)[1]; + const octokit = github.getOctokit(github_token); + const response = yield octokit.paginate(octokit.rest.repos.listReleases, { + owner: utils_1.OWNER, + repo: utils_1.REPO, + }); + const downloadUrls = response.flatMap((release) => release.assets + .filter((asset) => asset.name.endsWith(".sha256")) + .map((asset) => asset.browser_download_url)); + yield (0, update_known_checksums_1.updateChecksums)(checksumFilePath, downloadUrls); + const latestVersion = response + .map((release) => release.tag_name) + .sort(semver.rcompare)[0]; + core.setOutput("latest-version", latestVersion); + }); +} +run(); + + +/***/ }), + +/***/ 239: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TOOL_CACHE_NAME = exports.OWNER = exports.REPO = void 0; +exports.REPO = "uv"; +exports.OWNER = "astral-sh"; +exports.TOOL_CACHE_NAME = "uv"; + + +/***/ }), + +/***/ 9491: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 852: +/***/ ((module) => { + +"use strict"; +module.exports = require("async_hooks"); + +/***/ }), + +/***/ 4300: +/***/ ((module) => { + +"use strict"; +module.exports = require("buffer"); + +/***/ }), + +/***/ 2081: +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process"); + +/***/ }), + +/***/ 6206: +/***/ ((module) => { + +"use strict"; +module.exports = require("console"); + +/***/ }), + +/***/ 6113: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 7643: +/***/ ((module) => { + +"use strict"; +module.exports = require("diagnostics_channel"); + +/***/ }), + +/***/ 2361: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 7147: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 3685: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 5158: +/***/ ((module) => { + +"use strict"; +module.exports = require("http2"); + +/***/ }), + +/***/ 5687: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 1808: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 5673: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:events"); + +/***/ }), + +/***/ 4492: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:stream"); + +/***/ }), + +/***/ 7261: +/***/ ((module) => { + +"use strict"; +module.exports = require("node:util"); + +/***/ }), + +/***/ 2037: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 1017: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 4074: +/***/ ((module) => { + +"use strict"; +module.exports = require("perf_hooks"); + +/***/ }), + +/***/ 3477: +/***/ ((module) => { + +"use strict"; +module.exports = require("querystring"); + +/***/ }), + +/***/ 2781: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 5356: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream/web"); + +/***/ }), + +/***/ 1576: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 9512: +/***/ ((module) => { + +"use strict"; +module.exports = require("timers"); + +/***/ }), + +/***/ 4404: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 7310: +/***/ ((module) => { + +"use strict"; +module.exports = require("url"); + +/***/ }), + +/***/ 3837: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 9830: +/***/ ((module) => { + +"use strict"; +module.exports = require("util/types"); + +/***/ }), + +/***/ 1267: +/***/ ((module) => { + +"use strict"; +module.exports = require("worker_threads"); + +/***/ }), + +/***/ 9796: +/***/ ((module) => { + +"use strict"; +module.exports = require("zlib"); + +/***/ }), + +/***/ 2960: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(4492).Writable) +const inherits = (__nccwpck_require__(7261).inherits) + +const StreamSearch = __nccwpck_require__(1142) + +const PartStream = __nccwpck_require__(1620) +const HeaderParser = __nccwpck_require__(2032) + +const DASH = 45 +const B_ONEDASH = Buffer.from('-') +const B_CRLF = Buffer.from('\r\n') +const EMPTY_FN = function () {} + +function Dicer (cfg) { + if (!(this instanceof Dicer)) { return new Dicer(cfg) } + WritableStream.call(this, cfg) + + if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') } + + if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined } + + this._headerFirst = cfg.headerFirst + + this._dashes = 0 + this._parts = 0 + this._finished = false + this._realFinish = false + this._isPreamble = true + this._justMatched = false + this._firstWrite = true + this._inHeader = true + this._part = undefined + this._cb = undefined + this._ignoreData = false + this._partOpts = { highWaterMark: cfg.partHwm } + this._pause = false + + const self = this + this._hparser = new HeaderParser(cfg) + this._hparser.on('header', function (header) { + self._inHeader = false + self._part.emit('header', header) + }) +} +inherits(Dicer, WritableStream) + +Dicer.prototype.emit = function (ev) { + if (ev === 'finish' && !this._realFinish) { + if (!this._finished) { + const self = this + process.nextTick(function () { + self.emit('error', new Error('Unexpected end of multipart data')) + if (self._part && !self._ignoreData) { + const type = (self._isPreamble ? 'Preamble' : 'Part') + self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data')) + self._part.push(null) + process.nextTick(function () { + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + return + } + self._realFinish = true + self.emit('finish') + self._realFinish = false + }) + } + } else { WritableStream.prototype.emit.apply(this, arguments) } +} + +Dicer.prototype._write = function (data, encoding, cb) { + // ignore unexpected data (e.g. extra trailer data after finished) + if (!this._hparser && !this._bparser) { return cb() } + + if (this._headerFirst && this._isPreamble) { + if (!this._part) { + this._part = new PartStream(this._partOpts) + if (this._events.preamble) { this.emit('preamble', this._part) } else { this._ignore() } + } + const r = this._hparser.push(data) + if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() } + } + + // allows for "easier" testing + if (this._firstWrite) { + this._bparser.push(B_CRLF) + this._firstWrite = false + } + + this._bparser.push(data) + + if (this._pause) { this._cb = cb } else { cb() } +} + +Dicer.prototype.reset = function () { + this._part = undefined + this._bparser = undefined + this._hparser = undefined +} + +Dicer.prototype.setBoundary = function (boundary) { + const self = this + this._bparser = new StreamSearch('\r\n--' + boundary) + this._bparser.on('info', function (isMatch, data, start, end) { + self._oninfo(isMatch, data, start, end) + }) +} + +Dicer.prototype._ignore = function () { + if (this._part && !this._ignoreData) { + this._ignoreData = true + this._part.on('error', EMPTY_FN) + // we must perform some kind of read on the stream even though we are + // ignoring the data, otherwise node's Readable stream will not emit 'end' + // after pushing null to the stream + this._part.resume() + } +} + +Dicer.prototype._oninfo = function (isMatch, data, start, end) { + let buf; const self = this; let i = 0; let r; let shouldWriteMore = true + + if (!this._part && this._justMatched && data) { + while (this._dashes < 2 && (start + i) < end) { + if (data[start + i] === DASH) { + ++i + ++this._dashes + } else { + if (this._dashes) { buf = B_ONEDASH } + this._dashes = 0 + break + } + } + if (this._dashes === 2) { + if ((start + i) < end && this._events.trailer) { this.emit('trailer', data.slice(start + i, end)) } + this.reset() + this._finished = true + // no more parts will be added + if (self._parts === 0) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } + } + if (this._dashes) { return } + } + if (this._justMatched) { this._justMatched = false } + if (!this._part) { + this._part = new PartStream(this._partOpts) + this._part._read = function (n) { + self._unpause() + } + if (this._isPreamble && this._events.preamble) { this.emit('preamble', this._part) } else if (this._isPreamble !== true && this._events.part) { this.emit('part', this._part) } else { this._ignore() } + if (!this._isPreamble) { this._inHeader = true } + } + if (data && start < end && !this._ignoreData) { + if (this._isPreamble || !this._inHeader) { + if (buf) { shouldWriteMore = this._part.push(buf) } + shouldWriteMore = this._part.push(data.slice(start, end)) + if (!shouldWriteMore) { this._pause = true } + } else if (!this._isPreamble && this._inHeader) { + if (buf) { this._hparser.push(buf) } + r = this._hparser.push(data.slice(start, end)) + if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) } + } + } + if (isMatch) { + this._hparser.reset() + if (this._isPreamble) { this._isPreamble = false } else { + if (start !== end) { + ++this._parts + this._part.on('end', function () { + if (--self._parts === 0) { + if (self._finished) { + self._realFinish = true + self.emit('finish') + self._realFinish = false + } else { + self._unpause() + } + } + }) + } + } + this._part.push(null) + this._part = undefined + this._ignoreData = false + this._justMatched = true + this._dashes = 0 + } +} + +Dicer.prototype._unpause = function () { + if (!this._pause) { return } + + this._pause = false + if (this._cb) { + const cb = this._cb + this._cb = undefined + cb() + } +} + +module.exports = Dicer + + +/***/ }), + +/***/ 2032: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const EventEmitter = (__nccwpck_require__(5673).EventEmitter) +const inherits = (__nccwpck_require__(7261).inherits) +const getLimit = __nccwpck_require__(1467) + +const StreamSearch = __nccwpck_require__(1142) + +const B_DCRLF = Buffer.from('\r\n\r\n') +const RE_CRLF = /\r\n/g +const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex + +function HeaderParser (cfg) { + EventEmitter.call(this) + + cfg = cfg || {} + const self = this + this.nread = 0 + this.maxed = false + this.npairs = 0 + this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000) + this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024) + this.buffer = '' + this.header = {} + this.finished = false + this.ss = new StreamSearch(B_DCRLF) + this.ss.on('info', function (isMatch, data, start, end) { + if (data && !self.maxed) { + if (self.nread + end - start >= self.maxHeaderSize) { + end = self.maxHeaderSize - self.nread + start + self.nread = self.maxHeaderSize + self.maxed = true + } else { self.nread += (end - start) } + + self.buffer += data.toString('binary', start, end) + } + if (isMatch) { self._finish() } + }) +} +inherits(HeaderParser, EventEmitter) + +HeaderParser.prototype.push = function (data) { + const r = this.ss.push(data) + if (this.finished) { return r } +} + +HeaderParser.prototype.reset = function () { + this.finished = false + this.buffer = '' + this.header = {} + this.ss.reset() +} + +HeaderParser.prototype._finish = function () { + if (this.buffer) { this._parseHeader() } + this.ss.matches = this.ss.maxMatches + const header = this.header + this.header = {} + this.buffer = '' + this.finished = true + this.nread = this.npairs = 0 + this.maxed = false + this.emit('header', header) +} + +HeaderParser.prototype._parseHeader = function () { + if (this.npairs === this.maxHeaderPairs) { return } + + const lines = this.buffer.split(RE_CRLF) + const len = lines.length + let m, h + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (lines[i].length === 0) { continue } + if (lines[i][0] === '\t' || lines[i][0] === ' ') { + // folded header content + // RFC2822 says to just remove the CRLF and not the whitespace following + // it, so we follow the RFC and include the leading whitespace ... + if (h) { + this.header[h][this.header[h].length - 1] += lines[i] + continue + } + } + + const posColon = lines[i].indexOf(':') + if ( + posColon === -1 || + posColon === 0 + ) { + return + } + m = RE_HDR.exec(lines[i]) + h = m[1].toLowerCase() + this.header[h] = this.header[h] || [] + this.header[h].push((m[2] || '')) + if (++this.npairs === this.maxHeaderPairs) { break } + } +} + +module.exports = HeaderParser + + +/***/ }), + +/***/ 1620: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const inherits = (__nccwpck_require__(7261).inherits) +const ReadableStream = (__nccwpck_require__(4492).Readable) + +function PartStream (opts) { + ReadableStream.call(this, opts) +} +inherits(PartStream, ReadableStream) + +PartStream.prototype._read = function (n) {} + +module.exports = PartStream + + +/***/ }), + +/***/ 1142: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +/** + * Copyright Brian White. All rights reserved. + * + * @see https://github.com/mscdex/streamsearch + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool + */ +const EventEmitter = (__nccwpck_require__(5673).EventEmitter) +const inherits = (__nccwpck_require__(7261).inherits) + +function SBMH (needle) { + if (typeof needle === 'string') { + needle = Buffer.from(needle) + } + + if (!Buffer.isBuffer(needle)) { + throw new TypeError('The needle has to be a String or a Buffer.') + } + + const needleLength = needle.length + + if (needleLength === 0) { + throw new Error('The needle cannot be an empty String/Buffer.') + } + + if (needleLength > 256) { + throw new Error('The needle cannot have a length bigger than 256.') + } + + this.maxMatches = Infinity + this.matches = 0 + + this._occ = new Array(256) + .fill(needleLength) // Initialize occurrence table. + this._lookbehind_size = 0 + this._needle = needle + this._bufpos = 0 + + this._lookbehind = Buffer.alloc(needleLength) + + // Populate occurrence table with analysis of the needle, + // ignoring last letter. + for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLength - 1 - i + } +} +inherits(SBMH, EventEmitter) + +SBMH.prototype.reset = function () { + this._lookbehind_size = 0 + this.matches = 0 + this._bufpos = 0 +} + +SBMH.prototype.push = function (chunk, pos) { + if (!Buffer.isBuffer(chunk)) { + chunk = Buffer.from(chunk, 'binary') + } + const chlen = chunk.length + this._bufpos = pos || 0 + let r + while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) } + return r +} + +SBMH.prototype._sbmh_feed = function (data) { + const len = data.length + const needle = this._needle + const needleLength = needle.length + const lastNeedleChar = needle[needleLength - 1] + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehind_size - 2] + let pos = -this._lookbehind_size + let ch + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= len - needleLength) { + ch = this._sbmh_lookup_char(data, pos + needleLength - 1) + + if ( + ch === lastNeedleChar && + this._sbmh_memcmp(data, pos, needleLength - 1) + ) { + this._lookbehind_size = 0 + ++this.matches + this.emit('info', true) + + return (this._bufpos = pos + needleLength) + } + pos += this._occ[ch] + } + + // No match. + + if (pos < 0) { + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos } + } + + if (pos >= 0) { + // Discard lookbehind buffer. + this.emit('info', false, this._lookbehind, 0, this._lookbehind_size) + this._lookbehind_size = 0 + } else { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = this._lookbehind_size + pos + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + this.emit('info', false, this._lookbehind, 0, bytesToCutOff) + } + + this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff, + this._lookbehind_size - bytesToCutOff) + this._lookbehind_size -= bytesToCutOff + + data.copy(this._lookbehind, this._lookbehind_size) + this._lookbehind_size += len + + this._bufpos = len + return len + } + } + + pos += (pos >= 0) * this._bufpos + + // Lookbehind buffer is now empty. We only need to check if the + // needle is in the haystack. + if (data.indexOf(needle, pos) !== -1) { + pos = data.indexOf(needle, pos) + ++this.matches + if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) } + + return (this._bufpos = pos + needleLength) + } else { + pos = len - needleLength + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while ( + pos < len && + ( + data[pos] !== needle[0] || + ( + (Buffer.compare( + data.subarray(pos, pos + len - pos), + needle.subarray(0, len - pos) + ) !== 0) + ) + ) + ) { + ++pos + } + if (pos < len) { + data.copy(this._lookbehind, 0, pos, pos + (len - pos)) + this._lookbehind_size = len - pos + } + + // Everything until pos is guaranteed not to contain needle data. + if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) } + + this._bufpos = len + return len +} + +SBMH.prototype._sbmh_lookup_char = function (data, pos) { + return (pos < 0) + ? this._lookbehind[this._lookbehind_size + pos] + : data[pos] +} + +SBMH.prototype._sbmh_memcmp = function (data, pos, len) { + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false } + } + return true +} + +module.exports = SBMH + + +/***/ }), + +/***/ 727: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const WritableStream = (__nccwpck_require__(4492).Writable) +const { inherits } = __nccwpck_require__(7261) +const Dicer = __nccwpck_require__(2960) + +const MultipartParser = __nccwpck_require__(2183) +const UrlencodedParser = __nccwpck_require__(8306) +const parseParams = __nccwpck_require__(1854) + +function Busboy (opts) { + if (!(this instanceof Busboy)) { return new Busboy(opts) } + + if (typeof opts !== 'object') { + throw new TypeError('Busboy expected an options-Object.') + } + if (typeof opts.headers !== 'object') { + throw new TypeError('Busboy expected an options-Object with headers-attribute.') + } + if (typeof opts.headers['content-type'] !== 'string') { + throw new TypeError('Missing Content-Type-header.') + } + + const { + headers, + ...streamOptions + } = opts + + this.opts = { + autoDestroy: false, + ...streamOptions + } + WritableStream.call(this, this.opts) + + this._done = false + this._parser = this.getParserByHeaders(headers) + this._finished = false +} +inherits(Busboy, WritableStream) + +Busboy.prototype.emit = function (ev) { + if (ev === 'finish') { + if (!this._done) { + this._parser?.end() + return + } else if (this._finished) { + return + } + this._finished = true + } + WritableStream.prototype.emit.apply(this, arguments) +} + +Busboy.prototype.getParserByHeaders = function (headers) { + const parsed = parseParams(headers['content-type']) + + const cfg = { + defCharset: this.opts.defCharset, + fileHwm: this.opts.fileHwm, + headers, + highWaterMark: this.opts.highWaterMark, + isPartAFile: this.opts.isPartAFile, + limits: this.opts.limits, + parsedConType: parsed, + preservePath: this.opts.preservePath + } + + if (MultipartParser.detect.test(parsed[0])) { + return new MultipartParser(this, cfg) + } + if (UrlencodedParser.detect.test(parsed[0])) { + return new UrlencodedParser(this, cfg) + } + throw new Error('Unsupported Content-Type.') +} + +Busboy.prototype._write = function (chunk, encoding, cb) { + this._parser.write(chunk, cb) +} + +module.exports = Busboy +module.exports["default"] = Busboy +module.exports.Busboy = Busboy + +module.exports.Dicer = Dicer + + +/***/ }), + +/***/ 2183: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +// TODO: +// * support 1 nested multipart level +// (see second multipart example here: +// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data) +// * support limits.fieldNameSize +// -- this will require modifications to utils.parseParams + +const { Readable } = __nccwpck_require__(4492) +const { inherits } = __nccwpck_require__(7261) + +const Dicer = __nccwpck_require__(2960) + +const parseParams = __nccwpck_require__(1854) +const decodeText = __nccwpck_require__(4619) +const basename = __nccwpck_require__(8647) +const getLimit = __nccwpck_require__(1467) + +const RE_BOUNDARY = /^boundary$/i +const RE_FIELD = /^form-data$/i +const RE_CHARSET = /^charset$/i +const RE_FILENAME = /^filename$/i +const RE_NAME = /^name$/i + +Multipart.detect = /^multipart\/form-data/i +function Multipart (boy, cfg) { + let i + let len + const self = this + let boundary + const limits = cfg.limits + const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined)) + const parsedConType = cfg.parsedConType || [] + const defCharset = cfg.defCharset || 'utf8' + const preservePath = cfg.preservePath + const fileOpts = { highWaterMark: cfg.fileHwm } + + for (i = 0, len = parsedConType.length; i < len; ++i) { + if (Array.isArray(parsedConType[i]) && + RE_BOUNDARY.test(parsedConType[i][0])) { + boundary = parsedConType[i][1] + break + } + } + + function checkFinished () { + if (nends === 0 && finished && !boy._done) { + finished = false + self.end() + } + } + + if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') } + + const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + const fileSizeLimit = getLimit(limits, 'fileSize', Infinity) + const filesLimit = getLimit(limits, 'files', Infinity) + const fieldsLimit = getLimit(limits, 'fields', Infinity) + const partsLimit = getLimit(limits, 'parts', Infinity) + const headerPairsLimit = getLimit(limits, 'headerPairs', 2000) + const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024) + + let nfiles = 0 + let nfields = 0 + let nends = 0 + let curFile + let curField + let finished = false + + this._needDrain = false + this._pause = false + this._cb = undefined + this._nparts = 0 + this._boy = boy + + const parserCfg = { + boundary, + maxHeaderPairs: headerPairsLimit, + maxHeaderSize: headerSizeLimit, + partHwm: fileOpts.highWaterMark, + highWaterMark: cfg.highWaterMark + } + + this.parser = new Dicer(parserCfg) + this.parser.on('drain', function () { + self._needDrain = false + if (self._cb && !self._pause) { + const cb = self._cb + self._cb = undefined + cb() + } + }).on('part', function onPart (part) { + if (++self._nparts > partsLimit) { + self.parser.removeListener('part', onPart) + self.parser.on('part', skipPart) + boy.hitPartsLimit = true + boy.emit('partsLimit') + return skipPart(part) + } + + // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let + // us emit 'end' early since we know the part has ended if we are already + // seeing the next part + if (curField) { + const field = curField + field.emit('end') + field.removeAllListeners('end') + } + + part.on('header', function (header) { + let contype + let fieldname + let parsed + let charset + let encoding + let filename + let nsize = 0 + + if (header['content-type']) { + parsed = parseParams(header['content-type'][0]) + if (parsed[0]) { + contype = parsed[0].toLowerCase() + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_CHARSET.test(parsed[i][0])) { + charset = parsed[i][1].toLowerCase() + break + } + } + } + } + + if (contype === undefined) { contype = 'text/plain' } + if (charset === undefined) { charset = defCharset } + + if (header['content-disposition']) { + parsed = parseParams(header['content-disposition'][0]) + if (!RE_FIELD.test(parsed[0])) { return skipPart(part) } + for (i = 0, len = parsed.length; i < len; ++i) { + if (RE_NAME.test(parsed[i][0])) { + fieldname = parsed[i][1] + } else if (RE_FILENAME.test(parsed[i][0])) { + filename = parsed[i][1] + if (!preservePath) { filename = basename(filename) } + } + } + } else { return skipPart(part) } + + if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' } + + let onData, + onEnd + + if (isPartAFile(fieldname, contype, filename)) { + // file/binary field + if (nfiles === filesLimit) { + if (!boy.hitFilesLimit) { + boy.hitFilesLimit = true + boy.emit('filesLimit') + } + return skipPart(part) + } + + ++nfiles + + if (!boy._events.file) { + self.parser._ignore() + return + } + + ++nends + const file = new FileStream(fileOpts) + curFile = file + file.on('end', function () { + --nends + self._pause = false + checkFinished() + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + }) + file._read = function (n) { + if (!self._pause) { return } + self._pause = false + if (self._cb && !self._needDrain) { + const cb = self._cb + self._cb = undefined + cb() + } + } + boy.emit('file', fieldname, file, filename, encoding, contype) + + onData = function (data) { + if ((nsize += data.length) > fileSizeLimit) { + const extralen = fileSizeLimit - nsize + data.length + if (extralen > 0) { file.push(data.slice(0, extralen)) } + file.truncated = true + file.bytesRead = fileSizeLimit + part.removeAllListeners('data') + file.emit('limit') + return + } else if (!file.push(data)) { self._pause = true } + + file.bytesRead = nsize + } + + onEnd = function () { + curFile = undefined + file.push(null) + } + } else { + // non-file field + if (nfields === fieldsLimit) { + if (!boy.hitFieldsLimit) { + boy.hitFieldsLimit = true + boy.emit('fieldsLimit') + } + return skipPart(part) + } + + ++nfields + ++nends + let buffer = '' + let truncated = false + curField = part + + onData = function (data) { + if ((nsize += data.length) > fieldSizeLimit) { + const extralen = (fieldSizeLimit - (nsize - data.length)) + buffer += data.toString('binary', 0, extralen) + truncated = true + part.removeAllListeners('data') + } else { buffer += data.toString('binary') } + } + + onEnd = function () { + curField = undefined + if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) } + boy.emit('field', fieldname, buffer, false, truncated, encoding, contype) + --nends + checkFinished() + } + } + + /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become + broken. Streams2/streams3 is a huge black box of confusion, but + somehow overriding the sync state seems to fix things again (and still + seems to work for previous node versions). + */ + part._readableState.sync = false + + part.on('data', onData) + part.on('end', onEnd) + }).on('error', function (err) { + if (curFile) { curFile.emit('error', err) } + }) + }).on('error', function (err) { + boy.emit('error', err) + }).on('finish', function () { + finished = true + checkFinished() + }) +} + +Multipart.prototype.write = function (chunk, cb) { + const r = this.parser.write(chunk) + if (r && !this._pause) { + cb() + } else { + this._needDrain = !r + this._cb = cb + } +} + +Multipart.prototype.end = function () { + const self = this + + if (self.parser.writable) { + self.parser.end() + } else if (!self._boy._done) { + process.nextTick(function () { + self._boy._done = true + self._boy.emit('finish') + }) + } +} + +function skipPart (part) { + part.resume() +} + +function FileStream (opts) { + Readable.call(this, opts) + + this.bytesRead = 0 + + this.truncated = false +} + +inherits(FileStream, Readable) + +FileStream.prototype._read = function (n) {} + +module.exports = Multipart + + +/***/ }), + +/***/ 8306: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Decoder = __nccwpck_require__(7100) +const decodeText = __nccwpck_require__(4619) +const getLimit = __nccwpck_require__(1467) + +const RE_CHARSET = /^charset$/i + +UrlEncoded.detect = /^application\/x-www-form-urlencoded/i +function UrlEncoded (boy, cfg) { + const limits = cfg.limits + const parsedConType = cfg.parsedConType + this.boy = boy + + this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024) + this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100) + this.fieldsLimit = getLimit(limits, 'fields', Infinity) + + let charset + for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var + if (Array.isArray(parsedConType[i]) && + RE_CHARSET.test(parsedConType[i][0])) { + charset = parsedConType[i][1].toLowerCase() + break + } + } + + if (charset === undefined) { charset = cfg.defCharset || 'utf8' } + + this.decoder = new Decoder() + this.charset = charset + this._fields = 0 + this._state = 'key' + this._checkingBytes = true + this._bytesKey = 0 + this._bytesVal = 0 + this._key = '' + this._val = '' + this._keyTrunc = false + this._valTrunc = false + this._hitLimit = false +} + +UrlEncoded.prototype.write = function (data, cb) { + if (this._fields === this.fieldsLimit) { + if (!this.boy.hitFieldsLimit) { + this.boy.hitFieldsLimit = true + this.boy.emit('fieldsLimit') + } + return cb() + } + + let idxeq; let idxamp; let i; let p = 0; const len = data.length + + while (p < len) { + if (this._state === 'key') { + idxeq = idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x3D/* = */) { + idxeq = i + break + } else if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesKey } + } + + if (idxeq !== undefined) { + // key with assignment + if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) } + this._state = 'val' + + this._hitLimit = false + this._checkingBytes = true + this._val = '' + this._bytesVal = 0 + this._valTrunc = false + this.decoder.reset() + + p = idxeq + 1 + } else if (idxamp !== undefined) { + // key with no assignment + ++this._fields + let key; const keyTrunc = this._keyTrunc + if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key } + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + if (key.length) { + this.boy.emit('field', decodeText(key, 'binary', this.charset), + '', + keyTrunc, + false) + } + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._keyTrunc = true + } + } else { + if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) } + p = len + } + } else { + idxamp = undefined + for (i = p; i < len; ++i) { + if (!this._checkingBytes) { ++p } + if (data[i] === 0x26/* & */) { + idxamp = i + break + } + if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) { + this._hitLimit = true + break + } else if (this._checkingBytes) { ++this._bytesVal } + } + + if (idxamp !== undefined) { + ++this._fields + if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) } + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + this._state = 'key' + + this._hitLimit = false + this._checkingBytes = true + this._key = '' + this._bytesKey = 0 + this._keyTrunc = false + this.decoder.reset() + + p = idxamp + 1 + if (this._fields === this.fieldsLimit) { return cb() } + } else if (this._hitLimit) { + // we may not have hit the actual limit if there are encoded bytes... + if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) } + p = i + if ((this._val === '' && this.fieldSizeLimit === 0) || + (this._bytesVal = this._val.length) === this.fieldSizeLimit) { + // yep, we actually did hit the limit + this._checkingBytes = false + this._valTrunc = true + } + } else { + if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) } + p = len + } + } + } + cb() +} + +UrlEncoded.prototype.end = function () { + if (this.boy._done) { return } + + if (this._state === 'key' && this._key.length > 0) { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + '', + this._keyTrunc, + false) + } else if (this._state === 'val') { + this.boy.emit('field', decodeText(this._key, 'binary', this.charset), + decodeText(this._val, 'binary', this.charset), + this._keyTrunc, + this._valTrunc) + } + this.boy._done = true + this.boy.emit('finish') +} + +module.exports = UrlEncoded + + +/***/ }), + +/***/ 7100: +/***/ ((module) => { + +"use strict"; + + +const RE_PLUS = /\+/g + +const HEX = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +] + +function Decoder () { + this.buffer = undefined +} +Decoder.prototype.write = function (str) { + // Replace '+' with ' ' before decoding + str = str.replace(RE_PLUS, ' ') + let res = '' + let i = 0; let p = 0; const len = str.length + for (; i < len; ++i) { + if (this.buffer !== undefined) { + if (!HEX[str.charCodeAt(i)]) { + res += '%' + this.buffer + this.buffer = undefined + --i // retry character + } else { + this.buffer += str[i] + ++p + if (this.buffer.length === 2) { + res += String.fromCharCode(parseInt(this.buffer, 16)) + this.buffer = undefined + } + } + } else if (str[i] === '%') { + if (i > p) { + res += str.substring(p, i) + p = i + } + this.buffer = '' + ++p + } + } + if (p < len && this.buffer === undefined) { res += str.substring(p) } + return res +} +Decoder.prototype.reset = function () { + this.buffer = undefined +} + +module.exports = Decoder + + +/***/ }), + +/***/ 8647: +/***/ ((module) => { + +"use strict"; + + +module.exports = function basename (path) { + if (typeof path !== 'string') { return '' } + for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1) + return (path === '..' || path === '.' ? '' : path) + } + } + return (path === '..' || path === '.' ? '' : path) +} + + +/***/ }), + +/***/ 4619: +/***/ (function(module) { + +"use strict"; + + +// Node has always utf-8 +const utf8Decoder = new TextDecoder('utf-8') +const textDecoders = new Map([ + ['utf-8', utf8Decoder], + ['utf8', utf8Decoder] +]) + +function getDecoder (charset) { + let lc + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8 + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1 + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le + case 'base64': + return decoders.base64 + default: + if (lc === undefined) { + lc = true + charset = charset.toLowerCase() + continue + } + return decoders.other.bind(charset) + } + } +} + +const decoders = { + utf8: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.utf8Slice(0, data.length) + }, + + latin1: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + return data + } + return data.latin1Slice(0, data.length) + }, + + utf16le: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.ucs2Slice(0, data.length) + }, + + base64: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + return data.base64Slice(0, data.length) + }, + + other: (data, sourceEncoding) => { + if (data.length === 0) { + return '' + } + if (typeof data === 'string') { + data = Buffer.from(data, sourceEncoding) + } + + if (textDecoders.has(this.toString())) { + try { + return textDecoders.get(this).decode(data) + } catch (e) { } + } + return typeof data === 'string' + ? data + : data.toString() + } +} + +function decodeText (text, sourceEncoding, destEncoding) { + if (text) { + return getDecoder(destEncoding)(text, sourceEncoding) + } + return text +} + +module.exports = decodeText + + +/***/ }), + +/***/ 1467: +/***/ ((module) => { + +"use strict"; + + +module.exports = function getLimit (limits, name, defaultLimit) { + if ( + !limits || + limits[name] === undefined || + limits[name] === null + ) { return defaultLimit } + + if ( + typeof limits[name] !== 'number' || + isNaN(limits[name]) + ) { throw new TypeError('Limit ' + name + ' is not a valid number') } + + return limits[name] +} + + +/***/ }), + +/***/ 1854: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/* eslint-disable object-property-newline */ + + +const decodeText = __nccwpck_require__(4619) + +const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g + +const EncodedLookup = { + '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04', + '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09', + '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c', + '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e', + '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12', + '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17', + '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b', + '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d', + '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20', + '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25', + '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a', + '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c', + '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f', + '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33', + '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38', + '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b', + '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e', + '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41', + '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46', + '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a', + '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d', + '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f', + '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54', + '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59', + '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c', + '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e', + '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62', + '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67', + '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b', + '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d', + '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70', + '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75', + '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a', + '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c', + '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f', + '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83', + '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88', + '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b', + '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e', + '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91', + '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96', + '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a', + '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d', + '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f', + '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2', + '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4', + '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7', + '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9', + '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab', + '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac', + '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad', + '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae', + '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0', + '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2', + '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5', + '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7', + '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba', + '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb', + '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc', + '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd', + '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf', + '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0', + '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3', + '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5', + '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8', + '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca', + '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb', + '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc', + '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce', + '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf', + '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1', + '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3', + '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6', + '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8', + '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda', + '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb', + '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd', + '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde', + '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf', + '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1', + '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4', + '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6', + '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9', + '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea', + '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec', + '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed', + '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee', + '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef', + '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2', + '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4', + '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7', + '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9', + '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb', + '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc', + '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd', + '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe', + '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff' +} + +function encodedReplacer (match) { + return EncodedLookup[match] +} + +const STATE_KEY = 0 +const STATE_VALUE = 1 +const STATE_CHARSET = 2 +const STATE_LANG = 3 + +function parseParams (str) { + const res = [] + let state = STATE_KEY + let charset = '' + let inquote = false + let escaping = false + let p = 0 + let tmp = '' + const len = str.length + + for (var i = 0; i < len; ++i) { // eslint-disable-line no-var + const char = str[i] + if (char === '\\' && inquote) { + if (escaping) { escaping = false } else { + escaping = true + continue + } + } else if (char === '"') { + if (!escaping) { + if (inquote) { + inquote = false + state = STATE_KEY + } else { inquote = true } + continue + } else { escaping = false } + } else { + if (escaping && inquote) { tmp += '\\' } + escaping = false + if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") { + if (state === STATE_CHARSET) { + state = STATE_LANG + charset = tmp.substring(1) + } else { state = STATE_VALUE } + tmp = '' + continue + } else if (state === STATE_KEY && + (char === '*' || char === '=') && + res.length) { + state = char === '*' + ? STATE_CHARSET + : STATE_VALUE + res[p] = [tmp, undefined] + tmp = '' + continue + } else if (!inquote && char === ';') { + state = STATE_KEY + if (charset) { + if (tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } + charset = '' + } else if (tmp.length) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp } + tmp = '' + ++p + continue + } else if (!inquote && (char === ' ' || char === '\t')) { continue } + } + tmp += char + } + if (charset && tmp.length) { + tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer), + 'binary', + charset) + } else if (tmp) { + tmp = decodeText(tmp, 'binary', 'utf8') + } + + if (res[p] === undefined) { + if (tmp) { res[p] = tmp } + } else { res[p][1] = tmp } + + return res +} + +module.exports = parseParams + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __nccwpck_require__(1265); +/******/ module.exports = __webpack_exports__; +/******/ +/******/ })() +; \ No newline at end of file diff --git a/package.json b/package.json index 1507c2e..026c84e 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,10 @@ "format": "prettier --write .", "format-check": "prettier --check .", "lint": "eslint src/**/*.ts --fix", - "package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-default-version src/update-default-version.ts", + "package": "ncc build -o dist/setup src/setup-uv.ts && ncc build -o dist/save-cache src/save-cache.ts && ncc build -o dist/update-known-checksums src/update-known-checksums.ts", "test": "jest", "act": "act pull_request -W .github/workflows/test.yml --container-architecture linux/amd64 -s GITHUB_TOKEN=\"$(gh auth token)\"", - "update-default-version": "node dist/update-default-version/index.js src/download/checksum/known-checksums.ts action.yml \"$(gh auth token)\"", + "update-known-checksums": "node dist/update-known-checksums/index.js src/download/checksum/known-checksums.ts \"$(gh auth token)\"", "all": "npm run build && npm run format && npm run lint && npm run package && npm test" }, "repository": { diff --git a/src/update-default-version.ts b/src/update-default-version.ts deleted file mode 100644 index f9addff..0000000 --- a/src/update-default-version.ts +++ /dev/null @@ -1,65 +0,0 @@ -import * as github from "@actions/github"; -import * as core from "@actions/core"; - -import { OWNER, REPO } from "./utils/utils"; -import { createReadStream, promises as fs } from "fs"; -import * as readline from "readline"; -import * as semver from "semver"; - -import { updateChecksums } from "./download/checksum/update-known-checksums"; - -async function run(): Promise { - const checksumFilePath = process.argv.slice(2)[0]; - const defaultVersionFilePath = process.argv.slice(2)[1]; - const github_token = process.argv.slice(2)[2]; - - const octokit = github.getOctokit(github_token); - - const response = await octokit.paginate(octokit.rest.repos.listReleases, { - owner: OWNER, - repo: REPO, - }); - const downloadUrls: string[] = response.flatMap((release) => - release.assets - .filter((asset) => asset.name.endsWith(".sha256")) - .map((asset) => asset.browser_download_url), - ); - await updateChecksums(checksumFilePath, downloadUrls); - - const latestVersion = response - .map((release) => release.tag_name) - .sort(semver.rcompare)[0]; - core.setOutput("latest-version", latestVersion); - await updateDefaultVersion(defaultVersionFilePath, latestVersion); -} - -async function updateDefaultVersion( - filePath: string, - latestVersion: string, -): Promise { - const fileStream = createReadStream(filePath); - - const rl = readline.createInterface({ - input: fileStream, - }); - - let foundDescription = false; - const lines = []; - - for await (let line of rl) { - if ( - !foundDescription && - line.includes("description: 'The version of uv to install'") - ) { - foundDescription = true; - } else if (foundDescription && line.includes("default: ")) { - line = line.replace(/'[^']*'/, `'${latestVersion}'`); - foundDescription = false; - } - lines.push(line); - } - - await fs.writeFile(filePath, lines.join("\n")); -} - -run(); diff --git a/src/update-known-checksums.ts b/src/update-known-checksums.ts new file mode 100644 index 0000000..9a79e26 --- /dev/null +++ b/src/update-known-checksums.ts @@ -0,0 +1,32 @@ +import * as github from "@actions/github"; +import * as core from "@actions/core"; + +import { OWNER, REPO } from "./utils/utils"; +import * as semver from "semver"; + +import { updateChecksums } from "./download/checksum/update-known-checksums"; + +async function run(): Promise { + const checksumFilePath = process.argv.slice(2)[0]; + const github_token = process.argv.slice(2)[1]; + + const octokit = github.getOctokit(github_token); + + const response = await octokit.paginate(octokit.rest.repos.listReleases, { + owner: OWNER, + repo: REPO, + }); + const downloadUrls: string[] = response.flatMap((release) => + release.assets + .filter((asset) => asset.name.endsWith(".sha256")) + .map((asset) => asset.browser_download_url), + ); + await updateChecksums(checksumFilePath, downloadUrls); + + const latestVersion = response + .map((release) => release.tag_name) + .sort(semver.rcompare)[0]; + core.setOutput("latest-version", latestVersion); +} + +run(); From 902c4a5691cd9282da391c39c8c201b5c3845481 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 09:30:29 -0400 Subject: [PATCH 23/23] Bump typescript from 5.4.5 to 5.5.4 (#30) --- dist/save-cache/index.js | 12 +++++------- dist/setup/index.js | 22 +++++++++------------- dist/update-known-checksums/index.js | 3 +-- package-lock.json | 14 +++++++------- package.json | 2 +- 5 files changed, 23 insertions(+), 30 deletions(-) diff --git a/dist/save-cache/index.js b/dist/save-cache/index.js index 276c53c..e09666f 100644 --- a/dist/save-cache/index.js +++ b/dist/save-cache/index.js @@ -82788,7 +82788,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.restoreCache = exports.STATE_CACHE_MATCHED_KEY = exports.STATE_CACHE_KEY = void 0; +exports.STATE_CACHE_MATCHED_KEY = exports.STATE_CACHE_KEY = void 0; +exports.restoreCache = restoreCache; const cache = __importStar(__nccwpck_require__(7799)); const glob = __importStar(__nccwpck_require__(8090)); const core = __importStar(__nccwpck_require__(2186)); @@ -82816,7 +82817,6 @@ function restoreCache(version) { handleMatchResult(matchedKey, cacheKey); }); } -exports.restoreCache = restoreCache; function computeKeys(version) { return __awaiter(this, void 0, void 0, function* () { let cacheDependencyPathHash = "-"; @@ -82886,7 +82886,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.run = void 0; +exports.run = run; const cache = __importStar(__nccwpck_require__(7799)); const core = __importStar(__nccwpck_require__(2186)); const exec = __importStar(__nccwpck_require__(1514)); @@ -82906,7 +82906,6 @@ function run() { process.exit(0); }); } -exports.run = run; function saveCache() { return __awaiter(this, void 0, void 0, function* () { const cacheKey = core.getState(restore_cache_1.STATE_CACHE_KEY); @@ -82988,7 +82987,8 @@ exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getPlatform = exports.getArch = void 0; +exports.getArch = getArch; +exports.getPlatform = getPlatform; function getArch() { const arch = process.arch; const archMapping = { @@ -83000,7 +83000,6 @@ function getArch() { return archMapping[arch]; } } -exports.getArch = getArch; function getPlatform() { const platform = process.platform; const platformMapping = { @@ -83012,7 +83011,6 @@ function getPlatform() { return platformMapping[platform]; } } -exports.getPlatform = getPlatform; /***/ }), diff --git a/dist/setup/index.js b/dist/setup/index.js index 6bfc479..fc54a23 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -83685,7 +83685,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.restoreCache = exports.STATE_CACHE_MATCHED_KEY = exports.STATE_CACHE_KEY = void 0; +exports.STATE_CACHE_MATCHED_KEY = exports.STATE_CACHE_KEY = void 0; +exports.restoreCache = restoreCache; const cache = __importStar(__nccwpck_require__(7799)); const glob = __importStar(__nccwpck_require__(8090)); const core = __importStar(__nccwpck_require__(2186)); @@ -83713,7 +83714,6 @@ function restoreCache(version) { handleMatchResult(matchedKey, cacheKey); }); } -exports.restoreCache = restoreCache; function computeKeys(version) { return __awaiter(this, void 0, void 0, function* () { let cacheDependencyPathHash = "-"; @@ -83783,7 +83783,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isknownVersion = exports.validateChecksum = void 0; +exports.validateChecksum = validateChecksum; +exports.isknownVersion = isknownVersion; const fs = __importStar(__nccwpck_require__(7147)); const crypto = __importStar(__nccwpck_require__(6113)); const core = __importStar(__nccwpck_require__(2186)); @@ -83812,7 +83813,6 @@ function validateChecksum(checkSum, downloadPath, arch, platform, version) { core.debug(`Checksum for ${downloadPath} is valid.`); }); } -exports.validateChecksum = validateChecksum; function validateFileCheckSum(filePath, expected) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { @@ -83831,7 +83831,6 @@ function isknownVersion(version) { const pattern = new RegExp(`^.*-.*-${version}$`); return Object.keys(known_checksums_1.KNOWN_CHECKSUMS).some((key) => pattern.test(key)); } -exports.isknownVersion = isknownVersion; /***/ }), @@ -85538,7 +85537,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.downloadLatest = void 0; +exports.downloadLatest = downloadLatest; const core = __importStar(__nccwpck_require__(2186)); const tc = __importStar(__nccwpck_require__(7784)); const exec = __importStar(__nccwpck_require__(1514)); @@ -85575,7 +85574,6 @@ function downloadLatest(platform, arch, checkSum, githubToken) { return { cachedToolDir, version }; }); } -exports.downloadLatest = downloadLatest; function getVersion(uvExecutablePath) { return __awaiter(this, void 0, void 0, function* () { // Parse the output of `uv --version` to get the version @@ -85638,7 +85636,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.downloadVersion = exports.tryGetFromToolCache = void 0; +exports.tryGetFromToolCache = tryGetFromToolCache; +exports.downloadVersion = downloadVersion; const core = __importStar(__nccwpck_require__(2186)); const tc = __importStar(__nccwpck_require__(7784)); const path = __importStar(__nccwpck_require__(1017)); @@ -85650,7 +85649,6 @@ function tryGetFromToolCache(arch, version) { core.debug(`Cached versions: ${cachedVersions}`); return tc.find(utils_1.TOOL_CACHE_NAME, version, arch); } -exports.tryGetFromToolCache = tryGetFromToolCache; function downloadVersion(platform, arch, version, checkSum, githubToken) { return __awaiter(this, void 0, void 0, function* () { const artifact = `uv-${arch}-${platform}`; @@ -85676,7 +85674,6 @@ function downloadVersion(platform, arch, version, checkSum, githubToken) { return yield tc.cacheDir(uvDir, utils_1.TOOL_CACHE_NAME, version, arch); }); } -exports.downloadVersion = downloadVersion; /***/ }), @@ -85840,7 +85837,8 @@ exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getPlatform = exports.getArch = void 0; +exports.getArch = getArch; +exports.getPlatform = getPlatform; function getArch() { const arch = process.arch; const archMapping = { @@ -85852,7 +85850,6 @@ function getArch() { return archMapping[arch]; } } -exports.getArch = getArch; function getPlatform() { const platform = process.platform; const platformMapping = { @@ -85864,7 +85861,6 @@ function getPlatform() { return platformMapping[platform]; } } -exports.getPlatform = getPlatform; /***/ }), diff --git a/dist/update-known-checksums/index.js b/dist/update-known-checksums/index.js index 5a4686d..fda9519 100644 --- a/dist/update-known-checksums/index.js +++ b/dist/update-known-checksums/index.js @@ -32707,7 +32707,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.updateChecksums = void 0; +exports.updateChecksums = updateChecksums; const fs_1 = __nccwpck_require__(7147); const tc = __importStar(__nccwpck_require__(7784)); function updateChecksums(filePath, downloadUrls) { @@ -32728,7 +32728,6 @@ function updateChecksums(filePath, downloadUrls) { yield fs_1.promises.appendFile(filePath, "}\n"); }); } -exports.updateChecksums = updateChecksums; function getKey(downloadUrl) { // https://github.com/astral-sh/uv/releases/download/0.3.2/uv-aarch64-apple-darwin.tar.gz.sha256 const parts = downloadUrl.split("/"); diff --git a/package-lock.json b/package-lock.json index 1ed2af4..b3d17ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,7 +33,7 @@ "js-yaml": "^4.1.0", "prettier": "^3.3.3", "ts-jest": "^29.2.5", - "typescript": "^5.4.5" + "typescript": "^5.5.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -7558,9 +7558,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -13472,9 +13472,9 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index 026c84e..163a1e5 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,6 @@ "js-yaml": "^4.1.0", "prettier": "^3.3.3", "ts-jest": "^29.2.5", - "typescript": "^5.4.5" + "typescript": "^5.5.4" } }