From 260b881efa4ecc7a45406451b0086042fa2aeb70 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 13:42:43 -0800 Subject: [PATCH 01/10] Point to world --- next.config.js | 47 ++++++----------------------------------------- 1 file changed, 6 insertions(+), 41 deletions(-) diff --git a/next.config.js b/next.config.js index 52e831d..2e98ee4 100644 --- a/next.config.js +++ b/next.config.js @@ -9,49 +9,14 @@ const nextConfig = { async redirects() { return [ { - source: "/hotspots/hex/:index", - destination: "/hex/:index", - permanent: false, + source: "/((?!api).*)/:slug", + destination: "https://world.helium.com", + permanent: true, }, { - source: "/iot/hex/:index", - destination: "/hex/:index", - permanent: false, - }, - { - source: "/hotspots/:address/activity", - destination: "/hotspots/:address", - permanent: false, - }, - { - source: "/hotspots/:address/witnessed", - destination: "/hotspots/:address", - permanent: false, - }, - { - source: "/hotspots/:address/nearby", - destination: "/hotspots/:address", - permanent: false, - }, - { - source: "/accounts/:address/activity", - destination: "/accounts/:address", - permanent: false, - }, - { - source: "/accounts/:address/hotspots", - destination: "/accounts/:address", - permanent: false, - }, - { - source: "/accounts/:address/validators", - destination: "/accounts/:address", - permanent: false, - }, - { - source: "/market", - destination: "/stats", - permanent: false, + source: "/:slug", + destination: "https://world.helium.com", + permanent: true, }, ] }, From 6f9742fe88616b4e5f939cee13e829b1645cc14f Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:00:04 -0800 Subject: [PATCH 02/10] Update package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 197b0ec..179d4d4 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "packageManager": "pnpm@8.6.0", + "node": ">=18.0.0", "scripts": { "dev": "next dev", "prebuild": "npm run db:migrate", From 88d4a971546287efa8529e88ca1bdab765d55342 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:05:13 -0800 Subject: [PATCH 03/10] poke --- package.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package.json b/package.json index 179d4d4..f2db5ad 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,10 @@ "private": true, "packageManager": "pnpm@8.6.0", "node": ">=18.0.0", + "engines": { + "npm": ">=8.0.0 <9.0.0", + "node": ">=18.0.0" + }, "scripts": { "dev": "next dev", "prebuild": "npm run db:migrate", From 846a118826eaba28bab940fd7fbfb231ddea40d5 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:06:54 -0800 Subject: [PATCH 04/10] poke --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index f2db5ad..1304ae3 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,8 @@ "name": "network-explorer", "version": "0.1.0", "private": true, - "packageManager": "pnpm@8.6.0", - "node": ">=18.0.0", "engines": { - "npm": ">=8.0.0 <9.0.0", + "pnpm": "8.6.0", "node": ">=18.0.0" }, "scripts": { From 81569d4574881e1754b74a9565d7e90f28e0a921 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:09:41 -0800 Subject: [PATCH 05/10] poke --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1304ae3..3ef1a95 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "engines": { "pnpm": "8.6.0", - "node": ">=18.0.0" + "node": "^18.0.0" }, "scripts": { "dev": "next dev", From 5738cec1f0d38a82c66d7d49c4043b73f2afc410 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:25:25 -0800 Subject: [PATCH 06/10] Also redirect the home page. --- next.config.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/next.config.js b/next.config.js index 2e98ee4..5878087 100644 --- a/next.config.js +++ b/next.config.js @@ -9,12 +9,7 @@ const nextConfig = { async redirects() { return [ { - source: "/((?!api).*)/:slug", - destination: "https://world.helium.com", - permanent: true, - }, - { - source: "/:slug", + source: "/((?!api(?:$|/)).*)", destination: "https://world.helium.com", permanent: true, }, From 85bba2252c4f5b99307e3138eed6a863de4ea4c7 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:32:39 -0800 Subject: [PATCH 07/10] poke --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3ef1a95..bd8499b 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "knex": "^2.5.1", "mapbox-gl": "^2.15.0", "maplibre-gl": "^3.3.1", - "next": "14.2.4", + "next": "13.4.12", "next-themes": "0.2.1", "pg": "^8.11.1", "pmtiles": "^2.10.0", From e6e9609ac8969c5ecfe7357b761937656af548dc Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:38:27 -0800 Subject: [PATCH 08/10] poke --- package.json | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bd8499b..b602571 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,8 @@ "name": "network-explorer", "version": "0.1.0", "private": true, - "engines": { - "pnpm": "8.6.0", - "node": "^18.0.0" - }, + "packageManager": "pnpm@8.6.0", + "node": "20.17.0", "scripts": { "dev": "next dev", "prebuild": "npm run db:migrate", @@ -54,7 +52,7 @@ "knex": "^2.5.1", "mapbox-gl": "^2.15.0", "maplibre-gl": "^3.3.1", - "next": "13.4.12", + "next": "14.2.4", "next-themes": "0.2.1", "pg": "^8.11.1", "pmtiles": "^2.10.0", From 42138470d87a93b0f85cd47e3a2243ea810d4c7a Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:41:33 -0800 Subject: [PATCH 09/10] poke --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b602571..3d14afa 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "0.1.0", "private": true, "packageManager": "pnpm@8.6.0", - "node": "20.17.0", + "engines": { + "node": "20.17.0" + }, "scripts": { "dev": "next dev", "prebuild": "npm run db:migrate", From eef5a3eba6deb74b44add6a7063089e2a92bbe99 Mon Sep 17 00:00:00 2001 From: Joey Hiller <1965053+jthiller@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:54:39 -0800 Subject: [PATCH 10/10] =?UTF-8?q?=F0=9F=92=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 💥 💥 Create .gitignore --- .DS_Store | Bin 0 -> 6148 bytes .env.example | 11 - .eslintrc.json | 3 - .github/workflows/node.js.yml | 34 - .husky/pre-commit | 4 - .npmrc | 1 - .vscode/hooks.code-snippets | 8 - .vscode/settings.json | 4 - LICENSE | 202 - README.md | 45 - jest.config.mjs | 18 - jsconfig.json | 8 - knexfile.ts | 43 - .../20230727160735_max_supply_records.ts | 14 - .../20240103152443_rename_max_supply.ts | 17 - next-env.d.ts | 5 - next.config.js | 14 +- package-lock.json | 826 ++ package.json | 93 +- pages/index.js | 4 + pnpm-lock.yaml | 11275 ---------------- postcss.config.js | 10 - prettier.config.js | 4 - public/favicon.png | Bin 3989 -> 0 bytes public/logo.svg | 17 - public/logo192.png | Bin 8748 -> 0 bytes public/logo512.png | Bin 14016 -> 0 bytes public/manifest.json | 25 - public/og.png | Bin 136292 -> 0 bytes public/robots.txt | 3 - src/app/[...rest]/route.ts | 23 - .../[address]/components/AccountDetails.tsx | 34 - src/app/accounts/[address]/page.tsx | 10 - src/app/api/stats/supply/[token]/route.ts | 101 - src/app/hex/[hexId]/page.tsx | 41 - .../[address]/components/HotspotDetails.tsx | 35 - src/app/hotspots/[address]/page.tsx | 10 - src/app/layout.tsx | 89 - src/app/mobile/page.tsx | 8 - src/app/page.tsx | 7 - src/app/preferences/components/ExitButton.tsx | 49 - .../preferences/components/ProviderList.tsx | 113 - .../preferences/components/ThemeToggle.tsx | 68 - src/app/preferences/page.tsx | 51 - src/app/stats/components/Countdown.tsx | 66 - .../Governance/DelegationHistory.tsx | 38 - .../Governance/DelegationHistoryGraph.tsx | 145 - .../Governance/GovernanceStatItem.tsx | 40 - .../components/Governance/MetricsRow.tsx | 128 - src/app/stats/components/Governance/index.tsx | 68 - src/app/stats/components/GraphWrapper.tsx | 20 - src/app/stats/components/HntEmissions.tsx | 65 - .../stats/components/HntEmissionsGraph.tsx | 125 - src/app/stats/components/HntInfo.tsx | 175 - src/app/stats/components/NetworkUsage.tsx | 60 - .../stats/components/NetworkUsageGraph.tsx | 164 - src/app/stats/components/StatItem.tsx | 59 - src/app/stats/components/StatsList.tsx | 57 - src/app/stats/components/SubDaoInfo.tsx | 233 - src/app/stats/components/Tooltip.tsx | 36 - src/app/stats/page.tsx | 29 - src/app/stats/utils.tsx | 38 - src/app/stats/utils/accountCache.ts | 15 - src/app/stats/utils/addPositionsMeta.ts | 62 - src/app/stats/utils/calcLockupMultiplier.ts | 23 - .../stats/utils/calcPositionVotingPower.ts | 50 - src/app/stats/utils/dune/fetchHntEmissions.ts | 90 - src/app/stats/utils/dune/formatDuneDate.ts | 7 - src/app/stats/utils/emissions.ts | 3 - src/app/stats/utils/fetchAccount.ts | 74 - .../stats/utils/fetchDelegatedPositions.ts | 49 - src/app/stats/utils/fetchGovernanceMetrics.ts | 106 - src/app/stats/utils/fetchIdlAccount.ts | 22 - src/app/stats/utils/fetchMint.ts | 21 - src/app/stats/utils/fetchPositions.ts | 106 - src/app/stats/utils/fetchRecentEpochs.ts | 24 - src/app/stats/utils/fetchRegistrar.ts | 13 - src/app/stats/utils/fetchSubDaoEpochInfo.ts | 35 - .../stats/utils/fetchSubDaoTreasuryInfo.ts | 15 - src/app/stats/utils/fetchTokenAccount.ts | 16 - src/app/stats/utils/fetchUnixTimestamp.ts | 13 - src/app/stats/utils/getIdlParser.ts | 19 - src/app/stats/utils/getNextHalvening.test.ts | 27 - src/app/stats/utils/getNextHalvening.ts | 11 - src/app/stats/utils/positionsMetrics.ts | 124 - .../stats/utils/remainingEmissions.test.ts | 269 - src/app/stats/utils/remainingEmissions.ts | 76 - src/app/stats/utils/subNetworkEmissions.json | 58 - src/app/stats/utils/types.ts | 29 - src/components/Container.tsx | 39 - src/components/GAScript.tsx | 35 - src/components/GATracker.tsx | 41 - src/components/Header/DesktopNavigation.tsx | 52 - src/components/Header/HotspotSearch.tsx | 220 - src/components/Header/MobileNavigation.tsx | 70 - src/components/Header/constants.ts | 8 - src/components/Header/index.tsx | 69 - src/components/HotspotsMap/HexHotspotItem.tsx | 63 - src/components/HotspotsMap/HexHotspots.tsx | 113 - .../HotspotsMap/LoadingHexHotspots.tsx | 39 - .../HotspotsMap/NetworkCoverageLayer.tsx | 60 - src/components/HotspotsMap/index.tsx | 172 - src/components/HotspotsMap/mapLayersDark.tsx | 665 - src/components/HotspotsMap/mapLayersLight.tsx | 665 - src/components/HotspotsMap/utils.ts | 138 - src/components/MapCover.tsx | 33 - src/components/Providers.tsx | 7 - src/components/icons/GithubIcon.tsx | 7 - src/components/icons/HeliumIcon.tsx | 21 - src/components/icons/HeliumIotIcon.tsx | 20 - src/components/icons/HeliumMobileIcon.tsx | 20 - src/components/icons/HexIcon.tsx | 22 - src/components/icons/HotspottyIcon.tsx | 18 - src/components/icons/LoadingIcon.tsx | 24 - src/components/icons/MokenIcon.tsx | 99 - src/components/icons/RelayIcon.tsx | 17 - src/context/usePreferences.tsx | 72 - src/knex/db.ts | 8 - src/knex/supplyLimit.ts | 84 - src/styles/tailwind.css | 3 - src/types/angry-purple-tiger/index.d.ts | 1 - tailwind.config.js | 28 - tsconfig.json | 37 - 123 files changed, 839 insertions(+), 18361 deletions(-) create mode 100644 .DS_Store delete mode 100644 .env.example delete mode 100644 .eslintrc.json delete mode 100644 .github/workflows/node.js.yml delete mode 100755 .husky/pre-commit delete mode 100644 .npmrc delete mode 100644 .vscode/hooks.code-snippets delete mode 100644 .vscode/settings.json delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 jest.config.mjs delete mode 100644 jsconfig.json delete mode 100644 knexfile.ts delete mode 100644 migrations/20230727160735_max_supply_records.ts delete mode 100644 migrations/20240103152443_rename_max_supply.ts delete mode 100644 next-env.d.ts create mode 100644 package-lock.json create mode 100644 pages/index.js delete mode 100644 pnpm-lock.yaml delete mode 100644 postcss.config.js delete mode 100644 prettier.config.js delete mode 100644 public/favicon.png delete mode 100644 public/logo.svg delete mode 100644 public/logo192.png delete mode 100644 public/logo512.png delete mode 100644 public/manifest.json delete mode 100644 public/og.png delete mode 100644 public/robots.txt delete mode 100644 src/app/[...rest]/route.ts delete mode 100644 src/app/accounts/[address]/components/AccountDetails.tsx delete mode 100644 src/app/accounts/[address]/page.tsx delete mode 100644 src/app/api/stats/supply/[token]/route.ts delete mode 100644 src/app/hex/[hexId]/page.tsx delete mode 100644 src/app/hotspots/[address]/components/HotspotDetails.tsx delete mode 100644 src/app/hotspots/[address]/page.tsx delete mode 100644 src/app/layout.tsx delete mode 100644 src/app/mobile/page.tsx delete mode 100644 src/app/page.tsx delete mode 100644 src/app/preferences/components/ExitButton.tsx delete mode 100644 src/app/preferences/components/ProviderList.tsx delete mode 100644 src/app/preferences/components/ThemeToggle.tsx delete mode 100644 src/app/preferences/page.tsx delete mode 100644 src/app/stats/components/Countdown.tsx delete mode 100644 src/app/stats/components/Governance/DelegationHistory.tsx delete mode 100644 src/app/stats/components/Governance/DelegationHistoryGraph.tsx delete mode 100644 src/app/stats/components/Governance/GovernanceStatItem.tsx delete mode 100644 src/app/stats/components/Governance/MetricsRow.tsx delete mode 100644 src/app/stats/components/Governance/index.tsx delete mode 100644 src/app/stats/components/GraphWrapper.tsx delete mode 100644 src/app/stats/components/HntEmissions.tsx delete mode 100644 src/app/stats/components/HntEmissionsGraph.tsx delete mode 100644 src/app/stats/components/HntInfo.tsx delete mode 100644 src/app/stats/components/NetworkUsage.tsx delete mode 100644 src/app/stats/components/NetworkUsageGraph.tsx delete mode 100644 src/app/stats/components/StatItem.tsx delete mode 100644 src/app/stats/components/StatsList.tsx delete mode 100644 src/app/stats/components/SubDaoInfo.tsx delete mode 100644 src/app/stats/components/Tooltip.tsx delete mode 100644 src/app/stats/page.tsx delete mode 100644 src/app/stats/utils.tsx delete mode 100644 src/app/stats/utils/accountCache.ts delete mode 100644 src/app/stats/utils/addPositionsMeta.ts delete mode 100644 src/app/stats/utils/calcLockupMultiplier.ts delete mode 100644 src/app/stats/utils/calcPositionVotingPower.ts delete mode 100644 src/app/stats/utils/dune/fetchHntEmissions.ts delete mode 100644 src/app/stats/utils/dune/formatDuneDate.ts delete mode 100644 src/app/stats/utils/emissions.ts delete mode 100644 src/app/stats/utils/fetchAccount.ts delete mode 100644 src/app/stats/utils/fetchDelegatedPositions.ts delete mode 100644 src/app/stats/utils/fetchGovernanceMetrics.ts delete mode 100644 src/app/stats/utils/fetchIdlAccount.ts delete mode 100644 src/app/stats/utils/fetchMint.ts delete mode 100644 src/app/stats/utils/fetchPositions.ts delete mode 100644 src/app/stats/utils/fetchRecentEpochs.ts delete mode 100644 src/app/stats/utils/fetchRegistrar.ts delete mode 100644 src/app/stats/utils/fetchSubDaoEpochInfo.ts delete mode 100644 src/app/stats/utils/fetchSubDaoTreasuryInfo.ts delete mode 100644 src/app/stats/utils/fetchTokenAccount.ts delete mode 100644 src/app/stats/utils/fetchUnixTimestamp.ts delete mode 100644 src/app/stats/utils/getIdlParser.ts delete mode 100644 src/app/stats/utils/getNextHalvening.test.ts delete mode 100644 src/app/stats/utils/getNextHalvening.ts delete mode 100644 src/app/stats/utils/positionsMetrics.ts delete mode 100644 src/app/stats/utils/remainingEmissions.test.ts delete mode 100644 src/app/stats/utils/remainingEmissions.ts delete mode 100644 src/app/stats/utils/subNetworkEmissions.json delete mode 100644 src/app/stats/utils/types.ts delete mode 100644 src/components/Container.tsx delete mode 100644 src/components/GAScript.tsx delete mode 100644 src/components/GATracker.tsx delete mode 100644 src/components/Header/DesktopNavigation.tsx delete mode 100644 src/components/Header/HotspotSearch.tsx delete mode 100644 src/components/Header/MobileNavigation.tsx delete mode 100644 src/components/Header/constants.ts delete mode 100644 src/components/Header/index.tsx delete mode 100644 src/components/HotspotsMap/HexHotspotItem.tsx delete mode 100644 src/components/HotspotsMap/HexHotspots.tsx delete mode 100644 src/components/HotspotsMap/LoadingHexHotspots.tsx delete mode 100644 src/components/HotspotsMap/NetworkCoverageLayer.tsx delete mode 100644 src/components/HotspotsMap/index.tsx delete mode 100644 src/components/HotspotsMap/mapLayersDark.tsx delete mode 100644 src/components/HotspotsMap/mapLayersLight.tsx delete mode 100644 src/components/HotspotsMap/utils.ts delete mode 100644 src/components/MapCover.tsx delete mode 100644 src/components/Providers.tsx delete mode 100644 src/components/icons/GithubIcon.tsx delete mode 100644 src/components/icons/HeliumIcon.tsx delete mode 100644 src/components/icons/HeliumIotIcon.tsx delete mode 100644 src/components/icons/HeliumMobileIcon.tsx delete mode 100644 src/components/icons/HexIcon.tsx delete mode 100644 src/components/icons/HotspottyIcon.tsx delete mode 100644 src/components/icons/LoadingIcon.tsx delete mode 100644 src/components/icons/MokenIcon.tsx delete mode 100644 src/components/icons/RelayIcon.tsx delete mode 100644 src/context/usePreferences.tsx delete mode 100644 src/knex/db.ts delete mode 100644 src/knex/supplyLimit.ts delete mode 100644 src/styles/tailwind.css delete mode 100644 src/types/angry-purple-tiger/index.d.ts delete mode 100644 tailwind.config.js delete mode 100644 tsconfig.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a558bfe68b9743b3afd1bf936474321390214b7b GIT binary patch literal 6148 zcmeHKJ5Iwu5S;}VmMBO`xfOIsxxo^d6XXIYL<&fWoFeq@=;0z9f-`UhPC$c%#G4Pu zmK910cq7d|@60@}{R)pqMAGbTITe|RNDWt%dtJt+dG(PUM5F>Hy~lbronN<`?Wl5p zK)IEi%Svu#H{c&Xy!UgPwrLjYc7a%Z`ttGk`u2P=%rAe;Z*O|fcJ>4+jS5f!DnJFO zz`s-gJzK3la^y+{r~noCRzSZG8Ln6YJ4gF;V6hPZsK4=MxVBjWm^A<_ft@2Fu;f&r zQ&Wr>$?1sas4Ib;qthkX$+%CPoMJ*rb~@tO$|V&?u2g^u3>7%^?L_ {", " console.log({$0})", "}, [$0]);"], - "description": "Log variable with useEffect hook" - } -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 33b3971..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "typescript.tsdk": "node_modules/.pnpm/typescript@5.0.4/node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true -} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 19585b6..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Helium Systems, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index a82b47a..0000000 --- a/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Helium Network Explorer - -## Development - -### Installation - -Requirements: [Node.js 18](https://nodejs.org/) or later - -[Install pnpm](https://pnpm.io/installation) if you haven't already, for example using [brew](https://brew.sh/): - -```bash -brew install pnpm -``` - -Download the dependencies: - -```bash -pnpm install -``` - -Add environment variables: - -```bash -cp .env.example .env.local -``` - -Add your [Dune API key](https://dune.com/docs/api/#obtaining-an-api-key) - -Setup a PostgreSQL database and add your DATABASE_URL. It will default to using an in memory database if you don't set one up. - -### Run locally - -Setup the database: - -```bash -pnpm db:migrate -``` - -Then, run the development server: - -```bash -pnpm dev -``` - -Open [http://localhost:3000](http://localhost:3000) in your browser. diff --git a/jest.config.mjs b/jest.config.mjs deleted file mode 100644 index 41a1e7f..0000000 --- a/jest.config.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import nextJest from "next/jest.js" - -const createJestConfig = nextJest({ - // Provide the path to your Next.js app to load next.config.js and .env files in your test environment - dir: "./", -}) - -// Add any custom config to be passed to Jest -/** @type {import('jest').Config} */ -const config = { - // Add more setup options before each test is run - // setupFilesAfterEnv: ['/jest.setup.js'], - - testEnvironment: "jest-environment-jsdom", -} - -// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async -export default createJestConfig(config) diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 2c8ee2b..0000000 --- a/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["src/*"] - } - } -} diff --git a/knexfile.ts b/knexfile.ts deleted file mode 100644 index 0e82865..0000000 --- a/knexfile.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { Knex } from "knex" -require("dotenv").config() - -// used for preview / if DATABASE_URL not set -const SQLITE_CONFIG: Knex.Config = { - client: "better-sqlite3", - connection: { - filename: "./db.sqlite3", - }, -} - -const PG_CONFIG_PROD: Knex.Config = { - client: "postgresql", - connection: { - connectionString: process.env.DATABASE_URL, - ssl: { - rejectUnauthorized: false, - }, - }, - migrations: { - extension: "ts", - }, -} - -const PG_CONFIG_LOCAL: Knex.Config = { - client: "postgresql", - connection: { - connectionString: process.env.DATABASE_URL, - }, - migrations: { - extension: "ts", - }, -} - -const getConfig = () => { - if (!process.env.DATABASE_URL) return SQLITE_CONFIG - if (process.env.LOCAL) return PG_CONFIG_LOCAL - return PG_CONFIG_PROD -} - -const config: Knex.Config = getConfig() - -export default config diff --git a/migrations/20230727160735_max_supply_records.ts b/migrations/20230727160735_max_supply_records.ts deleted file mode 100644 index 0ccc6ca..0000000 --- a/migrations/20230727160735_max_supply_records.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.schema.createTable("max_supply_records", (table) => { - table.timestamp("recorded_at").primary() - table.bigint("hnt_burned").notNullable() - table.bigint("supply").notNullable() - table.bigint("max_supply").notNullable() - }) -} - -export async function down(knex: Knex): Promise { - await knex.schema.dropTable("max_supply_records") -} diff --git a/migrations/20240103152443_rename_max_supply.ts b/migrations/20240103152443_rename_max_supply.ts deleted file mode 100644 index 2db91a5..0000000 --- a/migrations/20240103152443_rename_max_supply.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Knex } from "knex" - -export async function up(knex: Knex): Promise { - await knex.schema.alterTable("max_supply_records", (table) => { - table.renameColumn("max_supply", "supply_limit") - }) - - return knex.schema.renameTable("max_supply_records", "supply_limit_records") -} - -export async function down(knex: Knex): Promise { - await knex.schema.alterTable("supply_limit_records", (table) => { - table.renameColumn("supply_limit", "max_supply") - }) - - return knex.schema.renameTable("supply_limit_records", "max_supply_records") -} diff --git a/next-env.d.ts b/next-env.d.ts deleted file mode 100644 index 4f11a03..0000000 --- a/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js index 5878087..c61a716 100644 --- a/next.config.js +++ b/next.config.js @@ -1,17 +1,11 @@ -/** @type {import("next").NextConfig} */ +/** @type {import('next').NextConfig} */ const nextConfig = { - reactStrictMode: true, - pageExtensions: ["js", "jsx", "ts", "tsx"], - experimental: { - scrollRestoration: true, - serverComponentsExternalPackages: ["knex"], - }, async redirects() { return [ { - source: "/((?!api(?:$|/)).*)", - destination: "https://world.helium.com", - permanent: true, + source: '/(.*)', // Matches every route + destination: 'https://world.helium.com', + permanent: true, // Use a 301 permanent redirect }, ] }, diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5a68a5f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,826 @@ +{ + "name": "network-explorer", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "network-explorer", + "version": "1.0.0", + "dependencies": { + "next": "latest", + "react": "latest", + "react-dom": "latest" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@next/env": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.6.tgz", + "integrity": "sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.6.tgz", + "integrity": "sha512-u7lg4Mpl9qWpKgy6NzEkz/w0/keEHtOybmIl0ykgItBxEM5mYotS5PmqTpo+Rhg8FiOiWgwr8USxmKQkqLBCrw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.6.tgz", + "integrity": "sha512-x1jGpbHbZoZ69nRuogGL2MYPLqohlhnT9OCU6E6QFewwup+z+M6r8oU47BTeJcWsF2sdBahp5cKiAcDbwwK/lg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.6.tgz", + "integrity": "sha512-jar9sFw0XewXsBzPf9runGzoivajeWJUc/JkfbLTC4it9EhU8v7tCRLH7l5Y1ReTMN6zKJO0kKAGqDk8YSO2bg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.6.tgz", + "integrity": "sha512-+n3u//bfsrIaZch4cgOJ3tXCTbSxz0s6brJtU3SzLOvkJlPQMJ+eHVRi6qM2kKKKLuMY+tcau8XD9CJ1OjeSQQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.6.tgz", + "integrity": "sha512-SpuDEXixM3PycniL4iVCLyUyvcl6Lt0mtv3am08sucskpG0tYkW1KlRhTgj4LI5ehyxriVVcfdoxuuP8csi3kQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.6.tgz", + "integrity": "sha512-L4druWmdFSZIIRhF+G60API5sFB7suTbDRhYWSjiw0RbE+15igQvE2g2+S973pMGvwN3guw7cJUjA/TmbPWTHQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.6.tgz", + "integrity": "sha512-s8w6EeqNmi6gdvM19tqKKWbCyOBvXFbndkGHl+c9YrzsLARRdCHsD9S1fMj8gsXm9v8vhC8s3N8rjuC/XrtkEg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.6.tgz", + "integrity": "sha512-6xomMuu54FAFxttYr5PJbEfu96godcxBTRk1OhAvJq0/EnmFU/Ybiax30Snis4vdWZ9LGpf7Roy5fSs7v/5ROQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.6.tgz", + "integrity": "sha512-Hch4wzbaX0vKQtalpXvUiw5sYivBy4cm5rzUKrBnUB/y436LGrvOUqYvlSeNVCWFO/770gDlltR9gqZH62ct4Q==", + "dependencies": { + "@next/env": "15.1.6", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.1.6", + "@next/swc-darwin-x64": "15.1.6", + "@next/swc-linux-arm64-gnu": "15.1.6", + "@next/swc-linux-arm64-musl": "15.1.6", + "@next/swc-linux-x64-gnu": "15.1.6", + "@next/swc-linux-x64-musl": "15.1.6", + "@next/swc-win32-arm64-msvc": "15.1.6", + "@next/swc-win32-x64-msvc": "15.1.6", + "sharp": "^0.33.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", + "dependencies": { + "scheduler": "^0.25.0" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" + }, + "node_modules/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } + } +} diff --git a/package.json b/package.json index 3d14afa..b5579ec 100644 --- a/package.json +++ b/package.json @@ -1,97 +1,14 @@ { "name": "network-explorer", - "version": "0.1.0", - "private": true, - "packageManager": "pnpm@8.6.0", - "engines": { - "node": "20.17.0" - }, + "version": "1.0.0", "scripts": { "dev": "next dev", - "prebuild": "npm run db:migrate", "build": "next build", - "start": "next start", - "lint": "next lint", - "prepare": "husky install", - "test": "jest --watch", - "db:migrate": "TS_NODE_COMPILER_OPTIONS='{ \"module\": \"commonjs\" }' knex migrate:latest", - "db:migrate:undo": "TS_NODE_COMPILER_OPTIONS='{ \"module\": \"commonjs\" }' knex migrate:down", - "db:migrate:make": "TS_NODE_COMPILER_OPTIONS='{ \"module\": \"commonjs\" }' knex migrate:make" - }, - "lint-staged": { - "**/*": "prettier --write --ignore-unknown" + "start": "next start" }, - "browserslist": "defaults, not ie <= 11", "dependencies": { - "@coral-xyz/anchor": "^0.27.0", - "@headlessui/react": "1.7.13", - "@headlessui/tailwindcss": "0.1.2", - "@helium/account-fetch-cache": "^0.2.5", - "@helium/address": "^4.8.1", - "@helium/helium-react-hooks": "^0.2.11", - "@helium/helium-sub-daos-sdk": "^0.2.5", - "@helium/idls": "^0.4.0", - "@helium/spl-utils": "^0.2.13", - "@helium/treasury-management-sdk": "^0.2.5", - "@helium/voter-stake-registry-sdk": "^0.1.4", - "@heroicons/react": "2.0.17", - "@metaplex-foundation/mpl-token-metadata": "^2.9.1", - "@solana/spl-account-compression": "0.1.7", - "@solana/spl-token": "^0.3.7", - "@solana/web3.js": "^1.75.0", - "@tailwindcss/forms": "0.5.3", - "@tailwindcss/typography": "0.5.9", - "angry-purple-tiger": "1.0.5", - "axios": "^1.3.5", - "better-sqlite3": "^8.5.0", - "bn.js": "^5.2.1", - "clsx": "1.2.1", - "date-fns": "^2.29.3", - "dotenv": "^16.3.1", - "encoding": "^0.1.13", - "focus-visible": "5.2.0", - "h3-js": "4.1.0", - "knex": "^2.5.1", - "mapbox-gl": "^2.15.0", - "maplibre-gl": "^3.3.1", - "next": "14.2.4", - "next-themes": "0.2.1", - "pg": "^8.11.1", - "pmtiles": "^2.10.0", - "react": "18.3.1", - "react-async-hook": "^4.0.0", - "react-countdown": "^2.3.5", - "react-dom": "18.3.1", - "react-map-gl": "^7.1.6", - "react-tooltip": "^5.11.1", - "recharts": "^2.5.0", - "tailwindcss": "3.3.1", - "use-debounce": "9.0.4" - }, - "devDependencies": { - "@next/env": "13.3.0", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^14.0.0", - "@types/gtag.js": "^0.0.12", - "@types/jest": "^29.5.3", - "@types/node": "18.15.11", - "@types/react": "18.3.3", - "@types/react-dom": "18.3.0", - "autoprefixer": "10.4.14", - "eslint": "^8.57.0", - "eslint-config-next": "14.2.4", - "eslint-config-prettier": "8.8.0", - "husky": "8.0.3", - "jest": "^29.6.1", - "jest-environment-jsdom": "^29.6.1", - "lint-staged": "13.2.1", - "postcss": "8.4.21", - "postcss-focus-visible": "8.0.2", - "postcss-import": "15.1.0", - "prettier": "2.8.7", - "prettier-plugin-tailwindcss": "0.2.7", - "sharp": "0.32.0", - "ts-node": "10.9.1", - "typescript": "5.0.4" + "next": "latest", + "react": "latest", + "react-dom": "latest" } } diff --git a/pages/index.js b/pages/index.js new file mode 100644 index 0000000..c80d680 --- /dev/null +++ b/pages/index.js @@ -0,0 +1,4 @@ +// pages/index.js +export default function Home() { + return null; // This page will never render because of the redirect. +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 345fb49..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,11275 +0,0 @@ -lockfileVersion: "6.1" - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - "@coral-xyz/anchor": - specifier: ^0.27.0 - version: 0.27.0(encoding@0.1.13) - "@headlessui/react": - specifier: 1.7.13 - version: 1.7.13(react-dom@18.3.1)(react@18.3.1) - "@headlessui/tailwindcss": - specifier: 0.1.2 - version: 0.1.2(tailwindcss@3.3.1) - "@helium/account-fetch-cache": - specifier: ^0.2.5 - version: 0.2.5(encoding@0.1.13) - "@helium/address": - specifier: ^4.8.1 - version: 4.8.1 - "@helium/helium-react-hooks": - specifier: ^0.2.11 - version: 0.2.11(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1) - "@helium/helium-sub-daos-sdk": - specifier: ^0.2.5 - version: 0.2.5(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@helium/idls": - specifier: ^0.4.0 - version: 0.4.0(encoding@0.1.13) - "@helium/spl-utils": - specifier: ^0.2.13 - version: 0.2.13(encoding@0.1.13) - "@helium/treasury-management-sdk": - specifier: ^0.2.5 - version: 0.2.5(encoding@0.1.13) - "@helium/voter-stake-registry-sdk": - specifier: ^0.1.4 - version: 0.1.4(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@heroicons/react": - specifier: 2.0.17 - version: 2.0.17(react@18.3.1) - "@metaplex-foundation/mpl-token-metadata": - specifier: ^2.9.1 - version: 2.9.1(encoding@0.1.13) - "@solana/spl-account-compression": - specifier: 0.1.7 - version: 0.1.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/spl-token": - specifier: ^0.3.7 - version: 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": - specifier: ^1.75.0 - version: 1.75.0(encoding@0.1.13) - "@tailwindcss/forms": - specifier: 0.5.3 - version: 0.5.3(tailwindcss@3.3.1) - "@tailwindcss/typography": - specifier: 0.5.9 - version: 0.5.9(tailwindcss@3.3.1) - angry-purple-tiger: - specifier: 1.0.5 - version: 1.0.5 - axios: - specifier: ^1.3.5 - version: 1.3.5 - better-sqlite3: - specifier: ^8.5.0 - version: 8.5.0 - bn.js: - specifier: ^5.2.1 - version: 5.2.1 - clsx: - specifier: 1.2.1 - version: 1.2.1 - date-fns: - specifier: ^2.29.3 - version: 2.29.3 - dotenv: - specifier: ^16.3.1 - version: 16.3.1 - encoding: - specifier: ^0.1.13 - version: 0.1.13 - focus-visible: - specifier: 5.2.0 - version: 5.2.0 - h3-js: - specifier: 4.1.0 - version: 4.1.0 - knex: - specifier: ^2.5.1 - version: 2.5.1(better-sqlite3@8.5.0)(pg@8.11.1) - mapbox-gl: - specifier: ^2.15.0 - version: 2.15.0 - maplibre-gl: - specifier: ^3.3.1 - version: 3.3.1 - next: - specifier: 14.2.4 - version: 14.2.4(@babel/core@7.22.8)(react-dom@18.3.1)(react@18.3.1) - next-themes: - specifier: 0.2.1 - version: 0.2.1(next@14.2.4)(react-dom@18.3.1)(react@18.3.1) - pg: - specifier: ^8.11.1 - version: 8.11.1 - pmtiles: - specifier: ^2.10.0 - version: 2.10.0 - react: - specifier: 18.3.1 - version: 18.3.1 - react-async-hook: - specifier: ^4.0.0 - version: 4.0.0(react@18.3.1) - react-countdown: - specifier: ^2.3.5 - version: 2.3.5(react-dom@18.3.1)(react@18.3.1) - react-dom: - specifier: 18.3.1 - version: 18.3.1(react@18.3.1) - react-map-gl: - specifier: ^7.1.6 - version: 7.1.6(mapbox-gl@2.15.0)(maplibre-gl@3.3.1)(react-dom@18.3.1)(react@18.3.1) - react-tooltip: - specifier: ^5.11.1 - version: 5.11.1(react-dom@18.3.1)(react@18.3.1) - recharts: - specifier: ^2.5.0 - version: 2.5.0(prop-types@15.8.1)(react-dom@18.3.1)(react@18.3.1) - tailwindcss: - specifier: 3.3.1 - version: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) - use-debounce: - specifier: 9.0.4 - version: 9.0.4(react@18.3.1) - -devDependencies: - "@next/env": - specifier: 13.3.0 - version: 13.3.0 - "@testing-library/jest-dom": - specifier: ^5.16.5 - version: 5.16.5 - "@testing-library/react": - specifier: ^14.0.0 - version: 14.0.0(react-dom@18.3.1)(react@18.3.1) - "@types/gtag.js": - specifier: ^0.0.12 - version: 0.0.12 - "@types/jest": - specifier: ^29.5.3 - version: 29.5.3 - "@types/node": - specifier: 18.15.11 - version: 18.15.11 - "@types/react": - specifier: 18.3.3 - version: 18.3.3 - "@types/react-dom": - specifier: 18.3.0 - version: 18.3.0 - autoprefixer: - specifier: 10.4.14 - version: 10.4.14(postcss@8.4.21) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-next: - specifier: 14.2.4 - version: 14.2.4(eslint@8.57.0)(typescript@5.0.4) - eslint-config-prettier: - specifier: 8.8.0 - version: 8.8.0(eslint@8.57.0) - husky: - specifier: 8.0.3 - version: 8.0.3 - jest: - specifier: ^29.6.1 - version: 29.6.1(@types/node@18.15.11)(ts-node@10.9.1) - jest-environment-jsdom: - specifier: ^29.6.1 - version: 29.6.1 - lint-staged: - specifier: 13.2.1 - version: 13.2.1 - postcss: - specifier: 8.4.21 - version: 8.4.21 - postcss-focus-visible: - specifier: 8.0.2 - version: 8.0.2(postcss@8.4.21) - postcss-import: - specifier: 15.1.0 - version: 15.1.0(postcss@8.4.21) - prettier: - specifier: 2.8.7 - version: 2.8.7 - prettier-plugin-tailwindcss: - specifier: 0.2.7 - version: 0.2.7(prettier@2.8.7) - sharp: - specifier: 0.32.0 - version: 0.32.0 - ts-node: - specifier: 10.9.1 - version: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - typescript: - specifier: 5.0.4 - version: 5.0.4 - -packages: - /@adobe/css-tools@4.2.0: - resolution: - { - integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==, - } - dev: true - - /@ampproject/remapping@2.2.1: - resolution: - { - integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==, - } - engines: { node: ">=6.0.0" } - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 - - /@babel/code-frame@7.22.5: - resolution: - { - integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/highlight": 7.22.5 - - /@babel/compat-data@7.22.6: - resolution: - { - integrity: sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==, - } - engines: { node: ">=6.9.0" } - - /@babel/core@7.22.8: - resolution: - { - integrity: sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@ampproject/remapping": 2.2.1 - "@babel/code-frame": 7.22.5 - "@babel/generator": 7.22.7 - "@babel/helper-compilation-targets": 7.22.6(@babel/core@7.22.8) - "@babel/helper-module-transforms": 7.22.5 - "@babel/helpers": 7.22.6 - "@babel/parser": 7.22.7 - "@babel/template": 7.22.5 - "@babel/traverse": 7.22.8 - "@babel/types": 7.22.5 - "@nicolo-ribaudo/semver-v6": 6.3.3 - convert-source-map: 1.9.0 - debug: 4.3.5 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - transitivePeerDependencies: - - supports-color - - /@babel/generator@7.22.7: - resolution: - { - integrity: sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.22.5 - "@jridgewell/gen-mapping": 0.3.3 - "@jridgewell/trace-mapping": 0.3.18 - jsesc: 2.5.2 - - /@babel/helper-compilation-targets@7.22.6(@babel/core@7.22.8): - resolution: - { - integrity: sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/compat-data": 7.22.6 - "@babel/core": 7.22.8 - "@babel/helper-validator-option": 7.22.5 - "@nicolo-ribaudo/semver-v6": 6.3.3 - browserslist: 4.21.9 - lru-cache: 5.1.1 - - /@babel/helper-environment-visitor@7.22.5: - resolution: - { - integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==, - } - engines: { node: ">=6.9.0" } - - /@babel/helper-function-name@7.22.5: - resolution: - { - integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/template": 7.22.5 - "@babel/types": 7.22.5 - - /@babel/helper-hoist-variables@7.22.5: - resolution: - { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.22.5 - - /@babel/helper-module-imports@7.22.5: - resolution: - { - integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.22.5 - - /@babel/helper-module-transforms@7.22.5: - resolution: - { - integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-environment-visitor": 7.22.5 - "@babel/helper-module-imports": 7.22.5 - "@babel/helper-simple-access": 7.22.5 - "@babel/helper-split-export-declaration": 7.22.6 - "@babel/helper-validator-identifier": 7.22.5 - "@babel/template": 7.22.5 - "@babel/traverse": 7.22.8 - "@babel/types": 7.22.5 - transitivePeerDependencies: - - supports-color - - /@babel/helper-plugin-utils@7.22.5: - resolution: - { - integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==, - } - engines: { node: ">=6.9.0" } - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: - { - integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.22.5 - - /@babel/helper-split-export-declaration@7.22.6: - resolution: - { - integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/types": 7.22.5 - - /@babel/helper-string-parser@7.22.5: - resolution: - { - integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==, - } - engines: { node: ">=6.9.0" } - - /@babel/helper-validator-identifier@7.22.5: - resolution: - { - integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==, - } - engines: { node: ">=6.9.0" } - - /@babel/helper-validator-option@7.22.5: - resolution: - { - integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==, - } - engines: { node: ">=6.9.0" } - - /@babel/helpers@7.22.6: - resolution: - { - integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/template": 7.22.5 - "@babel/traverse": 7.22.8 - "@babel/types": 7.22.5 - transitivePeerDependencies: - - supports-color - - /@babel/highlight@7.22.5: - resolution: - { - integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-validator-identifier": 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser@7.22.7: - resolution: - { - integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==, - } - engines: { node: ">=6.0.0" } - hasBin: true - dependencies: - "@babel/types": 7.22.5 - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.8): - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.8): - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.8): - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.8): - resolution: - { - integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.8): - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.8): - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.8): - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.8): - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.8): - resolution: - { - integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==, - } - engines: { node: ">=6.9.0" } - peerDependencies: - "@babel/core": ^7.0.0-0 - dependencies: - "@babel/core": 7.22.8 - "@babel/helper-plugin-utils": 7.22.5 - dev: true - - /@babel/runtime@7.21.5: - resolution: - { - integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==, - } - engines: { node: ">=6.9.0" } - dependencies: - regenerator-runtime: 0.13.11 - dev: false - - /@babel/runtime@7.22.3: - resolution: - { - integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==, - } - engines: { node: ">=6.9.0" } - dependencies: - regenerator-runtime: 0.13.11 - - /@babel/runtime@7.23.1: - resolution: - { - integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==, - } - engines: { node: ">=6.9.0" } - dependencies: - regenerator-runtime: 0.14.0 - dev: false - - /@babel/template@7.22.5: - resolution: - { - integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.22.5 - "@babel/parser": 7.22.7 - "@babel/types": 7.22.5 - - /@babel/traverse@7.22.8: - resolution: - { - integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/code-frame": 7.22.5 - "@babel/generator": 7.22.7 - "@babel/helper-environment-visitor": 7.22.5 - "@babel/helper-function-name": 7.22.5 - "@babel/helper-hoist-variables": 7.22.5 - "@babel/helper-split-export-declaration": 7.22.6 - "@babel/parser": 7.22.7 - "@babel/types": 7.22.5 - debug: 4.3.5 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/types@7.22.5: - resolution: - { - integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==, - } - engines: { node: ">=6.9.0" } - dependencies: - "@babel/helper-string-parser": 7.22.5 - "@babel/helper-validator-identifier": 7.22.5 - to-fast-properties: 2.0.0 - - /@bcoe/v8-coverage@0.2.3: - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - dev: true - - /@coral-xyz/anchor@0.26.0(encoding@0.1.13): - resolution: - { - integrity: sha512-PxRl+wu5YyptWiR9F2MBHOLLibm87Z4IMUBPreX+DYBtPM+xggvcPi0KAN7+kIL4IrIhXI8ma5V0MCXxSN1pHg==, - } - engines: { node: ">=11" } - dependencies: - "@coral-xyz/borsh": 0.26.0(@solana/web3.js@1.75.0) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.1.5(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@coral-xyz/anchor@0.27.0(encoding@0.1.13): - resolution: - { - integrity: sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==, - } - engines: { node: ">=11" } - dependencies: - "@coral-xyz/borsh": 0.27.0(@solana/web3.js@1.75.0) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.1.5(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@coral-xyz/anchor@0.28.0(encoding@0.1.13): - resolution: - { - integrity: sha512-kQ02Hv2ZqxtWP30WN1d4xxT4QqlOXYDxmEd3k/bbneqhV3X5QMO4LAtoUFs7otxyivOgoqam5Il5qx81FuI4vw==, - } - engines: { node: ">=11" } - dependencies: - "@coral-xyz/borsh": 0.28.0(@solana/web3.js@1.78.5) - "@solana/web3.js": 1.78.5(encoding@0.1.13) - base64-js: 1.5.1 - bn.js: 5.2.1 - bs58: 4.0.1 - buffer-layout: 1.2.2 - camelcase: 6.3.0 - cross-fetch: 3.1.5(encoding@0.1.13) - crypto-hash: 1.3.0 - eventemitter3: 4.0.7 - js-sha256: 0.9.0 - pako: 2.1.0 - snake-case: 3.0.4 - superstruct: 0.15.5 - toml: 3.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@coral-xyz/borsh@0.26.0(@solana/web3.js@1.75.0): - resolution: - { - integrity: sha512-uCZ0xus0CszQPHYfWAqKS5swS1UxvePu83oOF+TWpUkedsNlg6p2p4azxZNSSqwXb9uXMFgxhuMBX9r3Xoi0vQ==, - } - engines: { node: ">=10" } - peerDependencies: - "@solana/web3.js": ^1.68.0 - dependencies: - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - dev: false - - /@coral-xyz/borsh@0.27.0(@solana/web3.js@1.75.0): - resolution: - { - integrity: sha512-tJKzhLukghTWPLy+n8K8iJKgBq1yLT/AxaNd10yJrX8mI56ao5+OFAKAqW/h0i79KCvb4BK0VGO5ECmmolFz9A==, - } - engines: { node: ">=10" } - peerDependencies: - "@solana/web3.js": ^1.68.0 - dependencies: - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - dev: false - - /@coral-xyz/borsh@0.28.0(@solana/web3.js@1.78.5): - resolution: - { - integrity: sha512-/u1VTzw7XooK7rqeD7JLUSwOyRSesPUk0U37BV9zK0axJc1q0nRbKFGFLYCQ16OtdOJTTwGfGp11Lx9B45bRCQ==, - } - engines: { node: ">=10" } - peerDependencies: - "@solana/web3.js": ^1.68.0 - dependencies: - "@solana/web3.js": 1.78.5(encoding@0.1.13) - bn.js: 5.2.1 - buffer-layout: 1.2.2 - dev: false - - /@cspotcode/source-map-support@0.8.1: - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - dependencies: - "@jridgewell/trace-mapping": 0.3.9 - - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.1: - resolution: - { - integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.57.0: - resolution: - { - integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /@floating-ui/core@1.2.6: - resolution: - { - integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==, - } - dev: false - - /@floating-ui/dom@1.2.7: - resolution: - { - integrity: sha512-DyqylONj1ZaBnzj+uBnVfzdjjCkFCL2aA9ESHLyUOGSqb03RpbLMImP1ekIQXYs4KLk9jAjJfZAU8hXfWSahEg==, - } - dependencies: - "@floating-ui/core": 1.2.6 - dev: false - - /@headlessui/react@1.7.13(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-9n+EQKRtD9266xIHXdY5MfiXPDfYwl7zBM7KOx2Ae3Gdgxy8QML1FkCMjq6AsOf0l6N9uvI4HcFtuFlenaldKg==, - } - engines: { node: ">=10" } - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - dependencies: - client-only: 0.0.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /@headlessui/tailwindcss@0.1.2(tailwindcss@3.3.1): - resolution: - { - integrity: sha512-AQNESz+f1grCxifrocOE6hDMDFqhqY0g3xrSGOS0ocGkmVkssaBzXaAPAPNSs/nHmr4ZUhfl5THQpYrvaouWlQ==, - } - engines: { node: ">=10" } - peerDependencies: - tailwindcss: ^3.0 - dependencies: - tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) - dev: false - - /@helium/account-fetch-cache-hooks@0.2.11(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-pHHbsQlZQjS/P2y96oWC1Mne+U+W1axmuHixzI6GpRK+MZSaffegqtGbuANS8dR1HMU/lpef2Izz6n0MwhFNIg==, - } - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 - dependencies: - "@helium/account-fetch-cache": 0.2.5(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - react: 18.3.1 - react-async-hook: 4.0.0(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/account-fetch-cache@0.2.5(encoding@0.1.13): - resolution: - { - integrity: sha512-Cv8ST15awWpaHJGkY3SGeb+BuZ0wzbS3AMtQ8ZAeUr+XuJ5mbaGZUE9QPI9dNPKV1txzgn4JkEs+BQywt8LwRg==, - } - dependencies: - "@solana/web3.js": 1.75.0(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/address@4.10.2: - resolution: - { - integrity: sha512-qCswC7Z3GXuJyHv36RcOSnffeghjqJQx0fdu2Lxpf9fgOnIi1JZO2tjjk1mBaqOwCyp+0YzrTPUoEukL/WCtsA==, - } - dependencies: - bs58: 5.0.0 - js-sha256: 0.9.0 - multiformats: 9.9.0 - dev: false - - /@helium/address@4.8.1: - resolution: - { - integrity: sha512-OEqX9j8m4sIc6bmvGUWV3/AHeuJCBWIl9EvRpS9xOPy+mC17OkDiPwZI35DSbMlAM7cK7+UjKYZvIVQL/aCgSQ==, - } - dependencies: - bs58: 5.0.0 - js-sha256: 0.9.0 - multiformats: 9.9.0 - dev: false - - /@helium/anchor-resolvers@0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-AOVa93cbFEUSDHR6OWHk5SlwwrnyStAZbjM1AGGUJdZEVzR1YnkYCl8aFZtVBCkCPmFz5iZDBjEx32chhRsEJA==, - } - peerDependencies: - "@coral-xyz/anchor": ^0.26.0 - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/circuit-breaker-sdk@0.2.5(encoding@0.1.13): - resolution: - { - integrity: sha512-IG/f0ffY+lWPVOAYTH/yyloXRfCShUydwsyAjdYz4tI1tGVlysf88rR9kYWY/cJpep3ftemxZdvOwOSdhVt72A==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/anchor-resolvers": 0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13) - "@helium/idls": 0.2.21(encoding@0.1.13) - bn.js: 5.2.1 - bs58: 4.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/helium-react-hooks@0.2.11(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-smfZR0iOr41HFW4xUoIb0vd9vrGGWYrCmak5eMmLB8btNRQxtQ/Df2qSjQkT/DpUsnJFlNL9OCt6AJWyiM55UQ==, - } - peerDependencies: - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/account-fetch-cache": 0.2.5(encoding@0.1.13) - "@helium/account-fetch-cache-hooks": 0.2.11(encoding@0.1.13)(react-dom@18.3.1)(react@18.3.1) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bs58: 5.0.0 - pako: 2.1.0 - react: 18.3.1 - react-async-hook: 4.0.0(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/helium-sub-daos-sdk@0.2.5(@solana/web3.js@1.75.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-U+AT8t3wJhZTambCtSHnvXBl+5fVw2NhQ49AgbzKm3Yo3JBnyXJ31mdTGyeT67QrviOW2nOmU8adozp7AXsiOw==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/anchor-resolvers": 0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13) - "@helium/circuit-breaker-sdk": 0.2.5(encoding@0.1.13) - "@helium/treasury-management-sdk": 0.2.5(encoding@0.1.13) - "@helium/voter-stake-registry-sdk": 0.2.5(@solana/web3.js@1.75.0)(encoding@0.1.13) - bn.js: 5.2.1 - bs58: 4.0.1 - transitivePeerDependencies: - - "@solana/web3.js" - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/idls@0.1.1(encoding@0.1.13): - resolution: - { - integrity: sha512-1uHs1Jv1/bjbe2SATDUukicy7iz7OWA79sSxNuSzZeL8eXJEAAe5yaP0ZXEb1x2jRhRCzhjFkZDKLz9snnfE2g==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/idls@0.2.21(encoding@0.1.13): - resolution: - { - integrity: sha512-xeeidPensb7qT3EGfn9Kqf2FUL03Y8QIBVzy3YHOL44aOWZFFScRP7xp4lCzQPefQd6+5NNkPzRnhlgh2XnCgg==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/idls@0.4.0(encoding@0.1.13): - resolution: - { - integrity: sha512-O12y7DmEOMSDILB8FQzbnpjWwRGjtI1xNAdqrHxRQcxgZ4Otyr4WkQZaME5YiZ2WFp+VrLHXyYHksdLV95ROKQ==, - } - dependencies: - "@coral-xyz/anchor": 0.28.0(encoding@0.1.13) - "@solana/web3.js": 1.78.5(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/spl-utils@0.1.4(encoding@0.1.13): - resolution: - { - integrity: sha512-QhEhJuOd9P8GbUKx5f9zI1m2zjN9si/IrAlDQk4gkFBDFsi4szzY03rj4CwyhmwIYJk/qi1b4JiMoRIinFutJg==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/address": 4.8.1 - "@solana/spl-account-compression": 0.1.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 5.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/spl-utils@0.2.13(encoding@0.1.13): - resolution: - { - integrity: sha512-N68djQJI3HiX6MFLfjAteYzpxhd6pAee0rzy92OdoK0vT6iIL4F0Q9kx385n+Wtda8xbItWtqsNHKkdra8rSCg==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/account-fetch-cache": 0.2.5(encoding@0.1.13) - "@helium/address": 4.10.2 - "@helium/anchor-resolvers": 0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13) - "@metaplex-foundation/mpl-token-metadata": 2.9.1(encoding@0.1.13) - "@solana/spl-account-compression": 0.1.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 5.0.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/treasury-management-sdk@0.2.5(encoding@0.1.13): - resolution: - { - integrity: sha512-j1faBZ52KLAaCz5GHmK5Xugg7PvOi5kpP4PmB0DmTRdhF8f7mfTIPWvD/SVI1vIQ4p1ng8ucURKTpCWRGRzIqA==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/anchor-resolvers": 0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13) - "@helium/circuit-breaker-sdk": 0.2.5(encoding@0.1.13) - "@helium/idls": 0.2.21(encoding@0.1.13) - bn.js: 5.2.1 - bs58: 4.0.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/voter-stake-registry-sdk@0.1.4(@solana/web3.js@1.75.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-8f+dWaS1IbSuybrvyvchuOd/NP9fCx8jCVyl02pKkURFZC0WdPckiaw+5kh2/y29nwwZJlVqdu7I7C2TR/6uyQ==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/idls": 0.1.1(encoding@0.1.13) - "@helium/spl-utils": 0.1.4(encoding@0.1.13) - "@metaplex-foundation/mpl-token-metadata": 2.9.1(encoding@0.1.13) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - bn.js: 5.2.1 - bs58: 4.0.1 - transitivePeerDependencies: - - "@solana/web3.js" - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@helium/voter-stake-registry-sdk@0.2.5(@solana/web3.js@1.75.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-+u87bpAHDZRosMEjqa3xTGSGEvFjrC6Mq6b0AqzMOAc0z3rYxNCRaSXRZ9fpOoGwm+hJfVTdP9JEHt82dqs6wQ==, - } - dependencies: - "@coral-xyz/anchor": 0.26.0(encoding@0.1.13) - "@helium/anchor-resolvers": 0.2.5(@coral-xyz/anchor@0.26.0)(encoding@0.1.13) - "@helium/idls": 0.2.21(encoding@0.1.13) - "@metaplex-foundation/mpl-token-metadata": 2.9.1(encoding@0.1.13) - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - bn.js: 5.2.1 - bs58: 4.0.1 - transitivePeerDependencies: - - "@solana/web3.js" - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@heroicons/react@2.0.17(react@18.3.1): - resolution: - { - integrity: sha512-90GMZktkA53YbNzHp6asVEDevUQCMtxWH+2UK2S8OpnLEu7qckTJPhNxNQG52xIR1WFTwFqtH6bt7a60ZNcLLA==, - } - peerDependencies: - react: ">= 16" - dependencies: - react: 18.3.1 - dev: false - - /@humanwhocodes/config-array@0.11.14: - resolution: - { - integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==, - } - engines: { node: ">=10.10.0" } - deprecated: Use @eslint/config-array instead - dependencies: - "@humanwhocodes/object-schema": 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: ">=12.22" } - dev: true - - /@humanwhocodes/object-schema@2.0.3: - resolution: - { - integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, - } - deprecated: Use @eslint/object-schema instead - dev: true - - /@isaacs/cliui@8.0.2: - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: ">=8" } - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: ">=8" } - dev: true - - /@jest/console@29.6.1: - resolution: - { - integrity: sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - chalk: 4.1.2 - jest-message-util: 29.6.1 - jest-util: 29.6.1 - slash: 3.0.0 - dev: true - - /@jest/core@29.6.1(ts-node@10.9.1): - resolution: - { - integrity: sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/console": 29.6.1 - "@jest/reporters": 29.6.1 - "@jest/test-result": 29.6.1 - "@jest/transform": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.6.1(@types/node@18.15.11)(ts-node@10.9.1) - jest-haste-map: 29.6.1 - jest-message-util: 29.6.1 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.1 - jest-resolve-dependencies: 29.6.1 - jest-runner: 29.6.1 - jest-runtime: 29.6.1 - jest-snapshot: 29.6.1 - jest-util: 29.6.1 - jest-validate: 29.6.1 - jest-watcher: 29.6.1 - micromatch: 4.0.5 - pretty-format: 29.6.1 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /@jest/environment@29.6.1: - resolution: - { - integrity: sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/fake-timers": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - jest-mock: 29.6.1 - dev: true - - /@jest/expect-utils@29.6.1: - resolution: - { - integrity: sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-get-type: 29.4.3 - dev: true - - /@jest/expect@29.6.1: - resolution: - { - integrity: sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - expect: 29.6.1 - jest-snapshot: 29.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@29.6.1: - resolution: - { - integrity: sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - "@sinonjs/fake-timers": 10.3.0 - "@types/node": 18.15.11 - jest-message-util: 29.6.1 - jest-mock: 29.6.1 - jest-util: 29.6.1 - dev: true - - /@jest/globals@29.6.1: - resolution: - { - integrity: sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.6.1 - "@jest/expect": 29.6.1 - "@jest/types": 29.6.1 - jest-mock: 29.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters@29.6.1: - resolution: - { - integrity: sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@bcoe/v8-coverage": 0.2.3 - "@jest/console": 29.6.1 - "@jest/test-result": 29.6.1 - "@jest/transform": 29.6.1 - "@jest/types": 29.6.1 - "@jridgewell/trace-mapping": 0.3.18 - "@types/node": 18.15.11 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.6.1 - jest-util: 29.6.1 - jest-worker: 29.6.1 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas@29.6.0: - resolution: - { - integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@sinclair/typebox": 0.27.8 - dev: true - - /@jest/source-map@29.6.0: - resolution: - { - integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result@29.6.1: - resolution: - { - integrity: sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.6.1 - "@jest/types": 29.6.1 - "@types/istanbul-lib-coverage": 2.0.4 - collect-v8-coverage: 1.0.2 - dev: true - - /@jest/test-sequencer@29.6.1: - resolution: - { - integrity: sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.6.1 - graceful-fs: 4.2.11 - jest-haste-map: 29.6.1 - slash: 3.0.0 - dev: true - - /@jest/transform@29.6.1: - resolution: - { - integrity: sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/core": 7.22.8 - "@jest/types": 29.6.1 - "@jridgewell/trace-mapping": 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.6.1 - jest-regex-util: 29.4.3 - jest-util: 29.6.1 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@29.6.1: - resolution: - { - integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/schemas": 29.6.0 - "@types/istanbul-lib-coverage": 2.0.4 - "@types/istanbul-reports": 3.0.1 - "@types/node": 18.15.11 - "@types/yargs": 17.0.24 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: - { - integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, - } - engines: { node: ">=6.0.0" } - dependencies: - "@jridgewell/set-array": 1.1.2 - "@jridgewell/sourcemap-codec": 1.4.15 - "@jridgewell/trace-mapping": 0.3.18 - - /@jridgewell/resolve-uri@3.1.0: - resolution: - { - integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==, - } - engines: { node: ">=6.0.0" } - - /@jridgewell/resolve-uri@3.1.1: - resolution: - { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, - } - engines: { node: ">=6.0.0" } - - /@jridgewell/set-array@1.1.2: - resolution: - { - integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, - } - engines: { node: ">=6.0.0" } - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: - { - integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==, - } - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - - /@jridgewell/trace-mapping@0.3.18: - resolution: - { - integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==, - } - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - - /@jridgewell/trace-mapping@0.3.9: - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 - - /@mapbox/geojson-rewind@0.5.2: - resolution: - { - integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==, - } - hasBin: true - dependencies: - get-stream: 6.0.1 - minimist: 1.2.8 - dev: false - - /@mapbox/jsonlint-lines-primitives@2.0.2: - resolution: - { - integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==, - } - engines: { node: ">= 0.6" } - dev: false - - /@mapbox/mapbox-gl-supported@2.0.1: - resolution: - { - integrity: sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==, - } - dev: false - - /@mapbox/point-geometry@0.1.0: - resolution: - { - integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==, - } - dev: false - - /@mapbox/tiny-sdf@2.0.6: - resolution: - { - integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==, - } - dev: false - - /@mapbox/unitbezier@0.0.1: - resolution: - { - integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==, - } - dev: false - - /@mapbox/vector-tile@1.3.1: - resolution: - { - integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==, - } - dependencies: - "@mapbox/point-geometry": 0.1.0 - dev: false - - /@mapbox/whoots-js@3.1.0: - resolution: - { - integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==, - } - engines: { node: ">=6.0.0" } - dev: false - - /@maplibre/maplibre-gl-style-spec@19.3.1: - resolution: - { - integrity: sha512-ss5+b3/a8I1wD5PYmAYPYxg0Nag0cxvw4GGOnQroTP59sobTPI3KeHP9OjUr/es7uNtYEodr54fgoEnCBF6gaQ==, - } - hasBin: true - dependencies: - "@mapbox/jsonlint-lines-primitives": 2.0.2 - "@mapbox/unitbezier": 0.0.1 - json-stringify-pretty-compact: 3.0.0 - minimist: 1.2.8 - rw: 1.3.3 - sort-object: 3.0.3 - dev: false - - /@metaplex-foundation/beet-solana@0.4.0(encoding@0.1.13): - resolution: - { - integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==, - } - dependencies: - "@metaplex-foundation/beet": 0.7.1 - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bs58: 5.0.0 - debug: 4.3.4 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@metaplex-foundation/beet@0.7.1: - resolution: - { - integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==, - } - dependencies: - ansicolors: 0.3.2 - bn.js: 5.2.1 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /@metaplex-foundation/cusper@0.0.2: - resolution: - { - integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==, - } - dev: false - - /@metaplex-foundation/mpl-token-metadata@2.9.1(encoding@0.1.13): - resolution: - { - integrity: sha512-QmeWBG7y2Uu9FyD1JiclPmJtkYA1sd/Vh9US9H9zTGNWnyogM60hqZ9yVcibvkO+aSsWd0ZJIsMXZlewXIx0IQ==, - } - dependencies: - "@metaplex-foundation/beet": 0.7.1 - "@metaplex-foundation/beet-solana": 0.4.0(encoding@0.1.13) - "@metaplex-foundation/cusper": 0.0.2 - "@solana/spl-token": 0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - debug: 4.3.4 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@next/env@13.3.0: - resolution: - { - integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==, - } - dev: true - - /@next/env@14.2.4: - resolution: - { - integrity: sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg==, - } - dev: false - - /@next/eslint-plugin-next@14.2.4: - resolution: - { - integrity: sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA==, - } - dependencies: - glob: 10.3.10 - dev: true - - /@next/swc-darwin-arm64@14.2.4: - resolution: - { - integrity: sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-darwin-x64@14.2.4: - resolution: - { - integrity: sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-gnu@14.2.4: - resolution: - { - integrity: sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-arm64-musl@14.2.4: - resolution: - { - integrity: sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-gnu@14.2.4: - resolution: - { - integrity: sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-linux-x64-musl@14.2.4: - resolution: - { - integrity: sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-arm64-msvc@14.2.4: - resolution: - { - integrity: sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A==, - } - engines: { node: ">= 10" } - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-ia32-msvc@14.2.4: - resolution: - { - integrity: sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag==, - } - engines: { node: ">= 10" } - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@next/swc-win32-x64-msvc@14.2.4: - resolution: - { - integrity: sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg==, - } - engines: { node: ">= 10" } - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nicolo-ribaudo/semver-v6@6.3.3: - resolution: - { - integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==, - } - hasBin: true - - /@noble/curves@1.2.0: - resolution: - { - integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==, - } - dependencies: - "@noble/hashes": 1.3.2 - dev: false - - /@noble/ed25519@1.7.3: - resolution: - { - integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==, - } - dev: false - - /@noble/hashes@1.3.0: - resolution: - { - integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==, - } - dev: false - - /@noble/hashes@1.3.2: - resolution: - { - integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==, - } - engines: { node: ">= 16" } - dev: false - - /@noble/secp256k1@1.7.1: - resolution: - { - integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==, - } - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: ">= 8" } - - /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: ">= 8" } - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 - - /@pkgjs/parseargs@0.11.0: - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - requiresBuild: true - dev: true - optional: true - - /@rushstack/eslint-patch@1.10.3: - resolution: - { - integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==, - } - dev: true - - /@sinclair/typebox@0.27.8: - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - dev: true - - /@sinonjs/commons@3.0.0: - resolution: - { - integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==, - } - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@10.3.0: - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, - } - dependencies: - "@sinonjs/commons": 3.0.0 - dev: true - - /@solana/buffer-layout-utils@0.2.0(encoding@0.1.13): - resolution: - { - integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==, - } - engines: { node: ">= 10" } - dependencies: - "@solana/buffer-layout": 4.0.1 - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bigint-buffer: 1.1.5 - bignumber.js: 9.1.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@solana/buffer-layout@4.0.1: - resolution: - { - integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==, - } - engines: { node: ">=5.10" } - dependencies: - buffer: 6.0.3 - dev: false - - /@solana/spl-account-compression@0.1.7(@solana/web3.js@1.75.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-7BKXDpm2rRxmkIWAxq7jm/haRvLp4ZOaM9NMz3+zZtE+z+cWPY9lRKEWdH+RCAWNm1b0J0J+seqwb3hgf79nkA==, - } - engines: { node: ">=16" } - peerDependencies: - "@solana/web3.js": ^1.50.1 - dependencies: - "@metaplex-foundation/beet": 0.7.1 - "@metaplex-foundation/beet-solana": 0.4.0(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - bn.js: 5.2.1 - borsh: 0.7.0 - js-sha3: 0.8.0 - typescript-collections: 1.3.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@solana/spl-token@0.3.7(@solana/web3.js@1.75.0)(encoding@0.1.13): - resolution: - { - integrity: sha512-bKGxWTtIw6VDdCBngjtsGlKGLSmiu/8ghSt/IOYJV24BsymRbgq7r12GToeetpxmPaZYLddKwAz7+EwprLfkfg==, - } - engines: { node: ">=16" } - peerDependencies: - "@solana/web3.js": ^1.47.4 - dependencies: - "@solana/buffer-layout": 4.0.1 - "@solana/buffer-layout-utils": 0.2.0(encoding@0.1.13) - "@solana/web3.js": 1.75.0(encoding@0.1.13) - buffer: 6.0.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@solana/web3.js@1.75.0(encoding@0.1.13): - resolution: - { - integrity: sha512-rHQgdo1EWfb+nPUpHe4O7i8qJPELHKNR5PAZRK+a7XxiykqOfbaAlPt5boDWAGPnYbSv0ziWZv5mq9DlFaQCxg==, - } - dependencies: - "@babel/runtime": 7.21.5 - "@noble/ed25519": 1.7.3 - "@noble/hashes": 1.3.0 - "@noble/secp256k1": 1.7.1 - "@solana/buffer-layout": 4.0.1 - agentkeepalive: 4.3.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 3.7.0 - node-fetch: 2.6.9(encoding@0.1.13) - rpc-websockets: 7.5.1 - superstruct: 0.14.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@solana/web3.js@1.78.5(encoding@0.1.13): - resolution: - { - integrity: sha512-2ZHsDNqkKdglJQrIvJ3p2DmgS3cGnary3VJyqt9C1SPrpAtLYzcElr3xyXJOznyQTU/8AMw+GoF11lFoKbicKg==, - } - dependencies: - "@babel/runtime": 7.23.1 - "@noble/curves": 1.2.0 - "@noble/hashes": 1.3.2 - "@solana/buffer-layout": 4.0.1 - agentkeepalive: 4.3.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 7.5.1 - superstruct: 0.14.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@swc/counter@0.1.3: - resolution: - { - integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, - } - dev: false - - /@swc/helpers@0.5.5: - resolution: - { - integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==, - } - dependencies: - "@swc/counter": 0.1.3 - tslib: 2.6.3 - dev: false - - /@tailwindcss/forms@0.5.3(tailwindcss@3.3.1): - resolution: - { - integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==, - } - peerDependencies: - tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1" - dependencies: - mini-svg-data-uri: 1.4.4 - tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) - dev: false - - /@tailwindcss/typography@0.5.9(tailwindcss@3.3.1): - resolution: - { - integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==, - } - peerDependencies: - tailwindcss: ">=3.0.0 || insiders" - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) - dev: false - - /@testing-library/dom@9.3.1: - resolution: - { - integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==, - } - engines: { node: ">=14" } - dependencies: - "@babel/code-frame": 7.22.5 - "@babel/runtime": 7.22.3 - "@types/aria-query": 5.0.1 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true - - /@testing-library/jest-dom@5.16.5: - resolution: - { - integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==, - } - engines: { node: ">=8", npm: ">=6", yarn: ">=1" } - dependencies: - "@adobe/css-tools": 4.2.0 - "@babel/runtime": 7.22.3 - "@types/testing-library__jest-dom": 5.14.7 - aria-query: 5.1.3 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - lodash: 4.17.21 - redent: 3.0.0 - dev: true - - /@testing-library/react@14.0.0(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==, - } - engines: { node: ">=14" } - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - "@babel/runtime": 7.22.3 - "@testing-library/dom": 9.3.1 - "@types/react-dom": 18.3.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: true - - /@tootallnate/once@2.0.0: - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, - } - engines: { node: ">= 10" } - dev: true - - /@tsconfig/node10@1.0.9: - resolution: - { - integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==, - } - - /@tsconfig/node12@1.0.11: - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - /@tsconfig/node14@1.0.3: - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - /@tsconfig/node16@1.0.3: - resolution: - { - integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==, - } - - /@types/aria-query@5.0.1: - resolution: - { - integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==, - } - dev: true - - /@types/babel__core@7.20.1: - resolution: - { - integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==, - } - dependencies: - "@babel/parser": 7.22.7 - "@babel/types": 7.22.5 - "@types/babel__generator": 7.6.4 - "@types/babel__template": 7.4.1 - "@types/babel__traverse": 7.20.1 - dev: true - - /@types/babel__generator@7.6.4: - resolution: - { - integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==, - } - dependencies: - "@babel/types": 7.22.5 - dev: true - - /@types/babel__template@7.4.1: - resolution: - { - integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==, - } - dependencies: - "@babel/parser": 7.22.7 - "@babel/types": 7.22.5 - dev: true - - /@types/babel__traverse@7.20.1: - resolution: - { - integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==, - } - dependencies: - "@babel/types": 7.22.5 - dev: true - - /@types/connect@3.4.35: - resolution: - { - integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==, - } - dependencies: - "@types/node": 18.15.11 - dev: false - - /@types/d3-array@3.0.4: - resolution: - { - integrity: sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ==, - } - dev: false - - /@types/d3-color@3.1.0: - resolution: - { - integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==, - } - dev: false - - /@types/d3-ease@3.0.0: - resolution: - { - integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==, - } - dev: false - - /@types/d3-interpolate@3.0.1: - resolution: - { - integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==, - } - dependencies: - "@types/d3-color": 3.1.0 - dev: false - - /@types/d3-path@3.0.0: - resolution: - { - integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==, - } - dev: false - - /@types/d3-scale@4.0.3: - resolution: - { - integrity: sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==, - } - dependencies: - "@types/d3-time": 3.0.0 - dev: false - - /@types/d3-shape@3.1.1: - resolution: - { - integrity: sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==, - } - dependencies: - "@types/d3-path": 3.0.0 - dev: false - - /@types/d3-time@3.0.0: - resolution: - { - integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==, - } - dev: false - - /@types/d3-timer@3.0.0: - resolution: - { - integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==, - } - dev: false - - /@types/geojson@7946.0.10: - resolution: - { - integrity: sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==, - } - dev: false - - /@types/graceful-fs@4.1.6: - resolution: - { - integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==, - } - dependencies: - "@types/node": 18.15.11 - dev: true - - /@types/gtag.js@0.0.12: - resolution: - { - integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==, - } - dev: true - - /@types/istanbul-lib-coverage@2.0.4: - resolution: - { - integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==, - } - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==, - } - dependencies: - "@types/istanbul-lib-coverage": 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: - { - integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==, - } - dependencies: - "@types/istanbul-lib-report": 3.0.0 - dev: true - - /@types/jest@29.5.3: - resolution: - { - integrity: sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==, - } - dependencies: - expect: 29.6.1 - pretty-format: 29.6.1 - dev: true - - /@types/jsdom@20.0.1: - resolution: - { - integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==, - } - dependencies: - "@types/node": 18.15.11 - "@types/tough-cookie": 4.0.2 - parse5: 7.1.2 - dev: true - - /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - dev: true - - /@types/mapbox-gl@2.7.10: - resolution: - { - integrity: sha512-nMVEcu9bAcenvx6oPWubQSPevsekByjOfKjlkr+8P91vawtkxTnopDoXXq1Qn/f4cg3zt0Z2W9DVsVsKRNXJTw==, - } - dependencies: - "@types/geojson": 7946.0.10 - dev: false - - /@types/mapbox__point-geometry@0.1.2: - resolution: - { - integrity: sha512-D0lgCq+3VWV85ey1MZVkE8ZveyuvW5VAfuahVTQRpXFQTxw03SuIf1/K4UQ87MMIXVKzpFjXFiFMZzLj2kU+iA==, - } - dev: false - - /@types/mapbox__vector-tile@1.3.0: - resolution: - { - integrity: sha512-kDwVreQO5V4c8yAxzZVQLE5tyWF+IPToAanloQaSnwfXmIcJ7cyOrv8z4Ft4y7PsLYmhWXmON8MBV8RX0Rgr8g==, - } - dependencies: - "@types/geojson": 7946.0.10 - "@types/mapbox__point-geometry": 0.1.2 - "@types/pbf": 3.0.2 - dev: false - - /@types/node@12.20.55: - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - dev: false - - /@types/node@18.15.11: - resolution: - { - integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==, - } - - /@types/pbf@3.0.2: - resolution: - { - integrity: sha512-EDrLIPaPXOZqDjrkzxxbX7UlJSeQVgah3i0aA4pOSzmK9zq3BIh7/MZIQxED7slJByvKM4Gc6Hypyu2lJzh3SQ==, - } - dev: false - - /@types/prettier@2.7.3: - resolution: - { - integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, - } - dev: true - - /@types/prop-types@15.7.12: - resolution: - { - integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==, - } - dev: true - - /@types/react-dom@18.3.0: - resolution: - { - integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==, - } - dependencies: - "@types/react": 18.3.3 - dev: true - - /@types/react@18.3.3: - resolution: - { - integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==, - } - dependencies: - "@types/prop-types": 15.7.12 - csstype: 3.1.3 - dev: true - - /@types/stack-utils@2.0.1: - resolution: - { - integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==, - } - dev: true - - /@types/supercluster@7.1.0: - resolution: - { - integrity: sha512-6JapQ2GmEkH66r23BK49I+u6zczVDGTtiJEVvKDYZVSm/vepWaJuTq6BXzJ6I4agG5s8vA1KM7m/gXWDg03O4Q==, - } - dependencies: - "@types/geojson": 7946.0.10 - dev: false - - /@types/testing-library__jest-dom@5.14.7: - resolution: - { - integrity: sha512-PFDoAbR9y8pD9+41oM1Yy0nVCkaRPlklmDZoPCXhNpR0ZO13HAYWqdNEjLtvIiveBmfB/+jdvmuOVeOXehKOaA==, - } - dependencies: - "@types/jest": 29.5.3 - dev: true - - /@types/tough-cookie@4.0.2: - resolution: - { - integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==, - } - dev: true - - /@types/ws@7.4.7: - resolution: - { - integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==, - } - dependencies: - "@types/node": 18.15.11 - dev: false - - /@types/yargs-parser@21.0.0: - resolution: - { - integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==, - } - dev: true - - /@types/yargs@17.0.24: - resolution: - { - integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==, - } - dependencies: - "@types/yargs-parser": 21.0.0 - dev: true - - /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^8.56.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/scope-manager": 7.2.0 - "@typescript-eslint/types": 7.2.0 - "@typescript-eslint/typescript-estree": 7.2.0(typescript@5.0.4) - "@typescript-eslint/visitor-keys": 7.2.0 - debug: 4.3.5 - eslint: 8.57.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@7.2.0: - resolution: - { - integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - dependencies: - "@typescript-eslint/types": 7.2.0 - "@typescript-eslint/visitor-keys": 7.2.0 - dev: true - - /@typescript-eslint/types@7.2.0: - resolution: - { - integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - dev: true - - /@typescript-eslint/typescript-estree@7.2.0(typescript@5.0.4): - resolution: - { - integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/types": 7.2.0 - "@typescript-eslint/visitor-keys": 7.2.0 - debug: 4.3.5 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/visitor-keys@7.2.0: - resolution: - { - integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - dependencies: - "@typescript-eslint/types": 7.2.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: - { - integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, - } - dev: true - - /JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - dev: false - - /abab@2.0.6: - resolution: - { - integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, - } - dev: true - - /acorn-globals@7.0.1: - resolution: - { - integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, - } - dependencies: - acorn: 8.8.2 - acorn-walk: 8.2.0 - dev: true - - /acorn-jsx@5.3.2(acorn@8.12.0): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.12.0 - dev: true - - /acorn-walk@8.2.0: - resolution: - { - integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, - } - engines: { node: ">=0.4.0" } - - /acorn@8.12.0: - resolution: - { - integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==, - } - engines: { node: ">=0.4.0" } - hasBin: true - dev: true - - /acorn@8.8.2: - resolution: - { - integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, - } - engines: { node: ">=0.4.0" } - hasBin: true - - /agent-base@6.0.2: - resolution: - { - integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, - } - engines: { node: ">= 6.0.0" } - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /agentkeepalive@4.3.0: - resolution: - { - integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==, - } - engines: { node: ">= 8.0.0" } - dependencies: - debug: 4.3.4 - depd: 2.0.0 - humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /aggregate-error@3.1.0: - resolution: - { - integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, - } - engines: { node: ">=8" } - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - - /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /angry-purple-tiger@1.0.5: - resolution: - { - integrity: sha512-IhVFyt86Dz1/wbsGsuBM5l5Ea3qe4fVQ3DnA6DkwDsojnA/p99++phO+8ivvbsb3tmxB6CmDpIbuqSd0xDRFOg==, - } - dependencies: - md5: 2.3.0 - dev: false - - /ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: ">=8" } - dependencies: - type-fest: 0.21.3 - dev: true - - /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - dev: true - - /ansi-regex@6.0.1: - resolution: - { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, - } - engines: { node: ">=12" } - dev: true - - /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: ">=4" } - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - dependencies: - color-convert: 2.0.1 - dev: true - - /ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: ">=10" } - dev: true - - /ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } - dev: true - - /ansicolors@0.3.2: - resolution: - { - integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==, - } - dev: false - - /any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } - dev: false - - /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - /arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } - - /arg@5.0.2: - resolution: - { - integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, - } - dev: false - - /argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - dev: true - - /aria-query@5.1.3: - resolution: - { - integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==, - } - dependencies: - deep-equal: 2.2.1 - dev: true - - /arr-union@3.1.0: - resolution: - { - integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==, - } - engines: { node: ">=0.10.0" } - dev: false - - /array-buffer-byte-length@1.0.0: - resolution: - { - integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, - } - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: true - - /array-buffer-byte-length@1.0.1: - resolution: - { - integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - dev: true - - /array-includes@3.1.8: - resolution: - { - integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: ">=8" } - dev: true - - /array.prototype.findlast@1.2.5: - resolution: - { - integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.findlastindex@1.2.5: - resolution: - { - integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flat@1.3.2: - resolution: - { - integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: - { - integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.toreversed@1.1.2: - resolution: - { - integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==, - } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.tosorted@1.1.4: - resolution: - { - integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - dev: true - - /arraybuffer.prototype.slice@1.0.3: - resolution: - { - integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==, - } - engines: { node: ">= 0.4" } - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - dev: true - - /assign-symbols@1.0.0: - resolution: - { - integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==, - } - engines: { node: ">=0.10.0" } - dev: false - - /ast-types-flow@0.0.8: - resolution: - { - integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==, - } - dev: true - - /astral-regex@2.0.0: - resolution: - { - integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, - } - engines: { node: ">=8" } - dev: true - - /asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } - - /autoprefixer@10.4.14(postcss@8.4.21): - resolution: - { - integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==, - } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.5 - caniuse-lite: 1.0.30001570 - fraction.js: 4.2.0 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - dev: true - - /available-typed-arrays@1.0.5: - resolution: - { - integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, - } - engines: { node: ">= 0.4" } - dev: true - - /available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: ">= 0.4" } - dependencies: - possible-typed-array-names: 1.0.0 - dev: true - - /axe-core@4.9.1: - resolution: - { - integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==, - } - engines: { node: ">=4" } - dev: true - - /axios@1.3.5: - resolution: - { - integrity: sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==, - } - dependencies: - follow-redirects: 1.15.2 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - - /axobject-query@3.1.1: - resolution: - { - integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==, - } - dependencies: - deep-equal: 2.2.3 - dev: true - - /babel-jest@29.6.1(@babel/core@7.22.8): - resolution: - { - integrity: sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.8.0 - dependencies: - "@babel/core": 7.22.8 - "@jest/transform": 29.6.1 - "@types/babel__core": 7.20.1 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.8) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: ">=8" } - dependencies: - "@babel/helper-plugin-utils": 7.22.5 - "@istanbuljs/load-nyc-config": 1.1.0 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: - { - integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/template": 7.22.5 - "@babel/types": 7.22.5 - "@types/babel__core": 7.20.1 - "@types/babel__traverse": 7.20.1 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.8): - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, - } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.22.8 - "@babel/plugin-syntax-async-generators": 7.8.4(@babel/core@7.22.8) - "@babel/plugin-syntax-bigint": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-class-properties": 7.12.13(@babel/core@7.22.8) - "@babel/plugin-syntax-import-meta": 7.10.4(@babel/core@7.22.8) - "@babel/plugin-syntax-json-strings": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-logical-assignment-operators": 7.10.4(@babel/core@7.22.8) - "@babel/plugin-syntax-nullish-coalescing-operator": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-numeric-separator": 7.10.4(@babel/core@7.22.8) - "@babel/plugin-syntax-object-rest-spread": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-optional-catch-binding": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-optional-chaining": 7.8.3(@babel/core@7.22.8) - "@babel/plugin-syntax-top-level-await": 7.14.5(@babel/core@7.22.8) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.8): - resolution: - { - integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@babel/core": ^7.0.0 - dependencies: - "@babel/core": 7.22.8 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.8) - dev: true - - /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - /base-x@3.0.9: - resolution: - { - integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==, - } - dependencies: - safe-buffer: 5.2.1 - dev: false - - /base-x@4.0.0: - resolution: - { - integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==, - } - dev: false - - /base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - - /better-sqlite3@8.5.0: - resolution: - { - integrity: sha512-vbPcv/Hx5WYdyNg/NbcfyaBZyv9s/NVbxb7yCeC5Bq1pVocNxeL2tZmSu3Rlm4IEOTjYdGyzWQgyx0OSdORBzw==, - } - requiresBuild: true - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.1 - dev: false - - /bigint-buffer@1.1.5: - resolution: - { - integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==, - } - engines: { node: ">= 10.0.0" } - requiresBuild: true - dependencies: - bindings: 1.5.0 - dev: false - - /bignumber.js@9.1.1: - resolution: - { - integrity: sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==, - } - dev: false - - /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, - } - engines: { node: ">=8" } - dev: false - - /bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } - dependencies: - file-uri-to-path: 1.0.0 - dev: false - - /bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - /bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - dev: false - - /borsh@0.7.0: - resolution: - { - integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==, - } - dependencies: - bn.js: 5.2.1 - bs58: 4.0.1 - text-encoding-utf-8: 1.0.2 - dev: false - - /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } - dependencies: - balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: ">=8" } - dependencies: - fill-range: 7.0.1 - - /braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: ">=8" } - dependencies: - fill-range: 7.1.1 - dev: true - - /browserslist@4.21.5: - resolution: - { - integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - dependencies: - caniuse-lite: 1.0.30001570 - electron-to-chromium: 1.4.382 - node-releases: 2.0.10 - update-browserslist-db: 1.0.11(browserslist@4.21.5) - dev: true - - /browserslist@4.21.9: - resolution: - { - integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - dependencies: - caniuse-lite: 1.0.30001636 - electron-to-chromium: 1.4.455 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) - - /bs58@4.0.1: - resolution: - { - integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==, - } - dependencies: - base-x: 3.0.9 - dev: false - - /bs58@5.0.0: - resolution: - { - integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==, - } - dependencies: - base-x: 4.0.0 - dev: false - - /bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - dev: true - - /buffer-layout@1.2.2: - resolution: - { - integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==, - } - engines: { node: ">=4.5" } - dev: false - - /buffer-writer@2.0.0: - resolution: - { - integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==, - } - engines: { node: ">=4" } - dev: false - - /buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - /buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /bufferutil@4.0.8: - resolution: - { - integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==, - } - engines: { node: ">=6.14.2" } - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - - /busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, - } - engines: { node: ">=10.16.0" } - dependencies: - streamsearch: 1.1.0 - dev: false - - /bytewise-core@1.2.3: - resolution: - { - integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==, - } - dependencies: - typewise-core: 1.2.0 - dev: false - - /bytewise@1.1.0: - resolution: - { - integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==, - } - dependencies: - bytewise-core: 1.2.3 - typewise: 1.0.3 - dev: false - - /call-bind@1.0.2: - resolution: - { - integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, - } - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 - dev: true - - /call-bind@1.0.7: - resolution: - { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, - } - engines: { node: ">= 0.4" } - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: true - - /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: ">=6" } - dev: true - - /camelcase-css@2.0.1: - resolution: - { - integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, - } - engines: { node: ">= 6" } - dev: false - - /camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: ">=6" } - dev: true - - /camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: ">=10" } - - /caniuse-lite@1.0.30001570: - resolution: - { - integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==, - } - dev: true - - /caniuse-lite@1.0.30001636: - resolution: - { - integrity: sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg==, - } - - /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: ">=4" } - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@3.0.0: - resolution: - { - integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, - } - engines: { node: ">=8" } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@5.2.0: - resolution: - { - integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - dev: true - - /char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: ">=10" } - dev: true - - /charenc@0.0.2: - resolution: - { - integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==, - } - dev: false - - /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: ">= 8.10.0" } - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /chownr@1.1.4: - resolution: - { - integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, - } - - /ci-info@3.8.0: - resolution: - { - integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==, - } - engines: { node: ">=8" } - dev: true - - /cjs-module-lexer@1.2.3: - resolution: - { - integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==, - } - dev: true - - /classnames@2.3.2: - resolution: - { - integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==, - } - dev: false - - /clean-stack@2.2.0: - resolution: - { - integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, - } - engines: { node: ">=6" } - dev: true - - /cli-cursor@3.1.0: - resolution: - { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, - } - engines: { node: ">=8" } - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-truncate@2.1.0: - resolution: - { - integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==, - } - engines: { node: ">=8" } - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: true - - /cli-truncate@3.1.0: - resolution: - { - integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: true - - /client-only@0.0.1: - resolution: - { - integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, - } - dev: false - - /cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: ">=12" } - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clsx@1.2.1: - resolution: - { - integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==, - } - engines: { node: ">=6" } - dev: false - - /co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: ">= 1.0.0", node: ">= 0.12.0" } - dev: true - - /collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, - } - dev: true - - /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } - - /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - - /color-string@1.9.1: - resolution: - { - integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==, - } - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: true - - /color@4.2.3: - resolution: - { - integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==, - } - engines: { node: ">=12.5.0" } - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: true - - /colorette@2.0.19: - resolution: - { - integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==, - } - dev: false - - /colorette@2.0.20: - resolution: - { - integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, - } - dev: true - - /combined-stream@1.0.8: - resolution: - { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, - } - engines: { node: ">= 0.8" } - dependencies: - delayed-stream: 1.0.0 - - /commander@10.0.1: - resolution: - { - integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==, - } - engines: { node: ">=14" } - - /commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } - dev: false - - /commander@4.1.1: - resolution: - { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, - } - engines: { node: ">= 6" } - dev: false - - /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - - /convert-source-map@1.9.0: - resolution: - { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, - } - - /convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } - dev: true - - /create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } - - /cross-fetch@3.1.5(encoding@0.1.13): - resolution: - { - integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==, - } - dependencies: - node-fetch: 2.6.7(encoding@0.1.13) - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /crypt@0.0.2: - resolution: - { - integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==, - } - dev: false - - /crypto-hash@1.3.0: - resolution: - { - integrity: sha512-lyAZ0EMyjDkVvz8WOeVnuCPvKVBXcMv1l5SVqO1yC7PzTwrD/pPje/BIRbWhMoPe436U+Y2nD7f5bFx0kt+Sbg==, - } - engines: { node: ">=8" } - dev: false - - /css-unit-converter@1.1.2: - resolution: - { - integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==, - } - dev: false - - /css.escape@1.5.1: - resolution: - { - integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==, - } - dev: true - - /csscolorparser@1.0.3: - resolution: - { - integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==, - } - dev: false - - /cssesc@3.0.0: - resolution: - { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, - } - engines: { node: ">=4" } - hasBin: true - - /cssom@0.3.8: - resolution: - { - integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, - } - dev: true - - /cssom@0.5.0: - resolution: - { - integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, - } - dev: true - - /cssstyle@2.3.0: - resolution: - { - integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, - } - engines: { node: ">=8" } - dependencies: - cssom: 0.3.8 - dev: true - - /csstype@3.1.3: - resolution: - { - integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, - } - dev: true - - /d3-array@3.2.3: - resolution: - { - integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==, - } - engines: { node: ">=12" } - dependencies: - internmap: 2.0.3 - dev: false - - /d3-color@3.1.0: - resolution: - { - integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==, - } - engines: { node: ">=12" } - dev: false - - /d3-ease@3.0.1: - resolution: - { - integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==, - } - engines: { node: ">=12" } - dev: false - - /d3-format@3.1.0: - resolution: - { - integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==, - } - engines: { node: ">=12" } - dev: false - - /d3-interpolate@3.0.1: - resolution: - { - integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==, - } - engines: { node: ">=12" } - dependencies: - d3-color: 3.1.0 - dev: false - - /d3-path@3.1.0: - resolution: - { - integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==, - } - engines: { node: ">=12" } - dev: false - - /d3-scale@4.0.2: - resolution: - { - integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==, - } - engines: { node: ">=12" } - dependencies: - d3-array: 3.2.3 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - dev: false - - /d3-shape@3.2.0: - resolution: - { - integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==, - } - engines: { node: ">=12" } - dependencies: - d3-path: 3.1.0 - dev: false - - /d3-time-format@4.1.0: - resolution: - { - integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==, - } - engines: { node: ">=12" } - dependencies: - d3-time: 3.1.0 - dev: false - - /d3-time@3.1.0: - resolution: - { - integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==, - } - engines: { node: ">=12" } - dependencies: - d3-array: 3.2.3 - dev: false - - /d3-timer@3.0.1: - resolution: - { - integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==, - } - engines: { node: ">=12" } - dev: false - - /damerau-levenshtein@1.0.8: - resolution: - { - integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, - } - dev: true - - /data-urls@3.0.2: - resolution: - { - integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, - } - engines: { node: ">=12" } - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - dev: true - - /data-view-buffer@1.0.1: - resolution: - { - integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-length@1.0.1: - resolution: - { - integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-offset@1.0.0: - resolution: - { - integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /date-fns@2.29.3: - resolution: - { - integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==, - } - engines: { node: ">=0.11" } - dev: false - - /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /debug@4.3.5: - resolution: - { - integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==, - } - engines: { node: ">=6.0" } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decimal.js-light@2.5.1: - resolution: - { - integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==, - } - dev: false - - /decimal.js@10.4.3: - resolution: - { - integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, - } - dev: true - - /decompress-response@6.0.0: - resolution: - { - integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, - } - engines: { node: ">=10" } - dependencies: - mimic-response: 3.1.0 - - /dedent@0.7.0: - resolution: - { - integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, - } - dev: true - - /deep-equal@2.2.1: - resolution: - { - integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==, - } - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.1 - is-arguments: 1.1.1 - is-array-buffer: 3.0.2 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.9 - dev: true - - /deep-equal@2.2.3: - resolution: - { - integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==, - } - engines: { node: ">= 0.4" } - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /deep-extend@0.6.0: - resolution: - { - integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, - } - engines: { node: ">=4.0.0" } - - /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } - dev: true - - /deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: ">=0.10.0" } - dev: true - - /define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: ">= 0.4" } - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - - /define-properties@1.2.0: - resolution: - { - integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, - } - engines: { node: ">= 0.4" } - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: ">= 0.4" } - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: true - - /delay@5.0.0: - resolution: - { - integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==, - } - engines: { node: ">=10" } - dev: false - - /delayed-stream@1.0.0: - resolution: - { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, - } - engines: { node: ">=0.4.0" } - - /depd@2.0.0: - resolution: - { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, - } - engines: { node: ">= 0.8" } - dev: false - - /detect-libc@2.0.1: - resolution: - { - integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==, - } - engines: { node: ">=8" } - - /detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: ">=8" } - dev: true - - /didyoumean@1.2.2: - resolution: - { - integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, - } - dev: false - - /diff-sequences@29.4.3: - resolution: - { - integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } - - /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: ">=8" } - dependencies: - path-type: 4.0.0 - dev: true - - /dlv@1.1.3: - resolution: - { - integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, - } - dev: false - - /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, - } - engines: { node: ">=0.10.0" } - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, - } - engines: { node: ">=6.0.0" } - dependencies: - esutils: 2.0.3 - dev: true - - /dom-accessibility-api@0.5.16: - resolution: - { - integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, - } - dev: true - - /dom-helpers@3.4.0: - resolution: - { - integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==, - } - dependencies: - "@babel/runtime": 7.22.3 - dev: false - - /domexception@4.0.0: - resolution: - { - integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, - } - engines: { node: ">=12" } - dependencies: - webidl-conversions: 7.0.0 - dev: true - - /dot-case@3.0.4: - resolution: - { - integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.5.0 - dev: false - - /dotenv@16.3.1: - resolution: - { - integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==, - } - engines: { node: ">=12" } - dev: false - - /earcut@2.2.4: - resolution: - { - integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==, - } - dev: false - - /eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } - dev: true - - /electron-to-chromium@1.4.382: - resolution: - { - integrity: sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg==, - } - dev: true - - /electron-to-chromium@1.4.455: - resolution: - { - integrity: sha512-8tgdX0Odl24LtmLwxotpJCVjIndN559AvaOtd67u+2mo+IDsgsTF580NB+uuDCqsHw8yFg53l5+imFV9Fw3cbA==, - } - - /emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: ">=12" } - dev: true - - /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - dev: true - - /emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - dev: true - - /encoding@0.1.13: - resolution: - { - integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, - } - dependencies: - iconv-lite: 0.6.3 - dev: false - - /end-of-stream@1.4.4: - resolution: - { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, - } - dependencies: - once: 1.4.0 - - /enhanced-resolve@5.17.0: - resolution: - { - integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==, - } - engines: { node: ">=10.13.0" } - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - - /entities@4.5.0: - resolution: - { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, - } - engines: { node: ">=0.12" } - dev: true - - /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract@1.23.3: - resolution: - { - integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==, - } - engines: { node: ">= 0.4" } - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /es-define-property@1.0.0: - resolution: - { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, - } - engines: { node: ">= 0.4" } - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: ">= 0.4" } - dev: true - - /es-get-iterator@1.1.3: - resolution: - { - integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - - /es-iterator-helpers@1.0.19: - resolution: - { - integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - dev: true - - /es-object-atoms@1.0.0: - resolution: - { - integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==, - } - engines: { node: ">= 0.4" } - dependencies: - es-errors: 1.3.0 - dev: true - - /es-set-tostringtag@2.0.3: - resolution: - { - integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==, - } - engines: { node: ">= 0.4" } - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - - /es-shim-unscopables@1.0.2: - resolution: - { - integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==, - } - dependencies: - hasown: 2.0.2 - dev: true - - /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, - } - engines: { node: ">= 0.4" } - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /es6-promise@4.2.8: - resolution: - { - integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==, - } - dev: false - - /es6-promisify@5.0.0: - resolution: - { - integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, - } - dependencies: - es6-promise: 4.2.8 - dev: false - - /escalade@3.1.1: - resolution: - { - integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, - } - engines: { node: ">=6" } - - /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: ">=0.8.0" } - - /escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: ">=8" } - dev: true - - /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: ">=10" } - dev: true - - /escodegen@2.1.0: - resolution: - { - integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, - } - engines: { node: ">=6.0" } - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - - /eslint-config-next@14.2.4(eslint@8.57.0)(typescript@5.0.4): - resolution: - { - integrity: sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw==, - } - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: ">=3.3.1" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@next/eslint-plugin-next": 14.2.4 - "@rushstack/eslint-patch": 1.10.3 - "@typescript-eslint/parser": 7.2.0(eslint@8.57.0)(typescript@5.0.4) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.9.0(eslint@8.57.0) - eslint-plugin-react: 7.34.3(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - typescript: 5.0.4 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-config-prettier@8.8.0(eslint@8.57.0): - resolution: - { - integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==, - } - hasBin: true - peerDependencies: - eslint: ">=7.0.0" - dependencies: - eslint: 8.57.0 - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: - { - integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, - } - dependencies: - debug: 3.2.7 - is-core-module: 2.14.0 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: - { - integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==, - } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - dependencies: - debug: 4.3.5 - enhanced-resolve: 5.17.0 - eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.5 - is-core-module: 2.14.0 - is-glob: 4.0.3 - transitivePeerDependencies: - - "@typescript-eslint/parser" - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: - { - integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - "@typescript-eslint/parser": 7.2.0(eslint@8.57.0)(typescript@5.0.4) - debug: 3.2.7 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): - resolution: - { - integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - dependencies: - "@typescript-eslint/parser": 7.2.0(eslint@8.57.0)(typescript@5.0.4) - 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: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.14.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): - resolution: - { - integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==, - } - engines: { node: ">=4.0" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - aria-query: 5.1.3 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.9.1 - axobject-query: 3.1.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 - string.prototype.includes: 2.0.0 - dev: true - - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: - { - integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==, - } - engines: { node: ">=10" } - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.57.0 - dev: true - - /eslint-plugin-react@7.34.3(eslint@8.57.0): - resolution: - { - integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==, - } - engines: { node: ">=4" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - dev: true - - /eslint-scope@7.2.2: - resolution: - { - integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /eslint@8.57.0: - resolution: - { - integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.57.0) - "@eslint-community/regexpp": 4.10.1 - "@eslint/eslintrc": 2.1.4 - "@eslint/js": 8.57.0 - "@humanwhocodes/config-array": 0.11.14 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - "@ungap/structured-clone": 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /esm@3.2.25: - resolution: - { - integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==, - } - engines: { node: ">=6" } - dev: false - - /espree@9.6.1: - resolution: - { - integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dependencies: - acorn: 8.12.0 - acorn-jsx: 5.3.2(acorn@8.12.0) - eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: ">=4" } - hasBin: true - dev: true - - /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, - } - engines: { node: ">=0.10" } - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: ">=4.0" } - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: ">=4.0" } - dev: true - - /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: ">=0.10.0" } - dev: true - - /eventemitter3@4.0.7: - resolution: - { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, - } - dev: false - - /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: ">=10" } - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@7.1.1: - resolution: - { - integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==, - } - engines: { node: ^14.18.0 || ^16.14.0 || >=18.0.0 } - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - - /exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: ">= 0.8.0" } - dev: true - - /expand-template@2.0.3: - resolution: - { - integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, - } - engines: { node: ">=6" } - - /expect@29.6.1: - resolution: - { - integrity: sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/expect-utils": 29.6.1 - "@types/node": 18.15.11 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.6.1 - jest-message-util: 29.6.1 - jest-util: 29.6.1 - dev: true - - /extend-shallow@2.0.1: - resolution: - { - integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-extendable: 0.1.1 - dev: false - - /extend-shallow@3.0.2: - resolution: - { - integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==, - } - engines: { node: ">=0.10.0" } - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: false - - /eyes@0.1.8: - resolution: - { - integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==, - } - engines: { node: "> 0.1.90" } - dev: false - - /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - dev: true - - /fast-equals@4.0.3: - resolution: - { - integrity: sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==, - } - dev: false - - /fast-glob@3.2.12: - resolution: - { - integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==, - } - engines: { node: ">=8.6.0" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: false - - /fast-glob@3.3.2: - resolution: - { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, - } - engines: { node: ">=8.6.0" } - dependencies: - "@nodelib/fs.stat": 2.0.5 - "@nodelib/fs.walk": 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.7 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } - dev: true - - /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } - dev: true - - /fast-stable-stringify@1.0.0: - resolution: - { - integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==, - } - dev: false - - /fastq@1.15.0: - resolution: - { - integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, - } - dependencies: - reusify: 1.0.4 - - /fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } - dependencies: - bser: 2.1.1 - dev: true - - /fflate@0.8.1: - resolution: - { - integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==, - } - dev: false - - /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - flat-cache: 3.0.4 - dev: true - - /file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - dev: false - - /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: ">=8" } - dependencies: - to-regex-range: 5.0.1 - - /fill-range@7.1.1: - resolution: - { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, - } - engines: { node: ">=8" } - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: ">=8" } - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: ">=10" } - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.0.4: - resolution: - { - integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.7: - resolution: - { - integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, - } - dev: true - - /focus-visible@5.2.0: - resolution: - { - integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==, - } - dev: false - - /follow-redirects@1.15.2: - resolution: - { - integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, - } - engines: { node: ">=4.0" } - peerDependencies: - debug: "*" - peerDependenciesMeta: - debug: - optional: true - dev: false - - /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } - dependencies: - is-callable: 1.2.7 - dev: true - - /foreground-child@3.2.1: - resolution: - { - integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==, - } - engines: { node: ">=14" } - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: true - - /form-data@4.0.0: - resolution: - { - integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, - } - engines: { node: ">= 6" } - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - /fraction.js@4.2.0: - resolution: - { - integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==, - } - dev: true - - /fs-constants@1.0.0: - resolution: - { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, - } - - /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - - /fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - requiresBuild: true - optional: true - - /function-bind@1.1.1: - resolution: - { - integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, - } - - /function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } - dev: true - - /function.prototype.name@1.1.6: - resolution: - { - integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } - dev: true - - /gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: ">=6.9.0" } - - /geojson-vt@3.2.1: - resolution: - { - integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==, - } - dev: false - - /get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - dev: true - - /get-intrinsic@1.2.1: - resolution: - { - integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==, - } - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 - has-symbols: 1.0.3 - dev: true - - /get-intrinsic@1.2.4: - resolution: - { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, - } - engines: { node: ">= 0.4" } - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true - - /get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: ">=8.0.0" } - - /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: ">=10" } - - /get-symbol-description@1.0.2: - resolution: - { - integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: true - - /get-tsconfig@4.7.5: - resolution: - { - integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==, - } - dependencies: - resolve-pkg-maps: 1.0.0 - dev: true - - /get-value@2.0.6: - resolution: - { - integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==, - } - engines: { node: ">=0.10.0" } - dev: false - - /getopts@2.3.0: - resolution: - { - integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==, - } - dev: false - - /github-from-package@0.0.0: - resolution: - { - integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, - } - - /gl-matrix@3.4.3: - resolution: - { - integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==, - } - dev: false - - /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: ">=10.13.0" } - dependencies: - is-glob: 4.0.3 - - /glob@10.3.10: - resolution: - { - integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==, - } - engines: { node: ">=16 || 14 >=14.17" } - hasBin: true - dependencies: - foreground-child: 3.2.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.1.2 - path-scurry: 1.11.1 - dev: true - - /glob@7.1.6: - resolution: - { - integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, - } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /global-prefix@3.0.0: - resolution: - { - integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==, - } - engines: { node: ">=6" } - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - dev: false - - /globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: ">=4" } - - /globals@13.20.0: - resolution: - { - integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==, - } - engines: { node: ">=8" } - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.4: - resolution: - { - integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, - } - engines: { node: ">= 0.4" } - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 - dev: true - - /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: ">=10" } - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } - dependencies: - get-intrinsic: 1.2.1 - dev: true - - /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - - /graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } - dev: true - - /grid-index@1.1.0: - resolution: - { - integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==, - } - dev: false - - /h3-js@4.1.0: - resolution: - { - integrity: sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ==, - } - engines: { node: ">=4", npm: ">=3", yarn: ">=1.3.0" } - dev: false - - /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, - } - dev: true - - /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } - - /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: ">=8" } - dev: true - - /has-property-descriptors@1.0.0: - resolution: - { - integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, - } - dependencies: - get-intrinsic: 1.2.1 - dev: true - - /has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } - dependencies: - es-define-property: 1.0.0 - dev: true - - /has-proto@1.0.1: - resolution: - { - integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, - } - engines: { node: ">= 0.4" } - dev: true - - /has-proto@1.0.3: - resolution: - { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, - } - engines: { node: ">= 0.4" } - dev: true - - /has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: ">= 0.4" } - dev: true - - /has-tostringtag@1.0.0: - resolution: - { - integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-symbols: 1.0.3 - dev: true - - /has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: ">= 0.4" } - dependencies: - has-symbols: 1.0.3 - dev: true - - /has@1.0.3: - resolution: - { - integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, - } - engines: { node: ">= 0.4.0" } - dependencies: - function-bind: 1.1.1 - - /hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: ">= 0.4" } - dependencies: - function-bind: 1.1.2 - dev: true - - /html-encoding-sniffer@3.0.0: - resolution: - { - integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, - } - engines: { node: ">=12" } - dependencies: - whatwg-encoding: 2.0.0 - dev: true - - /html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } - dev: true - - /http-proxy-agent@5.0.0: - resolution: - { - integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, - } - engines: { node: ">= 6" } - dependencies: - "@tootallnate/once": 2.0.0 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@5.0.1: - resolution: - { - integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, - } - engines: { node: ">= 6" } - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: ">=10.17.0" } - dev: true - - /human-signals@4.3.1: - resolution: - { - integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==, - } - engines: { node: ">=14.18.0" } - dev: true - - /humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } - dependencies: - ms: 2.1.3 - dev: false - - /husky@8.0.3: - resolution: - { - integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, - } - engines: { node: ">=14" } - hasBin: true - dev: true - - /iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: ">=0.10.0" } - dependencies: - safer-buffer: 2.1.2 - - /ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - - /ignore@5.2.4: - resolution: - { - integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, - } - engines: { node: ">= 4" } - dev: true - - /ignore@5.3.1: - resolution: - { - integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==, - } - engines: { node: ">= 4" } - dev: true - - /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, - } - engines: { node: ">=6" } - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: ">=0.8.19" } - dev: true - - /indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: ">=8" } - dev: true - - /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - /ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } - - /internal-slot@1.0.5: - resolution: - { - integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, - } - engines: { node: ">= 0.4" } - dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - - /internal-slot@1.0.7: - resolution: - { - integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==, - } - engines: { node: ">= 0.4" } - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - dev: true - - /internmap@2.0.3: - resolution: - { - integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, - } - engines: { node: ">=12" } - dev: false - - /interpret@2.2.0: - resolution: - { - integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==, - } - engines: { node: ">= 0.10" } - dev: false - - /is-arguments@1.1.1: - resolution: - { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-array-buffer@3.0.2: - resolution: - { - integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 - dev: true - - /is-array-buffer@3.0.4: - resolution: - { - integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - - /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } - dev: true - - /is-arrayish@0.3.2: - resolution: - { - integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==, - } - dev: true - - /is-async-function@2.0.0: - resolution: - { - integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, - } - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - dependencies: - binary-extensions: 2.2.0 - dev: false - - /is-boolean-object@1.1.2: - resolution: - { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-buffer@1.1.6: - resolution: - { - integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, - } - dev: false - - /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-core-module@2.12.1: - resolution: - { - integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==, - } - dependencies: - has: 1.0.3 - - /is-core-module@2.14.0: - resolution: - { - integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==, - } - engines: { node: ">= 0.4" } - dependencies: - hasown: 2.0.2 - dev: true - - /is-data-view@1.0.1: - resolution: - { - integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==, - } - engines: { node: ">= 0.4" } - dependencies: - is-typed-array: 1.1.13 - dev: true - - /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-extendable@0.1.1: - resolution: - { - integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, - } - engines: { node: ">=0.10.0" } - dev: false - - /is-extendable@1.0.1: - resolution: - { - integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-plain-object: 2.0.4 - dev: false - - /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - - /is-finalizationregistry@1.0.2: - resolution: - { - integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, - } - dependencies: - call-bind: 1.0.7 - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - dev: true - - /is-fullwidth-code-point@4.0.0: - resolution: - { - integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, - } - engines: { node: ">=12" } - dev: true - - /is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: ">=6" } - dev: true - - /is-generator-function@1.0.10: - resolution: - { - integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-extglob: 2.1.1 - - /is-map@2.0.2: - resolution: - { - integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, - } - dev: true - - /is-map@2.0.3: - resolution: - { - integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-negative-zero@2.0.3: - resolution: - { - integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - - /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: ">=8" } - dev: true - - /is-plain-object@2.0.4: - resolution: - { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, - } - engines: { node: ">=0.10.0" } - dependencies: - isobject: 3.0.1 - dev: false - - /is-potential-custom-element-name@1.0.1: - resolution: - { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, - } - dev: true - - /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-set@2.0.2: - resolution: - { - integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, - } - dev: true - - /is-set@2.0.3: - resolution: - { - integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: - { - integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, - } - dependencies: - call-bind: 1.0.2 - dev: true - - /is-shared-array-buffer@1.0.3: - resolution: - { - integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - dev: true - - /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: ">=8" } - dev: true - - /is-stream@3.0.0: - resolution: - { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dev: true - - /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, - } - engines: { node: ">= 0.4" } - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: - { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, - } - engines: { node: ">= 0.4" } - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.10: - resolution: - { - integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true - - /is-typed-array@1.1.13: - resolution: - { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, - } - engines: { node: ">= 0.4" } - dependencies: - which-typed-array: 1.1.15 - dev: true - - /is-weakmap@2.0.1: - resolution: - { - integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, - } - dev: true - - /is-weakmap@2.0.2: - resolution: - { - integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, - } - engines: { node: ">= 0.4" } - dev: true - - /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, - } - dependencies: - call-bind: 1.0.7 - dev: true - - /is-weakset@2.0.2: - resolution: - { - integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - dev: true - - /is-weakset@2.0.3: - resolution: - { - integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - - /isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, - } - dev: true - - /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - - /isobject@3.0.1: - resolution: - { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, - } - engines: { node: ">=0.10.0" } - dev: false - - /isomorphic-ws@4.0.1(ws@7.5.9): - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } - peerDependencies: - ws: "*" - dependencies: - ws: 7.5.9 - dev: false - - /istanbul-lib-coverage@3.2.0: - resolution: - { - integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==, - } - engines: { node: ">=8" } - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/core": 7.22.8 - "@babel/parser": 7.22.7 - "@istanbuljs/schema": 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.0: - resolution: - { - integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==, - } - engines: { node: ">=8" } - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: ">=10" } - dependencies: - debug: 4.3.5 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: - { - integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==, - } - engines: { node: ">=8" } - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /iterator.prototype@1.1.2: - resolution: - { - integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==, - } - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - dev: true - - /jackspeak@2.3.6: - resolution: - { - integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==, - } - engines: { node: ">=14" } - dependencies: - "@isaacs/cliui": 8.0.2 - optionalDependencies: - "@pkgjs/parseargs": 0.11.0 - dev: true - - /jayson@3.7.0: - resolution: - { - integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - "@types/connect": 3.4.35 - "@types/node": 12.20.55 - "@types/ws": 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.9) - json-stringify-safe: 5.0.1 - lodash: 4.17.21 - uuid: 8.3.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /jayson@4.1.0: - resolution: - { - integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - "@types/connect": 3.4.35 - "@types/node": 12.20.55 - "@types/ws": 7.4.7 - JSONStream: 1.3.5 - commander: 2.20.3 - delay: 5.0.0 - es6-promisify: 5.0.0 - eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.9) - json-stringify-safe: 5.0.1 - uuid: 8.3.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /jest-changed-files@29.5.0: - resolution: - { - integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.6.1: - resolution: - { - integrity: sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.6.1 - "@jest/expect": 29.6.1 - "@jest/test-result": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.6.1 - jest-matcher-utils: 29.6.1 - jest-message-util: 29.6.1 - jest-runtime: 29.6.1 - jest-snapshot: 29.6.1 - jest-util: 29.6.1 - p-limit: 3.1.0 - pretty-format: 29.6.1 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.6.1(@types/node@18.15.11)(ts-node@10.9.1): - resolution: - { - integrity: sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.6.1(ts-node@10.9.1) - "@jest/test-result": 29.6.1 - "@jest/types": 29.6.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.6.1(@types/node@18.15.11)(ts-node@10.9.1) - jest-util: 29.6.1 - jest-validate: 29.6.1 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /jest-config@29.6.1(@types/node@18.15.11)(ts-node@10.9.1): - resolution: - { - integrity: sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - dependencies: - "@babel/core": 7.22.8 - "@jest/test-sequencer": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - babel-jest: 29.6.1(@babel/core@7.22.8) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.6.1 - jest-environment-node: 29.6.1 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.1 - jest-runner: 29.6.1 - jest-util: 29.6.1 - jest-validate: 29.6.1 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.6.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-diff@29.6.1: - resolution: - { - integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.6.1 - dev: true - - /jest-docblock@29.4.3: - resolution: - { - integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.6.1: - resolution: - { - integrity: sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.6.1 - pretty-format: 29.6.1 - dev: true - - /jest-environment-jsdom@29.6.1: - resolution: - { - integrity: sha512-PoY+yLaHzVRhVEjcVKSfJ7wXmJW4UqPYNhR05h7u/TK0ouf6DmRNZFBL/Z00zgQMyWGMBXn69/FmOvhEJu8cIw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - "@jest/environment": 29.6.1 - "@jest/fake-timers": 29.6.1 - "@jest/types": 29.6.1 - "@types/jsdom": 20.0.1 - "@types/node": 18.15.11 - jest-mock: 29.6.1 - jest-util: 29.6.1 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node@29.6.1: - resolution: - { - integrity: sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.6.1 - "@jest/fake-timers": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - jest-mock: 29.6.1 - jest-util: 29.6.1 - dev: true - - /jest-get-type@29.4.3: - resolution: - { - integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-haste-map@29.6.1: - resolution: - { - integrity: sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - "@types/graceful-fs": 4.1.6 - "@types/node": 18.15.11 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.6.1 - jest-worker: 29.6.1 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /jest-leak-detector@29.6.1: - resolution: - { - integrity: sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.6.1 - dev: true - - /jest-matcher-utils@29.6.1: - resolution: - { - integrity: sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - jest-diff: 29.6.1 - jest-get-type: 29.4.3 - pretty-format: 29.6.1 - dev: true - - /jest-message-util@29.6.1: - resolution: - { - integrity: sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/code-frame": 7.22.5 - "@jest/types": 29.6.1 - "@types/stack-utils": 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.6.1 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-mock@29.6.1: - resolution: - { - integrity: sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - jest-util: 29.6.1 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.6.1): - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: ">=6" } - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.6.1 - dev: true - - /jest-regex-util@29.4.3: - resolution: - { - integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-resolve-dependencies@29.6.1: - resolution: - { - integrity: sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.6.1: - resolution: - { - integrity: sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.6.1 - jest-pnp-resolver: 1.2.3(jest-resolve@29.6.1) - jest-util: 29.6.1 - jest-validate: 29.6.1 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.6.1: - resolution: - { - integrity: sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/console": 29.6.1 - "@jest/environment": 29.6.1 - "@jest/test-result": 29.6.1 - "@jest/transform": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.6.1 - jest-haste-map: 29.6.1 - jest-leak-detector: 29.6.1 - jest-message-util: 29.6.1 - jest-resolve: 29.6.1 - jest-runtime: 29.6.1 - jest-util: 29.6.1 - jest-watcher: 29.6.1 - jest-worker: 29.6.1 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.6.1: - resolution: - { - integrity: sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/environment": 29.6.1 - "@jest/fake-timers": 29.6.1 - "@jest/globals": 29.6.1 - "@jest/source-map": 29.6.0 - "@jest/test-result": 29.6.1 - "@jest/transform": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.6.1 - jest-message-util: 29.6.1 - jest-mock: 29.6.1 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.1 - jest-snapshot: 29.6.1 - jest-util: 29.6.1 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.6.1: - resolution: - { - integrity: sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@babel/core": 7.22.8 - "@babel/generator": 7.22.7 - "@babel/plugin-syntax-jsx": 7.22.5(@babel/core@7.22.8) - "@babel/plugin-syntax-typescript": 7.22.5(@babel/core@7.22.8) - "@babel/types": 7.22.5 - "@jest/expect-utils": 29.6.1 - "@jest/transform": 29.6.1 - "@jest/types": 29.6.1 - "@types/prettier": 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.8) - chalk: 4.1.2 - expect: 29.6.1 - graceful-fs: 4.2.11 - jest-diff: 29.6.1 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.6.1 - jest-message-util: 29.6.1 - jest-util: 29.6.1 - natural-compare: 1.4.0 - pretty-format: 29.6.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@29.6.1: - resolution: - { - integrity: sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.6.1: - resolution: - { - integrity: sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/types": 29.6.1 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.6.1 - dev: true - - /jest-watcher@29.6.1: - resolution: - { - integrity: sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/test-result": 29.6.1 - "@jest/types": 29.6.1 - "@types/node": 18.15.11 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.6.1 - string-length: 4.0.2 - dev: true - - /jest-worker@29.6.1: - resolution: - { - integrity: sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@types/node": 18.15.11 - jest-util: 29.6.1 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.6.1(@types/node@18.15.11)(ts-node@10.9.1): - resolution: - { - integrity: sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - "@jest/core": 29.6.1(ts-node@10.9.1) - "@jest/types": 29.6.1 - import-local: 3.1.0 - jest-cli: 29.6.1(@types/node@18.15.11)(ts-node@10.9.1) - transitivePeerDependencies: - - "@types/node" - - supports-color - - ts-node - dev: true - - /jiti@1.18.2: - resolution: - { - integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==, - } - hasBin: true - dev: false - - /js-sha256@0.9.0: - resolution: - { - integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==, - } - dev: false - - /js-sha3@0.8.0: - resolution: - { - integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==, - } - dev: false - - /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - - /js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsdom@20.0.3: - resolution: - { - integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==, - } - engines: { node: ">=14" } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.8.2 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, - } - engines: { node: ">=4" } - hasBin: true - - /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - dev: true - - /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } - dev: true - - /json-stringify-pretty-compact@3.0.0: - resolution: - { - integrity: sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==, - } - dev: false - - /json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, - } - dev: false - - /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: ">=6" } - hasBin: true - - /jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { "0": node >= 0.2.0 } - dev: false - - /jsx-ast-utils@3.3.5: - resolution: - { - integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, - } - engines: { node: ">=4.0" } - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - dev: true - - /kdbush@4.0.2: - resolution: - { - integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==, - } - dev: false - - /kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: ">=0.10.0" } - dev: false - - /kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: ">=6" } - dev: true - - /knex@2.5.1(better-sqlite3@8.5.0)(pg@8.11.1): - resolution: - { - integrity: sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==, - } - engines: { node: ">=12" } - hasBin: true - peerDependencies: - better-sqlite3: "*" - mysql: "*" - mysql2: "*" - pg: "*" - pg-native: "*" - sqlite3: "*" - tedious: "*" - peerDependenciesMeta: - better-sqlite3: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - pg-native: - optional: true - sqlite3: - optional: true - tedious: - optional: true - dependencies: - better-sqlite3: 8.5.0 - colorette: 2.0.19 - commander: 10.0.1 - debug: 4.3.4 - escalade: 3.1.1 - esm: 3.2.25 - get-package-type: 0.1.0 - getopts: 2.3.0 - interpret: 2.2.0 - lodash: 4.17.21 - pg: 8.11.1 - pg-connection-string: 2.6.1 - rechoir: 0.8.0 - resolve-from: 5.0.0 - tarn: 3.0.2 - tildify: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /language-subtag-registry@0.3.23: - resolution: - { - integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==, - } - dev: true - - /language-tags@1.0.9: - resolution: - { - integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==, - } - engines: { node: ">=0.10" } - dependencies: - language-subtag-registry: 0.3.23 - dev: true - - /leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: ">=6" } - dev: true - - /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lilconfig@2.1.0: - resolution: - { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, - } - engines: { node: ">=10" } - - /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - - /lint-staged@13.2.1: - resolution: - { - integrity: sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==, - } - engines: { node: ^14.13.1 || >=16.0.0 } - hasBin: true - dependencies: - chalk: 5.2.0 - cli-truncate: 3.1.0 - commander: 10.0.1 - debug: 4.3.4 - execa: 7.1.1 - lilconfig: 2.1.0 - listr2: 5.0.8 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.3 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.2.2 - transitivePeerDependencies: - - enquirer - - supports-color - dev: true - - /listr2@5.0.8: - resolution: - { - integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==, - } - engines: { node: ^14.13.1 || >=16.0.0 } - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true - - /locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: ">=8" } - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: ">=10" } - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.castarray@4.4.0: - resolution: - { - integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==, - } - dev: false - - /lodash.isplainobject@4.0.6: - resolution: - { - integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, - } - dev: false - - /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - - /log-update@4.0.0: - resolution: - { - integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==, - } - engines: { node: ">=10" } - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - dev: true - - /loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } - hasBin: true - dependencies: - js-tokens: 4.0.0 - - /lower-case@2.0.2: - resolution: - { - integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, - } - dependencies: - tslib: 2.5.0 - dev: false - - /lru-cache@10.2.2: - resolution: - { - integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==, - } - engines: { node: 14 || >=16.14 } - dev: true - - /lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } - dependencies: - yallist: 3.1.1 - - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: ">=10" } - dependencies: - yallist: 4.0.0 - - /lz-string@1.5.0: - resolution: - { - integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, - } - hasBin: true - dev: true - - /make-dir@3.1.0: - resolution: - { - integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, - } - engines: { node: ">=8" } - dependencies: - semver: 6.3.1 - dev: true - - /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - - /makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } - dependencies: - tmpl: 1.0.5 - dev: true - - /mapbox-gl@2.15.0: - resolution: - { - integrity: sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==, - } - dependencies: - "@mapbox/geojson-rewind": 0.5.2 - "@mapbox/jsonlint-lines-primitives": 2.0.2 - "@mapbox/mapbox-gl-supported": 2.0.1 - "@mapbox/point-geometry": 0.1.0 - "@mapbox/tiny-sdf": 2.0.6 - "@mapbox/unitbezier": 0.0.1 - "@mapbox/vector-tile": 1.3.1 - "@mapbox/whoots-js": 3.1.0 - csscolorparser: 1.0.3 - earcut: 2.2.4 - geojson-vt: 3.2.1 - gl-matrix: 3.4.3 - grid-index: 1.1.0 - kdbush: 4.0.2 - murmurhash-js: 1.0.0 - pbf: 3.2.1 - potpack: 2.0.0 - quickselect: 2.0.0 - rw: 1.3.3 - supercluster: 8.0.1 - tinyqueue: 2.0.3 - vt-pbf: 3.1.3 - dev: false - - /maplibre-gl@3.3.1: - resolution: - { - integrity: sha512-SfRq9bT68GytDzCOG0IoTGg2rASbgdYunW/6xhnp55QuLmwG1M/YOlXxqHaphwia7kZbMvBOocvY0fp5yfTjZA==, - } - engines: { node: ">=16.14.0", npm: ">=8.1.0" } - dependencies: - "@mapbox/geojson-rewind": 0.5.2 - "@mapbox/jsonlint-lines-primitives": 2.0.2 - "@mapbox/point-geometry": 0.1.0 - "@mapbox/tiny-sdf": 2.0.6 - "@mapbox/unitbezier": 0.0.1 - "@mapbox/vector-tile": 1.3.1 - "@mapbox/whoots-js": 3.1.0 - "@maplibre/maplibre-gl-style-spec": 19.3.1 - "@types/geojson": 7946.0.10 - "@types/mapbox__point-geometry": 0.1.2 - "@types/mapbox__vector-tile": 1.3.0 - "@types/pbf": 3.0.2 - "@types/supercluster": 7.1.0 - earcut: 2.2.4 - geojson-vt: 3.2.1 - gl-matrix: 3.4.3 - global-prefix: 3.0.0 - kdbush: 4.0.2 - murmurhash-js: 1.0.0 - pbf: 3.2.1 - potpack: 2.0.0 - quickselect: 2.0.0 - supercluster: 8.0.1 - tinyqueue: 2.0.3 - vt-pbf: 3.1.3 - dev: false - - /md5@2.3.0: - resolution: - { - integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==, - } - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: false - - /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - dev: true - - /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: ">= 8" } - - /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: ">=8.6" } - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /micromatch@4.0.7: - resolution: - { - integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==, - } - engines: { node: ">=8.6" } - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: true - - /mime-db@1.52.0: - resolution: - { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, - } - engines: { node: ">= 0.6" } - - /mime-types@2.1.35: - resolution: - { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, - } - engines: { node: ">= 0.6" } - dependencies: - mime-db: 1.52.0 - - /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: ">=6" } - dev: true - - /mimic-fn@4.0.0: - resolution: - { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, - } - engines: { node: ">=12" } - dev: true - - /mimic-response@3.1.0: - resolution: - { - integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, - } - engines: { node: ">=10" } - - /min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: ">=4" } - dev: true - - /mini-svg-data-uri@1.4.4: - resolution: - { - integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==, - } - hasBin: true - dev: false - - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - dependencies: - brace-expansion: 1.1.11 - - /minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, - } - engines: { node: ">=16 || 14 >=14.17" } - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.4: - resolution: - { - integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==, - } - engines: { node: ">=16 || 14 >=14.17" } - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - - /minipass@7.1.2: - resolution: - { - integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, - } - engines: { node: ">=16 || 14 >=14.17" } - dev: true - - /mkdirp-classic@0.5.3: - resolution: - { - integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, - } - - /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - - /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - - /multiformats@9.9.0: - resolution: - { - integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==, - } - dev: false - - /murmurhash-js@1.0.0: - resolution: - { - integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==, - } - dev: false - - /mz@2.7.0: - resolution: - { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, - } - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.6: - resolution: - { - integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - - /nanoid@3.3.7: - resolution: - { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, - } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true - dev: false - - /napi-build-utils@1.0.2: - resolution: - { - integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==, - } - - /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } - dev: true - - /next-themes@0.2.1(next@14.2.4)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==, - } - peerDependencies: - next: "*" - react: "*" - react-dom: "*" - dependencies: - next: 14.2.4(@babel/core@7.22.8)(react-dom@18.3.1)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /next@14.2.4(@babel/core@7.22.8)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ==, - } - engines: { node: ">=18.17.0" } - hasBin: true - peerDependencies: - "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - "@opentelemetry/api": - optional: true - "@playwright/test": - optional: true - sass: - optional: true - dependencies: - "@next/env": 14.2.4 - "@swc/helpers": 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001636 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.22.8)(react@18.3.1) - optionalDependencies: - "@next/swc-darwin-arm64": 14.2.4 - "@next/swc-darwin-x64": 14.2.4 - "@next/swc-linux-arm64-gnu": 14.2.4 - "@next/swc-linux-arm64-musl": 14.2.4 - "@next/swc-linux-x64-gnu": 14.2.4 - "@next/swc-linux-x64-musl": 14.2.4 - "@next/swc-win32-arm64-msvc": 14.2.4 - "@next/swc-win32-ia32-msvc": 14.2.4 - "@next/swc-win32-x64-msvc": 14.2.4 - transitivePeerDependencies: - - "@babel/core" - - babel-plugin-macros - dev: false - - /no-case@3.0.4: - resolution: - { - integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, - } - dependencies: - lower-case: 2.0.2 - tslib: 2.5.0 - dev: false - - /node-abi@3.40.0: - resolution: - { - integrity: sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==, - } - engines: { node: ">=10" } - dependencies: - semver: 7.5.4 - - /node-addon-api@6.1.0: - resolution: - { - integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==, - } - dev: true - - /node-fetch@2.6.7(encoding@0.1.13): - resolution: - { - integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - encoding: 0.1.13 - whatwg-url: 5.0.0 - dev: false - - /node-fetch@2.6.9(encoding@0.1.13): - resolution: - { - integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - encoding: 0.1.13 - whatwg-url: 5.0.0 - dev: false - - /node-fetch@2.7.0(encoding@0.1.13): - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - encoding: 0.1.13 - whatwg-url: 5.0.0 - dev: false - - /node-gyp-build@4.6.0: - resolution: - { - integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==, - } - hasBin: true - requiresBuild: true - - /node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } - dev: true - - /node-releases@2.0.10: - resolution: - { - integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==, - } - dev: true - - /node-releases@2.0.13: - resolution: - { - integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==, - } - - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - - /normalize-range@0.1.2: - resolution: - { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: ">=8" } - dependencies: - path-key: 3.1.1 - dev: true - - /npm-run-path@5.1.0: - resolution: - { - integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - path-key: 4.0.0 - dev: true - - /nwsapi@2.2.7: - resolution: - { - integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==, - } - dev: true - - /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: ">=0.10.0" } - - /object-hash@3.0.0: - resolution: - { - integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, - } - engines: { node: ">= 6" } - dev: false - - /object-inspect@1.12.3: - resolution: - { - integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, - } - dev: true - - /object-inspect@1.13.2: - resolution: - { - integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==, - } - engines: { node: ">= 0.4" } - dev: true - - /object-is@1.1.5: - resolution: - { - integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - dev: true - - /object-is@1.1.6: - resolution: - { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - dev: true - - /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: ">= 0.4" } - dev: true - - /object.assign@4.1.4: - resolution: - { - integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.assign@4.1.5: - resolution: - { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.entries@1.1.8: - resolution: - { - integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /object.fromentries@2.0.8: - resolution: - { - integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.groupby@1.0.3: - resolution: - { - integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - dev: true - - /object.hasown@1.1.4: - resolution: - { - integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==, - } - engines: { node: ">= 0.4" } - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.values@1.2.0: - resolution: - { - integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } - dependencies: - wrappy: 1.0.2 - - /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: ">=6" } - dependencies: - mimic-fn: 2.1.0 - dev: true - - /onetime@6.0.0: - resolution: - { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, - } - engines: { node: ">=12" } - dependencies: - mimic-fn: 4.0.0 - dev: true - - /optionator@0.9.4: - resolution: - { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, - } - engines: { node: ">= 0.8.0" } - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - dev: true - - /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: ">=6" } - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: ">=10" } - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: ">=8" } - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: ">=10" } - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map@4.0.0: - resolution: - { - integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, - } - engines: { node: ">=10" } - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: ">=6" } - dev: true - - /packet-reader@1.0.0: - resolution: - { - integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==, - } - dev: false - - /pako@2.1.0: - resolution: - { - integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==, - } - dev: false - - /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: ">=6" } - dependencies: - callsites: 3.1.0 - dev: true - - /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: ">=8" } - dependencies: - "@babel/code-frame": 7.22.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - - /parse5@7.1.2: - resolution: - { - integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, - } - dependencies: - entities: 4.5.0 - dev: true - - /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: ">=8" } - dev: true - - /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: ">=0.10.0" } - - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - dev: true - - /path-key@4.0.0: - resolution: - { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, - } - engines: { node: ">=12" } - dev: true - - /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - - /path-scurry@1.11.1: - resolution: - { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, - } - engines: { node: ">=16 || 14 >=14.18" } - dependencies: - lru-cache: 10.2.2 - minipass: 7.1.2 - dev: true - - /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: ">=8" } - dev: true - - /pbf@3.2.1: - resolution: - { - integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==, - } - hasBin: true - dependencies: - ieee754: 1.2.1 - resolve-protobuf-schema: 2.1.0 - dev: false - - /pg-cloudflare@1.1.1: - resolution: - { - integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==, - } - requiresBuild: true - dev: false - optional: true - - /pg-connection-string@2.6.1: - resolution: - { - integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==, - } - dev: false - - /pg-int8@1.0.1: - resolution: - { - integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==, - } - engines: { node: ">=4.0.0" } - dev: false - - /pg-pool@3.6.1(pg@8.11.1): - resolution: - { - integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==, - } - peerDependencies: - pg: ">=8.0" - dependencies: - pg: 8.11.1 - dev: false - - /pg-protocol@1.6.0: - resolution: - { - integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==, - } - dev: false - - /pg-types@2.2.0: - resolution: - { - integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==, - } - engines: { node: ">=4" } - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - dev: false - - /pg@8.11.1: - resolution: - { - integrity: sha512-utdq2obft07MxaDg0zBJI+l/M3mBRfIpEN3iSemsz0G5F2/VXx+XzqF4oxrbIZXQxt2AZzIUzyVg/YM6xOP/WQ==, - } - engines: { node: ">= 8.0.0" } - peerDependencies: - pg-native: ">=3.0.1" - peerDependenciesMeta: - pg-native: - optional: true - dependencies: - buffer-writer: 2.0.0 - packet-reader: 1.0.0 - pg-connection-string: 2.6.1 - pg-pool: 3.6.1(pg@8.11.1) - pg-protocol: 1.6.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 - dev: false - - /pgpass@1.0.5: - resolution: - { - integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==, - } - dependencies: - split2: 4.2.0 - dev: false - - /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, - } - - /picocolors@1.0.1: - resolution: - { - integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==, - } - dev: false - - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - - /pidtree@0.6.0: - resolution: - { - integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, - } - engines: { node: ">=0.10" } - hasBin: true - dev: true - - /pify@2.3.0: - resolution: - { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, - } - engines: { node: ">=0.10.0" } - - /pirates@4.0.5: - resolution: - { - integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==, - } - engines: { node: ">= 6" } - - /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: ">=8" } - dependencies: - find-up: 4.1.0 - dev: true - - /pmtiles@2.10.0: - resolution: - { - integrity: sha512-X+s6JyperpcAkKwv55MKx72ckOUB0ZjcfK4929iM0SS0MkLydEi2FSW1E8YTE1E2XaZ2TVk/MIUrbsZuXV7K2g==, - } - dependencies: - fflate: 0.8.1 - dev: false - - /possible-typed-array-names@1.0.0: - resolution: - { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, - } - engines: { node: ">= 0.4" } - dev: true - - /postcss-focus-visible@8.0.2(postcss@8.4.21): - resolution: - { - integrity: sha512-f/Vd+EC/GaKElknU59esVcRYr/Y3t1ZAQyL4u2xSOgkDy4bMCmG7VP5cGvj3+BTLNE9ETfEuz2nnt4qkZwTTeA==, - } - engines: { node: ^14 || ^16 || >=18 } - peerDependencies: - postcss: ^8.4 - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.12 - dev: true - - /postcss-import@14.1.0(postcss@8.4.21): - resolution: - { - integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.2 - dev: false - - /postcss-import@15.1.0(postcss@8.4.21): - resolution: - { - integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, - } - engines: { node: ">=14.0.0" } - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.21 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.2 - dev: true - - /postcss-js@4.0.1(postcss@8.4.21): - resolution: - { - integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, - } - engines: { node: ^12 || ^14 || >= 16 } - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.21 - dev: false - - /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): - resolution: - { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, - } - engines: { node: ">= 10" } - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.1.0 - postcss: 8.4.21 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - yaml: 1.10.2 - dev: false - - /postcss-nested@6.0.0(postcss@8.4.21): - resolution: - { - integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==, - } - engines: { node: ">=12.0" } - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.12 - dev: false - - /postcss-selector-parser@6.0.10: - resolution: - { - integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==, - } - engines: { node: ">=4" } - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: false - - /postcss-selector-parser@6.0.12: - resolution: - { - integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==, - } - engines: { node: ">=4" } - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - /postcss-value-parser@3.3.1: - resolution: - { - integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==, - } - dev: false - - /postcss-value-parser@4.2.0: - resolution: - { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, - } - - /postcss@8.4.21: - resolution: - { - integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==, - } - engines: { node: ^10 || ^12 || >=14 } - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - /postcss@8.4.31: - resolution: - { - integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==, - } - engines: { node: ^10 || ^12 || >=14 } - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - dev: false - - /postgres-array@2.0.0: - resolution: - { - integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==, - } - engines: { node: ">=4" } - dev: false - - /postgres-bytea@1.0.0: - resolution: - { - integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==, - } - engines: { node: ">=0.10.0" } - dev: false - - /postgres-date@1.0.7: - resolution: - { - integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==, - } - engines: { node: ">=0.10.0" } - dev: false - - /postgres-interval@1.2.0: - resolution: - { - integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - xtend: 4.0.2 - dev: false - - /potpack@2.0.0: - resolution: - { - integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==, - } - dev: false - - /prebuild-install@7.1.1: - resolution: - { - integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - detect-libc: 2.0.1 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.40.0 - pump: 3.0.0 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - - /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: ">= 0.8.0" } - dev: true - - /prettier-plugin-tailwindcss@0.2.7(prettier@2.8.7): - resolution: - { - integrity: sha512-jQopIOgjLpX+y8HeD56XZw7onupRTC0cw7eKKUimI7vhjkPF5/1ltW5LyqaPtSyc8HvEpvNZsvvsGFa2qpa59w==, - } - engines: { node: ">=12.17.0" } - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-php": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@shufo/prettier-plugin-blade": "*" - "@trivago/prettier-plugin-sort-imports": "*" - prettier: ">=2.2.0" - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-import-sort: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-style-order: "*" - prettier-plugin-svelte: "*" - prettier-plugin-twig-melody: "*" - peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": - optional: true - "@prettier/plugin-php": - optional: true - "@prettier/plugin-pug": - optional: true - "@shopify/prettier-plugin-liquid": - optional: true - "@shufo/prettier-plugin-blade": - optional: true - "@trivago/prettier-plugin-sort-imports": - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - prettier-plugin-twig-melody: - optional: true - dependencies: - prettier: 2.8.7 - dev: true - - /prettier@2.8.7: - resolution: - { - integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==, - } - engines: { node: ">=10.13.0" } - hasBin: true - dev: true - - /pretty-format@27.5.1: - resolution: - { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format@29.6.1: - resolution: - { - integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - "@jest/schemas": 29.6.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: ">= 6" } - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - - /prop-types@15.8.1: - resolution: - { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, - } - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - /protocol-buffers-schema@3.6.0: - resolution: - { - integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==, - } - dev: false - - /proxy-from-env@1.1.0: - resolution: - { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, - } - dev: false - - /psl@1.9.0: - resolution: - { - integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, - } - dev: true - - /pump@3.0.0: - resolution: - { - integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, - } - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - /punycode@2.3.0: - resolution: - { - integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, - } - engines: { node: ">=6" } - dev: true - - /pure-rand@6.0.2: - resolution: - { - integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==, - } - dev: true - - /querystringify@2.2.0: - resolution: - { - integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, - } - dev: true - - /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - - /quick-lru@5.1.1: - resolution: - { - integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==, - } - engines: { node: ">=10" } - dev: false - - /quickselect@2.0.0: - resolution: - { - integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==, - } - dev: false - - /rc@1.2.8: - resolution: - { - integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, - } - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - /react-async-hook@4.0.0(react@18.3.1): - resolution: - { - integrity: sha512-97lgjFkOcHCTYSrsKBpsXg3iVWM0LnzedB749iP76sb3/8Ouu4nHIkCLEOrQWHVYqrYxjF05NN6GHoXWFkB3Kw==, - } - engines: { node: ">=8", npm: ">=5" } - peerDependencies: - react: ">=16.8" - dependencies: - react: 18.3.1 - dev: false - - /react-countdown@2.3.5(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-K26ENYEesMfPxhRRtm1r+Pf70SErrvW3g4CArLi/x6MPFjgfDFYePT4UghEj8p2nI0cqVV7/JjDgjyr//U60Og==, - } - peerDependencies: - react: ">= 15" - react-dom: ">= 15" - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /react-dom@18.3.1(react@18.3.1): - resolution: - { - integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, - } - peerDependencies: - react: ^18.3.1 - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - /react-is@16.13.1: - resolution: - { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, - } - - /react-is@17.0.2: - resolution: - { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, - } - dev: true - - /react-is@18.2.0: - resolution: - { - integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, - } - dev: true - - /react-lifecycles-compat@3.0.4: - resolution: - { - integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==, - } - dev: false - - /react-map-gl@7.1.6(mapbox-gl@2.15.0)(maplibre-gl@3.3.1)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-9XbrvpFF67Fyi+e6vRLJFnGpo3UF6ZHifIa8cS/wUYSsnv9sVyzGsN++FJy57zkz3Jh3kmf0xKZemR8K0FZLVw==, - } - peerDependencies: - mapbox-gl: ">=1.13.0" - maplibre-gl: ">=1.13.0" - react: ">=16.3.0" - react-dom: ">=16.3.0" - peerDependenciesMeta: - mapbox-gl: - optional: true - maplibre-gl: - optional: true - dependencies: - "@maplibre/maplibre-gl-style-spec": 19.3.1 - "@types/mapbox-gl": 2.7.10 - mapbox-gl: 2.15.0 - maplibre-gl: 3.3.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /react-resize-detector@8.1.0(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==, - } - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - lodash: 4.17.21 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /react-smooth@2.0.2(prop-types@15.8.1)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-pgqSp1q8rAGtF1bXQE0m3CHGLNfZZh5oA5o1tsPLXRHnKtkujMIJ8Ws5nO1mTySZf1c4vgwlEk+pHi3Ln6eYLw==, - } - peerDependencies: - prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - fast-equals: 4.0.3 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-transition-group: 2.9.0(react-dom@18.3.1)(react@18.3.1) - dev: false - - /react-tooltip@5.11.1(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-+2a/DvmOlPQd5e1f3s32E/+vv4Tv4UmPxZfCyeVr4BeY3SRCEKGHiE36jH+UtqxSuRP9TKviwmhow4gNDRXCMQ==, - } - peerDependencies: - react: ">=16.14.0" - react-dom: ">=16.14.0" - dependencies: - "@floating-ui/dom": 1.2.7 - classnames: 2.3.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - dev: false - - /react-transition-group@2.9.0(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==, - } - peerDependencies: - react: ">=15.0.0" - react-dom: ">=15.0.0" - dependencies: - dom-helpers: 3.4.0 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-lifecycles-compat: 3.0.4 - dev: false - - /react@18.3.1: - resolution: - { - integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - loose-envify: 1.4.0 - - /read-cache@1.0.0: - resolution: - { - integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, - } - dependencies: - pify: 2.3.0 - - /readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: ">= 6" } - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } - dependencies: - picomatch: 2.3.1 - dev: false - - /recharts-scale@0.4.5: - resolution: - { - integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==, - } - dependencies: - decimal.js-light: 2.5.1 - dev: false - - /recharts@2.5.0(prop-types@15.8.1)(react-dom@18.3.1)(react@18.3.1): - resolution: - { - integrity: sha512-0EQYz3iA18r1Uq8VqGZ4dABW52AKBnio37kJgnztIqprELJXpOEsa0SzkqU1vjAhpCXCv52Dx1hiL9119xsqsQ==, - } - engines: { node: ">=12" } - peerDependencies: - prop-types: ^15.6.0 - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - classnames: 2.3.2 - eventemitter3: 4.0.7 - lodash: 4.17.21 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 16.13.1 - react-resize-detector: 8.1.0(react-dom@18.3.1)(react@18.3.1) - react-smooth: 2.0.2(prop-types@15.8.1)(react-dom@18.3.1)(react@18.3.1) - recharts-scale: 0.4.5 - reduce-css-calc: 2.1.8 - victory-vendor: 36.6.10 - dev: false - - /rechoir@0.8.0: - resolution: - { - integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==, - } - engines: { node: ">= 10.13.0" } - dependencies: - resolve: 1.22.2 - dev: false - - /redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: ">=8" } - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /reduce-css-calc@2.1.8: - resolution: - { - integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==, - } - dependencies: - css-unit-converter: 1.1.2 - postcss-value-parser: 3.3.1 - dev: false - - /reflect.getprototypeof@1.0.6: - resolution: - { - integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.3 - dev: true - - /regenerator-runtime@0.13.11: - resolution: - { - integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, - } - - /regenerator-runtime@0.14.0: - resolution: - { - integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, - } - dev: false - - /regexp.prototype.flags@1.5.0: - resolution: - { - integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true - - /regexp.prototype.flags@1.5.2: - resolution: - { - integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - dev: true - - /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: ">=0.10.0" } - dev: true - - /requires-port@1.0.0: - resolution: - { - integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, - } - dev: true - - /resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: ">=8" } - dependencies: - resolve-from: 5.0.0 - dev: true - - /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: ">=4" } - dev: true - - /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: ">=8" } - - /resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, - } - dev: true - - /resolve-protobuf-schema@2.1.0: - resolution: - { - integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==, - } - dependencies: - protocol-buffers-schema: 3.6.0 - dev: false - - /resolve.exports@2.0.2: - resolution: - { - integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, - } - engines: { node: ">=10" } - dev: true - - /resolve@1.22.2: - resolution: - { - integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==, - } - hasBin: true - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /resolve@1.22.8: - resolution: - { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, - } - hasBin: true - dependencies: - is-core-module: 2.14.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /resolve@2.0.0-next.5: - resolution: - { - integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==, - } - hasBin: true - dependencies: - is-core-module: 2.14.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - - /restore-cursor@3.1.0: - resolution: - { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, - } - engines: { node: ">=8" } - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } - - /rfdc@1.3.0: - resolution: - { - integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==, - } - dev: true - - /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, - } - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rpc-websockets@7.5.1: - resolution: - { - integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==, - } - dependencies: - "@babel/runtime": 7.21.5 - eventemitter3: 4.0.7 - uuid: 8.3.2 - ws: 8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - optionalDependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - dev: false - - /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } - dependencies: - queue-microtask: 1.2.3 - - /rw@1.3.3: - resolution: - { - integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, - } - dev: false - - /rxjs@7.8.1: - resolution: - { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, - } - dependencies: - tslib: 2.6.3 - dev: true - - /safe-array-concat@1.1.2: - resolution: - { - integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==, - } - engines: { node: ">=0.4" } - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - - /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } - - /safe-regex-test@1.0.3: - resolution: - { - integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: true - - /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - - /saxes@6.0.0: - resolution: - { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, - } - engines: { node: ">=v12.22.7" } - dependencies: - xmlchars: 2.2.0 - dev: true - - /scheduler@0.23.2: - resolution: - { - integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, - } - dependencies: - loose-envify: 1.4.0 - - /semver@6.3.0: - resolution: - { - integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==, - } - hasBin: true - dev: true - - /semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } - hasBin: true - dev: true - - /semver@7.5.0: - resolution: - { - integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver@7.5.4: - resolution: - { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /semver@7.6.2: - resolution: - { - integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==, - } - engines: { node: ">=10" } - hasBin: true - dev: true - - /set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: ">= 0.4" } - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true - - /set-function-name@2.0.2: - resolution: - { - integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, - } - engines: { node: ">= 0.4" } - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: true - - /set-value@2.0.1: - resolution: - { - integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==, - } - engines: { node: ">=0.10.0" } - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: false - - /sharp@0.32.0: - resolution: - { - integrity: sha512-yLAypVcqj1toSAqRSwbs86nEzfyZVDYqjuUX8grhFpeij0DDNagKJXELS/auegDBRDg1XBtELdOGfo2X1cCpeA==, - } - engines: { node: ">=14.15.0" } - requiresBuild: true - dependencies: - color: 4.2.3 - detect-libc: 2.0.1 - node-addon-api: 6.1.0 - prebuild-install: 7.1.1 - semver: 7.5.0 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - dev: true - - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - dev: true - - /side-channel@1.0.4: - resolution: - { - integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, - } - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 - dev: true - - /side-channel@1.0.6: - resolution: - { - integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - dev: true - - /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - dev: true - - /signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } - dev: true - - /simple-concat@1.0.1: - resolution: - { - integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, - } - - /simple-get@4.0.1: - resolution: - { - integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, - } - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - /simple-swizzle@0.2.2: - resolution: - { - integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==, - } - dependencies: - is-arrayish: 0.3.2 - dev: true - - /sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } - dev: true - - /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: ">=8" } - dev: true - - /slice-ansi@3.0.0: - resolution: - { - integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==, - } - engines: { node: ">=8" } - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@4.0.0: - resolution: - { - integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi@5.0.0: - resolution: - { - integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, - } - engines: { node: ">=12" } - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - - /snake-case@3.0.4: - resolution: - { - integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==, - } - dependencies: - dot-case: 3.0.4 - tslib: 2.5.0 - dev: false - - /sort-asc@0.2.0: - resolution: - { - integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==, - } - engines: { node: ">=0.10.0" } - dev: false - - /sort-desc@0.2.0: - resolution: - { - integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==, - } - engines: { node: ">=0.10.0" } - dev: false - - /sort-object@3.0.3: - resolution: - { - integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==, - } - engines: { node: ">=0.10.0" } - dependencies: - bytewise: 1.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - sort-asc: 0.2.0 - sort-desc: 0.2.0 - union-value: 1.0.1 - dev: false - - /source-map-js@1.0.2: - resolution: - { - integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, - } - engines: { node: ">=0.10.0" } - - /source-map-js@1.2.0: - resolution: - { - integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==, - } - engines: { node: ">=0.10.0" } - dev: false - - /source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: ">=0.10.0" } - dev: true - - /split-string@3.1.0: - resolution: - { - integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==, - } - engines: { node: ">=0.10.0" } - dependencies: - extend-shallow: 3.0.2 - dev: false - - /split2@4.2.0: - resolution: - { - integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, - } - engines: { node: ">= 10.x" } - dev: false - - /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - dev: true - - /stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: ">=10" } - dependencies: - escape-string-regexp: 2.0.0 - dev: true - - /stop-iteration-iterator@1.0.0: - resolution: - { - integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==, - } - engines: { node: ">= 0.4" } - dependencies: - internal-slot: 1.0.5 - dev: true - - /streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, - } - engines: { node: ">=10.0.0" } - dev: false - - /string-argv@0.3.2: - resolution: - { - integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, - } - engines: { node: ">=0.6.19" } - dev: true - - /string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: ">=10" } - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - - /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: true - - /string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: true - - /string.prototype.includes@2.0.0: - resolution: - { - integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==, - } - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - dev: true - - /string.prototype.matchall@4.0.11: - resolution: - { - integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - dev: true - - /string.prototype.trim@1.2.9: - resolution: - { - integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimend@1.0.8: - resolution: - { - integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==, - } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimstart@1.0.8: - resolution: - { - integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } - dependencies: - safe-buffer: 5.2.1 - - /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-ansi@7.0.1: - resolution: - { - integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==, - } - engines: { node: ">=12" } - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: ">=4" } - dev: true - - /strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: ">=8" } - dev: true - - /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: ">=6" } - dev: true - - /strip-final-newline@3.0.0: - resolution: - { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, - } - engines: { node: ">=12" } - dev: true - - /strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: ">=8" } - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments@2.0.1: - resolution: - { - integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, - } - engines: { node: ">=0.10.0" } - - /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: ">=8" } - dev: true - - /styled-jsx@5.1.1(@babel/core@7.22.8)(react@18.3.1): - resolution: - { - integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, - } - engines: { node: ">= 12.0.0" } - peerDependencies: - "@babel/core": "*" - babel-plugin-macros: "*" - react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" - peerDependenciesMeta: - "@babel/core": - optional: true - babel-plugin-macros: - optional: true - dependencies: - "@babel/core": 7.22.8 - client-only: 0.0.1 - react: 18.3.1 - dev: false - - /sucrase@3.32.0: - resolution: - { - integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==, - } - engines: { node: ">=8" } - hasBin: true - dependencies: - "@jridgewell/gen-mapping": 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.5 - ts-interface-checker: 0.1.13 - dev: false - - /supercluster@8.0.1: - resolution: - { - integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==, - } - dependencies: - kdbush: 4.0.2 - dev: false - - /superstruct@0.14.2: - resolution: - { - integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==, - } - dev: false - - /superstruct@0.15.5: - resolution: - { - integrity: sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==, - } - dev: false - - /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - dependencies: - has-flag: 3.0.0 - - /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: ">=8" } - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: ">=10" } - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: ">= 0.4" } - - /symbol-tree@3.2.4: - resolution: - { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, - } - dev: true - - /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): - resolution: - { - integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==, - } - engines: { node: ">=12.13.0" } - hasBin: true - peerDependencies: - postcss: ^8.0.9 - dependencies: - arg: 5.0.2 - chokidar: 3.5.3 - color-name: 1.1.4 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.12 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.18.2 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.21 - postcss-import: 14.1.0(postcss@8.4.21) - postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) - postcss-nested: 6.0.0(postcss@8.4.21) - postcss-selector-parser: 6.0.12 - postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.2 - sucrase: 3.32.0 - transitivePeerDependencies: - - ts-node - dev: false - - /tapable@2.2.1: - resolution: - { - integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, - } - engines: { node: ">=6" } - dev: true - - /tar-fs@2.1.1: - resolution: - { - integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==, - } - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 2.2.0 - - /tar-stream@2.2.0: - resolution: - { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, - } - engines: { node: ">=6" } - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - /tarn@3.0.2: - resolution: - { - integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==, - } - engines: { node: ">=8.0.0" } - dev: false - - /test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: ">=8" } - dependencies: - "@istanbuljs/schema": 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-encoding-utf-8@1.0.2: - resolution: - { - integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==, - } - dev: false - - /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } - dev: true - - /thenify-all@1.6.0: - resolution: - { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, - } - engines: { node: ">=0.8" } - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: - { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, - } - dependencies: - any-promise: 1.3.0 - dev: false - - /through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } - - /tildify@2.0.0: - resolution: - { - integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==, - } - engines: { node: ">=8" } - dev: false - - /tinyqueue@2.0.3: - resolution: - { - integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==, - } - dev: false - - /tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } - dev: true - - /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, - } - engines: { node: ">=4" } - - /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } - dependencies: - is-number: 7.0.0 - - /toml@3.0.0: - resolution: - { - integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==, - } - dev: false - - /tough-cookie@4.1.3: - resolution: - { - integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==, - } - engines: { node: ">=6" } - dependencies: - psl: 1.9.0 - punycode: 2.3.0 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: true - - /tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - dev: false - - /tr46@3.0.0: - resolution: - { - integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, - } - engines: { node: ">=12" } - dependencies: - punycode: 2.3.0 - dev: true - - /ts-api-utils@1.3.0(typescript@5.0.4): - resolution: - { - integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==, - } - engines: { node: ">=16" } - peerDependencies: - typescript: ">=4.2.0" - dependencies: - typescript: 5.0.4 - dev: true - - /ts-interface-checker@0.1.13: - resolution: - { - integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, - } - dev: false - - /ts-node@10.9.1(@types/node@18.15.11)(typescript@5.0.4): - resolution: - { - integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, - } - hasBin: true - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.9 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.3 - "@types/node": 18.15.11 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.0.4 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - /tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, - } - dependencies: - "@types/json5": 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib@2.5.0: - resolution: - { - integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, - } - dev: false - - /tslib@2.6.3: - resolution: - { - integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==, - } - - /tunnel-agent@0.6.0: - resolution: - { - integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, - } - dependencies: - safe-buffer: 5.2.1 - - /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: ">= 0.8.0" } - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: ">=4" } - dev: true - - /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, - } - engines: { node: ">=10" } - dev: true - - /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: ">=10" } - dev: true - - /typed-array-buffer@1.0.2: - resolution: - { - integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-length@1.0.1: - resolution: - { - integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-offset@1.0.2: - resolution: - { - integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - - /typed-array-length@1.0.6: - resolution: - { - integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==, - } - engines: { node: ">= 0.4" } - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - dev: true - - /typescript-collections@1.3.3: - resolution: - { - integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==, - } - dev: false - - /typescript@5.0.4: - resolution: - { - integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==, - } - engines: { node: ">=12.20" } - hasBin: true - - /typewise-core@1.2.0: - resolution: - { - integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==, - } - dev: false - - /typewise@1.0.3: - resolution: - { - integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==, - } - dependencies: - typewise-core: 1.2.0 - dev: false - - /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, - } - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /union-value@1.0.1: - resolution: - { - integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==, - } - engines: { node: ">=0.10.0" } - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: false - - /universalify@0.2.0: - resolution: - { - integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, - } - engines: { node: ">= 4.0.0" } - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.5): - resolution: - { - integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, - } - hasBin: true - peerDependencies: - browserslist: ">= 4.21.0" - dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: - { - integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, - } - hasBin: true - peerDependencies: - browserslist: ">= 4.21.0" - dependencies: - browserslist: 4.21.9 - escalade: 3.1.1 - picocolors: 1.0.0 - - /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } - dependencies: - punycode: 2.3.0 - dev: true - - /url-parse@1.5.10: - resolution: - { - integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, - } - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - - /use-debounce@9.0.4(react@18.3.1): - resolution: - { - integrity: sha512-6X8H/mikbrt0XE8e+JXRtZ8yYVvKkdYRfmIhWZYsP8rcNs9hk3APV8Ua2mFkKRLcJKVdnX2/Vwrmg2GWKUQEaQ==, - } - engines: { node: ">= 10.0.0" } - peerDependencies: - react: ">=16.8.0" - dependencies: - react: 18.3.1 - dev: false - - /utf-8-validate@5.0.10: - resolution: - { - integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, - } - engines: { node: ">=6.14.2" } - requiresBuild: true - dependencies: - node-gyp-build: 4.6.0 - - /util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } - - /uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, - } - hasBin: true - dev: false - - /v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } - - /v8-to-istanbul@9.1.0: - resolution: - { - integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==, - } - engines: { node: ">=10.12.0" } - dependencies: - "@jridgewell/trace-mapping": 0.3.18 - "@types/istanbul-lib-coverage": 2.0.4 - convert-source-map: 1.9.0 - dev: true - - /victory-vendor@36.6.10: - resolution: - { - integrity: sha512-7YqYGtsA4mByokBhCjk+ewwPhUfzhR1I3Da6/ZsZUv/31ceT77RKoaqrxRq5Ki+9we4uzf7+A+7aG2sfYhm7nA==, - } - dependencies: - "@types/d3-array": 3.0.4 - "@types/d3-ease": 3.0.0 - "@types/d3-interpolate": 3.0.1 - "@types/d3-scale": 4.0.3 - "@types/d3-shape": 3.1.1 - "@types/d3-time": 3.0.0 - "@types/d3-timer": 3.0.0 - d3-array: 3.2.3 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-scale: 4.0.2 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-timer: 3.0.1 - dev: false - - /vt-pbf@3.1.3: - resolution: - { - integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==, - } - dependencies: - "@mapbox/point-geometry": 0.1.0 - "@mapbox/vector-tile": 1.3.1 - pbf: 3.2.1 - dev: false - - /w3c-xmlserializer@4.0.0: - resolution: - { - integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, - } - engines: { node: ">=14" } - dependencies: - xml-name-validator: 4.0.0 - dev: true - - /walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } - dependencies: - makeerror: 1.0.12 - dev: true - - /webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } - dev: false - - /webidl-conversions@7.0.0: - resolution: - { - integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, - } - engines: { node: ">=12" } - dev: true - - /whatwg-encoding@2.0.0: - resolution: - { - integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, - } - engines: { node: ">=12" } - dependencies: - iconv-lite: 0.6.3 - dev: true - - /whatwg-mimetype@3.0.0: - resolution: - { - integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, - } - engines: { node: ">=12" } - dev: true - - /whatwg-url@11.0.0: - resolution: - { - integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, - } - engines: { node: ">=12" } - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: true - - /whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, - } - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-builtin-type@1.1.3: - resolution: - { - integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, - } - engines: { node: ">= 0.4" } - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /which-collection@1.0.1: - resolution: - { - integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, - } - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 - dev: true - - /which-collection@1.0.2: - resolution: - { - integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, - } - engines: { node: ">= 0.4" } - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - - /which-typed-array@1.1.15: - resolution: - { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: true - - /which-typed-array@1.1.9: - resolution: - { - integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==, - } - engines: { node: ">= 0.4" } - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: true - - /which@1.3.1: - resolution: - { - integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, - } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /word-wrap@1.2.5: - resolution: - { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: ">=8" } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: true - - /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - /write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /ws@7.5.9: - resolution: - { - integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==, - } - engines: { node: ">=8.3.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws@8.13.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: - { - integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 5.0.10 - - /xml-name-validator@4.0.0: - resolution: - { - integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, - } - engines: { node: ">=12" } - dev: true - - /xmlchars@2.2.0: - resolution: - { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, - } - dev: true - - /xtend@4.0.2: - resolution: - { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, - } - engines: { node: ">=0.4" } - dev: false - - /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: ">=10" } - dev: true - - /yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - - /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - - /yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: ">= 6" } - dev: false - - /yaml@2.2.2: - resolution: - { - integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==, - } - engines: { node: ">= 14" } - dev: true - - /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: ">=12" } - dev: true - - /yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: ">=12" } - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } - - /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: ">=10" } - dev: true diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index d186c72..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - plugins: { - "postcss-import": {}, - tailwindcss: {}, - "postcss-focus-visible": { - replaceWith: "[data-focus-visible-added]", - }, - autoprefixer: {}, - }, -} diff --git a/prettier.config.js b/prettier.config.js deleted file mode 100644 index 1432f0a..0000000 --- a/prettier.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - semi: false, - plugins: [require("prettier-plugin-tailwindcss")], -} diff --git a/public/favicon.png b/public/favicon.png deleted file mode 100644 index 20853743e42e971e819c1f3305551b9c43b87ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3989 zcmV;G4{Gph)pvX2Jq!F|AX8;Wi&!$I*=f*v7km0_mf<9ylrlgBjy+^yW32 zLd$540z7=ghd8>Qk>G8O@Ty1)G2tAJ-@axOXaP-?Vp~o zV`!L06@Zp-d;!0~k0babk^=EaJLTMzyr%X_=WF<3-}0~ z@QXkL=Hr9M+`6^2Y5`FAFFKQ74H-8$083a=05RV$;1&G1%RAFd&i;m78>rnCawf5d73ej7TPW*Z}hFQ6o)d;kjX zVubGyI-G$q*m+YT)2Oflh@uOOQ@1clvreeMB*0HM0Q#Ib3^1g-W%)Ckqf>ahs8d)- z0c41`+t^XTVah@{`nCa+=|ml}6-6uy7=|47n4L&zfFa}CMMB1f6rkJOQ9y$4!*0=$ zXE8CRP(FdS0>~SF4;=y?)ei1fEdasKbtDsFjlnp^2Q)K_v=pE-{c9Kv$3A?_cTk}! zE$0$wPX&F@VB-SzP*r^BAaaE-tfdE=JcJwasaaMb>6;TaMkN4)O5kt&TTIoXybE(J zfDHA1h7LiRc_k~k5yDUKz zMWS#=IZHj^N2LXBPG7Tq{JF6n1hVELlS~D;hjSBj(Y_cm{cEXNqJXvde#ky5fzqM& zLNJ*TJf!I;>jE$5heo~AmNQM7Q<@&V1-vR5;2Ekcfv_;Rv;;%stuRuZKsow-xFX19 zTfn4=<<$OV1$_P{{@hQC*r`T;c!4IrnsdC5BlLJ}T46vngF`TbumWj*N2&r`iP29Z z$%9Gg!H0Jf{r*0}p}PY$Gl`k4nuX(8F7&^(`1AhM92nPuA?*X*~FYj&I-XyxUDA<|YaN(;c-IQl6h3wD|? zsH_LR))O$p;2-}Kg1-D3(PoklhDfslYfhlpuwbpq=MQi`e~L?}yLA>;;)pW0v)5bS z7{WpL167O{=vf{n``|J3TH#9zA|& z&vC?$p&`(u&Q0aiqc!=u_8j1<#4z|eHKO*jCOA&60B9L%DPe>x*QKTFWd&fyJX;&o zRx_W6aFh)NYM3IoQpO-`vAvo~zVrda+TY#uM8n2IoFzqC-WDLr1w+;rs0Amh^$whIL@)O#?% zuNhj0PqbHHtWPlptx)(+Rh9-F@iAj|6#xnFGrdI*gaSC6^ig=;cf1)DZAOjK^7jpf zmvf1eMZ^>!4p(r{{)-Q*fbbh{P7!V6eiA#6Aa@wW1DMgF6Iqc;IS6YD!7moVGLHMv z{W%%>4T@B{EUT28%3VZ1<@66$s#>av3Tux?gCt%CZh~Xb=-0ir@e=ha!Y5y)nR^!z z-)I%!-sVrC(cf^1dQe9Av9H3L@>Qgz?9*O1EWjy>jDA_A?CV}HPW8Yg820JRmB5Ve&ddie_>_$K2n1G<-f??MzVx`hWHbS{&of24D**g&G) z!#*5l1$tzWhPG1ir~ovV*g?hn-E!sQ#(UZHxO?r~rn;VgfvxMwIW2o$vr%4@k2aZT zjZFFbph4_RyH;Ei!Yz*yA;BTgq-u|Toq!2mbASSUS~NY3ltoJkiUe&qG=4zD zB~T&B0vO+Su7U@8DbZ+7b)2UOI+G(P2`K?3o#b3L$jiNt!99d2xCHKpct%s344~Q@ zSCYSTNm0bgMHW=81CTw>>sI&nHXKs`^m9DNiazH$6|HhR*3Y^IP5+UxW{Mp0_9FEC z02w881mAkQ_=0GSehOXZUgW_T3_&5>9Kj7#371N^-m0N4NCA9s2dy+KjcS~!@x+ll z2d<~Nnqp2VfO8f=D?66w`7OA83x;7iRl7`gHDxfD&;+h2fG&R44{gk|;lio8+Ze4> z0Opn>)oNO)0C^*vS%__Ty{p+5(KQ9|buQvzjw8j*hqpOo7tEj!pl6lLrIQCOe+(L2zi@8r{j2BPlFHL7Pt$CsM2(nAD**{#BRgrXo4~?dtG(pp1Gp8MB#Jn2 zIuXAeRDxGUrUNq7)EHYcHEp6BcFtQ#)D9{@pGTduoPq9VwRSD@TF|c1-=8|*mN%Rf8t3bM%gNVM;1{`;I(bqKA=UoT zet}RR5BDEJxCN9H8VN|-Nh?ygB3sHi#Uhjg=>B8=S7Y93l&Co>)6uKZdPcl&nJl7( zgSD6Q(-U?hstbrZQq^jn2-1BX9z#8=LhnbnVgm=&dx-u*8w!?NEI~uM5C4} z3)u)%C;%lZ*5wFd;9*}SeCZ|s##M!?Eb)KMlsz6sp0L)8rOE+UFTw(dy#OhY0PHhX z)%;O;S{NNkGlZ&8a0r!*Ent`auhMy2mXRG$QAwFzgrv|;g??lB_tQ)ID^DJqJgq`S zR=<4{9~AzLT}AJ}m$EEtp8_#?-M3_HVT$*3e3o$pTprT&55YxNb}swhpMwd$d7BEL zOw^=)`(R>}gz)^$AL`zL@^ytNCMQzFMtWK!z4Sfs$U zZrDme>rw$Q2s7JQ2<^9GvQ!%;xHi^}xaFZ;qAf@C6f7aDtt)RrS!BMt^j_uzh!4hQ z?V5VS#FWJ`o&{V6lhc_+F8MNE;+rwpVV*SqVx$;a9^w9hRx*Z7aG&8>3xrRkD}Y7? zOj*|Z?Ozx?458rySFvr(VcY`YQ+v2eR(}1!2&#r<_9Iv5d<~en;L{CgfH-ymu6q0H zOp{NnDFAxL6SiNgB6MAemC zJfHRpXa(Mzv;wMAs|@wUUG}|QW##_KnoX!vCn=pyWKX1zodX>Jy%jf^hIXU;jEK~8 z15H~2jI<3QF;X$|HmcegTNQDW&e>3YJ4DBp8b^yx;P)SMvO4jqBv|=1pT2mMO*{bU zpgNYsQ;MvpWaj%bYz0IH%Gzs0(ZI5YBq}?J*V%Nr1*DFCBC|4xtN@r}K*5salX!E7 zx-Ho*LH+hqdH{829)AZNhws|QUH;N8D;GFUP8%^Tefm3#>jSe z7m2H#!e=U{VJzRFQ-azsCVawZ!b_(F)-fu4!f2~lx-q&z=zIe6aG04EK4H99Fx?>S zL_wkisiP7TN`Ntb3=UY%dBh#W5ocX`RwYWbr742dZsCPfy*if2Misj@g-_Iy_1rm! zg$ZoT_bO^ld$*KNaJ8t=II|43*FDJ0B1+`&p<|VRPADzgII}FZpBO@KkX8w$Y5}e& z^jXknQn&EMYeR#`H(B!sF$UCNlLW8Zfy5dfP1hh4}`iY4x3<0Kf+J> v)j<3k6{XO~{)(Zp&pd=L)JVGR!dCHrY5L}AArBca00000NkvXXu0mjfE80?x diff --git a/public/logo.svg b/public/logo.svg deleted file mode 100644 index 7dead9a..0000000 --- a/public/logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/public/logo192.png b/public/logo192.png deleted file mode 100644 index 2127217b4cfa6f97c97a3f3089f26bd1143e1ecc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8748 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 Q!pgwS>w20c>UNL*4+ixrBLDyZ diff --git a/public/manifest.json b/public/manifest.json deleted file mode 100644 index 3bf9500..0000000 --- a/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "Helium Explorer", - "name": "Helium Explorer is an open source block explorer providing detailed blockchain data from the Helium network", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/public/og.png b/public/og.png deleted file mode 100644 index dbf146804351457b950121b9fe6e3e69e70a6d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136292 zcmZsC1yoy2*KQIl!71+U?(XgmL5o{)DN>*WD_-0w?oiyNKyi16q6G@2xYcgj_x=Cx zTle0x*2$SOwx2CCvuDpqw3db<1}X_E006*HR+7^J01!F>08l#^8J=U@1)B!|&?OvY zWwn%LWvR40-RvBlZ2g@eXI)=(a=CS(<7XrO5IyOp%O5h2>kLv_^S&bmOiUbpif_xZfPg}v-ti2;im z?s7$@dgLKumM|d>x)2Eg`ZSFIRILJp(LMwRkM>6zJ2f@L5Zj8Mul#+J2%1TXU%0ct zi`efRwTmfT4nbXoV4q5NN99xE)zz=jy(25Xh!C)gGEzf&olcwnnD*4kIi_sGa`W8& zat$>|t%Zq|n%D|;kRT$ogegj&`sL(IG?w9N9P_x9JjPlSy~q3mJ5|Cynk?wx32GTB zB&1>aJUc^@@42&XdI))G-*?o;XEKM6{p;;yMnBv+R_S{avxG`M&QOwa^AS==aw$pp zo)JIKB&wTzq+$U_rMw+tF4`oD5O*D(!AQEY!|wV_ILtb{r;Ow-JAQkKt}U$=DyGrR zl!Hq^`xfOnCJg`$5hRk>myO8~=1g^b_To#J@6|htKA=@1v^E_U$uUfKZS_t8uEPKTF z)c~#x;V$(qNnwuri{t|658c$H0@5!ite#1~tU26SD^4O&b|kdOS@uQRf$n`~g_I2E zDB@kx>7`L7+4xVI>#uYAv8oH}X+@K?8#&hUov*Kz^hNdCEb$%Rzn*+6wtTZ2*cACH z_-^Kj`n%X_;8Zfk994GC~^FaPT) z0GIWL|U6niRz5uTVC=HLtV zLgakDAPe+K7)I_}UU!u3K1xIw7dFN-Db!4G@l5DFQk5of>=eb(oTaBF6BcL!E~6) z(({RGa#2c&S)+j^=tj|cG&xDeHk_Vd;pkl1&P0<@gc3sk_&^zMJ)|X>cr8|Mym6^4 z2chf`4JqC^W(S;3fLV+|0sk>aGmdz)xl~=@)-jql03nm7EG)|klL*1uat_Lp4vTJB zgEAW=ELq$_(M*q6p@PeAf(E07Fv|Ba-BI4`MGFz;ht3RV?4&(lcH_8xtlPo52>w9| zQ{kdp#q9<=4?txYELjS}wKP^0gp`CZ@=GZOL}`*LWSbcR`s}$QGSzdXO=V0qovGeY zy~Lr!K~bVhmKb|?AREKrp@dZOY+huZW8P!lRtM`OEV(f`I=M-wUZ*Nqs}fpi>R3L{ zT{@wnnI@64G?or$oi9uAorbx>wu&qDbGrLPNnJjsWjsn15Pc5MTOH}j^4zk`(r#@7 z0|DJTy###%rWyVBTHD2e29K~SMSOL9QT+6AKm6!%owTnkjC!t>-Gw@p270fZSXx3l zQ;k){<$E-L7O3d@=-F0Z=^a%VR0>p?8w6D<7&PfwSE=i<>aZGa)V|_5Sj44J272( zEO}8fv3PjOv0S^-Q}f;2E&SaFisyBDb<*Fmw;6*vgA;=jexd$k`1uOC9hN6u)2|nX zfn1L9q~H*LLD5gHEn@X4Y9q3uFwZh~7yTo9BzYu)!mt9h0!^`xLV4U%oKM`(_@;P6 zQcB)){=%$>Y_OU^4w<08#!4CQNyiOp0BO&s#aX^ZJ*&>O=7pQ4tQMmpqXwg}HF2*P z;g4b;16%y7{XaxR%a;tP#frpkq}!-Q+NK{GPrRJCH&`|pGeE1&u6bv4YSdI4TXS0T zZC%UdhjZEL;;Ly2{W_1cm-EVod86#t&9la{sxyxD;=A)Z(D&OrGg=6(xFV|Ja$NUr z!Cs#?lXr!e-%iCo(Ju6C_29uXb*N%dn^mFZ?bGLj -)ODEF~Q*)NZv5IYR!C#$^ zCVk#}_I{D^fxOJxpFg`AU)oOl*4cksMmohl?^0+|yL>Zkv&jUV|uE?H}nW|J8}4d7l#81S2sd5uvGE(~g+WZ`IG zpJ=CLrDZ$&)1ql-a;J0W7j|1BF*TzMq;R*8RmQD8e%16Pdza)St+N5tq+P`?(9iba zBe)CfA*V`5LQK%Xa^;$8o61$iOd{7*Y$*RJwjm+wnU_#H5h<<-{&zZ8@6E~fJ3r$e zB@cO*-=2YCRaD^J!*(P=Bi zj6)-7vooFXYrCZ1uhXo5$K^865si%N#YmA?A`s2%_?m>8UD(Bbolt|XJd!tYTBA3=&$Y7URb*=I>)Rr9=R`q4Pv^n}PJUAm+H(&29S>|S_I zc*6_XE5(cSD)nmq3KPN~Aw1AJHk?wfe*SDNRz+@0x4Wz+Yn~I6&}~BTit#{@(4n95 z5i>gefN(5K=F>pc0G4h_*?E2$x4KZRb?4U2&_X@|65&q)g#7-zIgthL&)r#AcHH(Z z@8Tyl^0!1r0;fZT#l2)dpJys&W$=Exw<_OD8*)2hoN+UHRs0bCL&vbln1-XH zVfNMTu>1o}f6??1N9+pwFN1Mb@#mlQ49xFrA--de&lP_gU!LyF$Cc(yY-YGXHB327 zgM%VI#gMb|8xYh6HnVu@?>jwxnO|~SQ8V^>zu6MFZ#-^1wtgNH74zAL;55DNyH1wA ze=SQvRpEMlfXD6k+wR*8!3VdBPY%ru&im!+q3VKyZ=79g8mgE-$!zMhAC4`T)PDWI z9bCO-S6}PAvGR4`>z3%=%jTtk#pQFp&5jz(+LXoHbCM6I^XGkAQ@5D6Ii%hs<98wA z$>KBjWnX)GIRl@c1`q#wLP$rc!kWiS7odq>ApM@xnBAG9o85&OLGI*o=_>5EdU

}?U+=^6&hz34#W@6?Uv)3e^Ov2j+J2Z|tV1*x z_DT!79cZa|VYY%>_oefreuLuI$~tE<~L|5HZr?C<)0+I{Qq z;l0e{^*K``*=FJRsdJ4I^O7B2o3@7I1KU^f|6!5H(am z!+D1wARnYYql)soY;-19a`2}YT1nOWouj+ws4IcqgMKxB@C`+bEmYY~T^+yzPlEx7 zKoS5FJOzZ`5)xTM*!l#bu{45KUX6B{?q24Cqi;000sW`41W6+ zfc~d8LT3TO|D-|f@G^k3uB@^${Hbg0X>051<>2N`r}Q8T&w#iq8F>K!1oVGypt26# z1-$=dM?I)FR9#KP+RcT-(#Flomc!4*{ZBstF+UM_(#6)>lFHA;+0{$LPn_m&4H0RME?Zl1PO0vuc%Tr?7>R8&-Ao;G$OI&upCHiy57(>Qp0yNhsg z`uh5E`0{eNdD?Sw3kwT#a`ABT@UX*cuzUHtdRzLjyL!?7)5-tzBWLSn?dj<5?dax8 z^`~D;D>ol+aT=OGg#P#X2dAx{<9{f*di~25oI%b%C7j$GT%7;gH@vCXpIi|wM?YI< zBRNMGxXj=*Bm{&7#QxU*e@gyC@xNL^|I<>KpYOk0{#VKW-BRDn)>GEa1y0gi;y>#8 zxAA`${@YND^AG3$C5eB;{5KaaX9-j>&i~b!1nQwMXBb?KWR7y0dhjRQ$o^bFQ}_?l zKTmiXh*7GS^9x=k1yGig*7F0N^*~l%s_K*b1#=8UOo+u45cL5Q{iDFc(MoE3ttZQ? z+8*F77N!Dj35|;A6Ghy3*+mCZ1Q}M;sHmNgR;y=0S~zkA(nz?`;25SND${n^{D!KR zOYhgKznpn}>HcPN5Bq+;{_1PX-S$!Llg8G!?;n1TFST{u$8Vkgo=nD1Z7|3hAR-(| zi!3cBd%k{j=|AE9o^0rtE48MTy2vr!%UtC>FT_R~1u zF98^DX2>$K?h8DZ*OmN_#mDBAUbD9Agx}zl?PE1IOG7(|7 z(xygB%=a*YsJ*H*Lv^A&wT~^3W(b}pyvH4b#--M3r-32EUiwx@?l;8Nbqgo;ny;KK z49`vOGf}o|S=R1tUk()M-9gBhu35%q8Dl9by&tZiSF>Xj&0$L_)eJS_{lhB^vkcg3 z1@maT|904q?~)(@6M)qUWE!Wqd{?a->=Ru(^TXgK}hMBst|B zs*9{NFy^;xnd2||1JD+fW{!OSkMhkqoWDEcw(mgBTKX4BJT{&?srRP4mWI7weBXmp zOMl4aAw-PKLz5f3dukS!p=uX+m_=)pNFhX|zMYnl_2x6a;FSSuZT5vim~*oWC_@OQ z!Ws5z;;#)n-<#SDaK+7JtiOlb)x}@CBI!gCKORF2{WbjtlbA!(uvlFJibh46%312@CG3nDKk{btA+5Acvs%(l}^p}suo>1C-#`w?HZ zK~A3-@GxFB>)eV{x8-YT_Jxtz7hKU}j;0Y#3F+jafuW!QDUPg5`iB^qXgUS6m;Qm< zJZbqr^|?uIGXbf33Ar9ypMfV{C;VoJvjFf=P};V0YFz@g;ST}7ROJ?t=>X6;=^LIc zqqh>}9Znmn{JXg)WCX7c3EDpGWN3d4P`?`5LEmX(IWjZST7wBQ(55BuKtd;Wz0{~3 zhu+$FO%e~7J~2Nnniw#O4OO;gZy<(4m_A^zEI@|xHK9RWI*elZMr|6HLjSN4f>3Ru z^M?`lEq~UEdz3A#4cCA#DDsv2-3AuT0h9$-=qYnNGTCJD9|x?nTc5Her_{a+C8a$9 zmLQroiM5jguv~cmI4lc?-k$T&+pj8l7bPPbF_KS+se+icoyD4N_fJ(WoJ--plnt#r ztteZi#>Y=m1razu28FowIE^m*Vwa){`*txfKH6)z*g}ciKCdd>0;_N-UIo{73czaq zL2ujQiD~h-ce1k00HMu)djA-I%7mo9VO|BHw7rt|IrEw|QwgiXK{w5WX=dpvO!A~* zcDJ)_Lb%!}Kwwr@jG&a3#hjn(=zRN&9L~bs8A$$V)%Oc@5K2lmbaUBBXLG1omYu;AnUW zORXV><1gg~v|9QgCRkUsRcZL;8nvjbBgQZm{1B*6Gu&LRWUO*EtgF=ERFy#6U1oUmrELlI1%rA+LZzv9~D6 z86ow_$%YdGHSb2b)4$ZhWo4~V8zTTK`bSpyE#4Z+P8(??bHeIvx1O00CO5Ki?>EE? zb7+;VQ*eHs@GVcfJSPS@i$#7gsl$dXawdJZiQZXS(`lbLPz|SEyfN*|O4&v8C(>F+ z0<%_d@jHJU2QT?n!g+$eR;UdXfSvuTmNu{V5SEQJ)UghY_FH|QzqV_(G?!cC*HT-S zeKBTM`m5mk?rig3fuGHaV}@M`aurIJ6aVp%M{w zCs2da(CK<>umm}sF0X8Z*r-cAx@cu_RHvx|>bBn-;F=Dkn!N4Ol=9!#D%%JmJEDQQ zbX770>KI~59J?;*58rDvJX<}T7U7l%jkyNcf5>810)Y{-QkfYY}B)#(0DPQ(mLHixe)#LCB^fuAyNSIn<%0|v~Oux!|{59(@F@be_ z;$<*s#uV#qrs{3_66CFLo551Fn$%;wcGkIEq+fuootx|$q+Bq?z+(s!LW%;eUR6qw zh=AyAOjkjw&C_Jby&dfrLY77*pEYV2V|Jll%gp2wVXzI-SO7)x1r(1+Ytm?H0>xr9MC3>c2ua*pVrJaTr$CAmIlu0Y=Q?Gp7a%gp z>sdPf###F~F!{&Y?e`+P+@BY#gc{%`!Oyagx5}kiw^`%Dgccak$R2lyOQ5?YB-5)RBOtrJ=dqc5&oua;AxAqP~;GT zM@Z#P!^g*p>)cNvWF1EG!hi_$yfFUZQ>X9kZ2Cqa;KObo~h6W1BBaefP*<05m@fWs< zOSh{;cBc^>JYD-x9CDUlPlVZppXBro4X!XTjOJ5cXQ$ zXgtzuBsS=g_ZgTnb{jn6`iGoX=7sVd;14;vk=dB-7ypo}>O9Fk`Ins8XeY{+&B>$` zv0?H6TG;}ww!ol>xV%5{&&$tDL44Rz5lSQbnbKA}qagbqwGu>}k*F~o-e=VYP#g2? z0M#$y{y+I{BH*T83paHcjscI2@HT29zfE%!TYN@irSt6xlG+sb1?H>cwCsxMAVEn@y*P_Eaw0D2)4~@d+MNlk!SS?pU2-Ppg`F$To z8?3sW$&B>0HJ+KEo}xny3s-HHiH~U#cG^ix6Ogg9C}gh>^WDq*v=GB#n^fp{w+tb6 zrS9WMWhJd~m2HI@?Y8&vUF(Q_f(qCMwebwy-w=1cA|aofyw=@t{AUr@kcCovX<)SV zSPaE;mA)GVPf4%1_yv7ECEg5>6J;U9z*Zr~mzLZ71x${D#YV5=xKAe15TozHMn12I zpK(O21rT68;te38v8A2_$OkDDU<5@4kbVh&5*HkXo8t2#Dd>XmJTd#Jx2>i80-&B*3jOHbhl+EK*=i|W|drjx@3 z%*o|GvX`^?5?5}ldl%S!83~)^PcP+zZ&<(KSD^riKxU< z$ix0xvWqDUyr4%7CvO}wSPaGuX(J?RfBse7G3=kkjg+rO%^&hd(6{PdJ2>g&-WkzM zf(#2|QKfu8nvM`1*(Z%_60qNSQq6)}Mz1STY+6>-#cOsMCQ-F(bhs!WHU) zFj-wN%2S+1$M>u+E)}@vg0W>KLcj}o)Np2k0StPBQMIXp2Z6sm}SO>DeIGgQCVaj+CJ4rQKJSSP6mdqbp z6c!S9hMCICD@P7m>oKaU>pN<j2%|5{R}oo)OnI>R5eUZ6*MDzpFf8b*4b z5iYTLF|WVtLr3x=clZ7&ec#(@izCq37s*#V&WjT2vt|v693b+ty`hbZq!?Gce$)>y zMoAfMr=oc0dQ&8nZ#6z4dDbaby3X;&f)rv6hMd%6qLnw0^Ol#L>vBHN)9N`?XdgoC zBV@*Im5+$O{tpJozZiNzgbPf5ko8^wX3PMlfWXf%4wn@Z;Fc)%$c^9ZVF2>0#>xHc zSt$*?XBex=lSE`S*4bR#ascTK`QL5d)5}Pbmk=YP`IB$PEF{Qt8iuo;el(9=yEIcbMC{iUctBFQNg#1yug&a0)Y1{a z5in>uB`X@us;)&CUO03-f6`beZnImJ22~e&A?9%r(KBcY?J|4AA6K~NtIbyQ+xwVz z*opJ%<6(ba5sz{59bz9NVz{GW#z@=iqsfaL=xo_l2aPkxspH#$?0{#~ z_FJ9aozBkvFY=aDY8bjbt;(+q8XBkQe-5nI2925xzyAYr*=&gVG)^pVCee$n`!kPBPsw+qa3WEN)6J5t&PawVeee9Ci+ zFB&%dIamADYACISiui2jbQXs1J5sJqGBg9;X?gD@c#xRm;D!z zvdhN9KY%tMwRVR81&Cyr()&$v^^~3wk(k+T6;*QIXy_(3pNt`d3Zfn>$04mL?B6ie!{%Y=e)ysX%P%X%nr(=}_arba8NSKIA0uoE|ZI91d#p$X{fC5kbG?l1k3 z%*qYn0o;K4q>6-FGXW3bA@%GmgF>fx;OYUXnhhtWKla06&32p08zV->7YyGx)`}R) zUna3kWh8JQ7)eMs!-%b^x$@y~kei9d+tgVTY-uLi{Fql&*f6?k+ zgC5dry6nte4x+JiO zgb{~bgm2H%(oI@Y&(Lx^SYrd4LSSm|eTWH$!uAGTGiz5V(sd}GmQH!A5}J(tm%?fH zMOOr4;inkDvnQ*HQ8oOn0L?cPDORu2Q8}=XjnC~|xPTWBpd~3DSZA48OAjAt@k;Rx zv-q?MA8VQZhfw^XZ|MPt2AlbFNQb*PAEmUQmtC>NMZQYRtb~&!mSO@UFBpaxZ+9K~ zN;D$xyRzo^GC!qwrR$9w36~*oaxF!nHh;(a)+?iYQ@w02_X_6zM?`1whdSFFpIbR= zwsapg-uvpZoLwO7Yro_E(B+Q-A78XGQ$4|dJ<{bB-Epn*KB-%k9cGtfu`A5$-qx47 zE_GLo?OzH`Q~LKKV7;I=1Nu{>fZmhWxtTi?6}I7#53@~5!?d)a7){d=iGcwlTXFZe zreWaeST50<<8D^&Zc}NKCmsQvpH8>L`ilC0jOhA-{jhXJ;ljBZ8Dr_0=NBcdfd&?l3J|p{=J{@_740zD%C9&8FhXsYB6tPzaKa zekV`q5V`{GRARzahR$f#3pC8GFiO=a;Iz{`3hiXO5CL|p^pq)oE>;b8xCd%3R{6)I z+-b`|MYrN<(HTpQnMwlB(iemYT`zy^55Ma8!6MNvMg%R5za~J+7sM`;WHqzQRHv+v z%x<#K3%+}+p5ZZ+N;;-B9Wjlvwb}eEFo0>&zfNv&O!-u}uUUA0)Rda$hAx5zVaLdi zbJw1_CPmrWJua3m8ws6{*pYUC(1X)d#t+7wf0%_%yaT!cfT?V#h{z*(N)!bWmQjC% zdL9&-o4b4si8b?jYM;X&uBZKDJm=6K9jY)=dhmvwaljrIE;^aWG{}v&sL4uy69um_ z5{GpGW>^cKpmSkg{bu>Io02HB4mOWcLQb30m8|CD`^zr0w5tI!AsV}%Khw;nbDtJSSZltM-2t80v3J{7vY8BX+t!f)Pek1q! z7AAB1a&(F`H)yjaZKNKTO;fE7 zT*1fwv+%J1da$@hCIlJtrwvRMdDhcFy>CsE%nSc8w?+*mT@Sv3ycgY(7StCBtTE{w zFB^S=ejeg>x32&3qA1SQ2;3^FeXS7MpGA=Ps%gd}Zx zl3Cm0&B~>kYPPp?mKA!pZ=#o+N_%|CJ`;>GmymmUmEl|M)~Q;4k)ZIC41s-L3~FWB zQGg7z5~sWqnnXl+lhD++5m(U=iko?lfB02Ci=&PZyNB^?5VP|o-vy!8Lrj_b?V66+|f&Ng6*QxZTZu9Fv zZ4XA7qRTfFj$)^FKB7$O?E-Jm&NcD?Q`@kLA(35J2)2?nINrJ%5@!;(Em1t8H}7ud z^I;Dj=h9|nF;4nosMFqx4~;E-HeiXFX<;!;rPsX@F&YIC-kUk#LKq5_*8qB81&SaG!$jOKUxF2Lv~wII755f z{>k4{18JspU2d0ifAEW-NU~7{m|~)DHm>s?{6#291)o!05C@L&UA`4G7+9?+x*0Y+ z_=JszNEIU|#AWD7>TD0CnS6RIPW?^fEs0q{0dDSh{vHNR^45M<`C9=>vHIx^_*Qmuby=i))*5aXMhlVPDPak4oRP9VNx z0!IR#oA463yMZiUu&mLxmBe2bbm1Aw)E_8FHYqpZ7R^`omCXMZHQ^A2r53(kH9KDL zxzyekzGSB@lablx(rZ_DXm6lQnxYebgq%}G9QJ5`*(Q*9Z-7Lo`ioyXzw##srfQ$?F@|bPs+IkRkv&u+;Q&&K-3CD7q5=h|d z1i^vxG?NaXBLk89{MV2Z<0g zDwy@+QI9MWMPW3^6>;LXNUf|}@XTS(5l>g(6g}^+6L%3iGD&%!f@k`aE4B!Tqz7jV zAw5o(6&R6TLY5a<2$mhVDUP;s@9hXE(%-<0u8t54dN0#Xu0FHHPDB}TL)4J3RS4!F zwQ{4SNS3bS%Bv%R&liZytY%cg`BLxqq&C2qow6{8Mit(ABJ@d?iALjCY`IMWS`gb} zL#yN&hgGvgr!m(@d$GMDbj*ka8#{iSe(yg^20zt%vF+QOBOTp$=gIiLb02vecnds? zaOZ4!o2S}CAQpATL{4EI>=iJT@j4q7{T z5M69{vOyt|8FjZ(SUpm(XMVu97Y?T=tD4F5bYTuDT|0>?-^0!kpk$|fw&lgh>DGOz zT-XL}am%R5xP=f_kc>)-RUAN;9K=D~D*ZzH&M_@vJ&yRzfQ!{&c9ew(7!0Gi9o!Tu zKmQzkI?Pi3>m6qp4}yyAY8nSA>s+qA0Psv7P1c1g`y*P|3>jFKF=}B~Nsn}(zmW?& zS)4NQD!xuFL(tyHRADj(*&(i5$DkN!2H;5r4&=sM^XA(0ZGJXd40?{RPDH(N6IwO# zEhOy}fi$U#P3*YyOLBNDl5-{|GN|ZW^g|zOcr6ifGZtZ_FKdf&LRv|K^b6sRVKqgJ zNq%SA_id{ZzupR3^XgEjN@}VRQiwqd8modS-9KXZW#jglzvEg&#ue)3dO!^0@(vXu zPmpV&CSyZGpkBKMGJkp)_kPIbwnSg5HisqoMPol(T#CTJkXco5Okp-U`YL7@_mZlr7KbBB=h>Dj8l578!57ej%PO_hzfp)yPeW{@2!GLiW} z>qV(JoOx`lkXRY#KI8B}^O9m|WLSzkK%OiW_C7R_nrw&nm##);&Q*9s+`HL48lbgG zN#FVVl7rh8jB3XDbVgxVcSeO+^PZH30#V?y6p@H@9HwkxwviB&1levZUjTaf*|225 zJ|=<*YG})(0lZj5| zw0VEflJ17+tK6tXRFVeOoQJenII}5u)gcoLzNf)m=6VHXI*rq52TG*eclsA&4BUNK zI2zb_3Y`{v1JV{f3*dE`_{mUzzT{+f7sH{cLA1#T$0wYnp-^BfF9fAPCP?!LP*%YT zd8WSo!(AKPF+ojOh4|||I|?HHl|oRc!&AvZ+NuVF*mSu9UdC)xpY1?jQI*x%p0ux4 zEIpzAGxeAXxlL^nA#BFawB2paLOAbx@2Egz5(DW71ZbABH4C3JJ8g26Rb*16Wp_zV z;=C6RAt-7^*EC^oRW%=E>}K}aarKgBRX{tzCYAN-TR6*~CB7iun3vyV^4R+{4(#Bf z56o7Up3H0OS>t2EC(-vTM|{cn6d&K2A=MGQsbX>+J(m zR2>-!{N%)!XjrB!=;74|M1^7JMSVDI+&!8K5gsSUrO}T}`?jW@L6>v_ATlXG_4IgQ zZLBq%8pWFLu|-@{xnH_H_f?fhKtueQ;F(cBVnSI$k6I<@}qMNFjo%toxDNx4c3Quqm2 z#FUAl_j%kxvCi4aYupqPVWRF2a{B=?me3D&>9dycBiA&YC|A;?XM%NVSnB-a->M_h zuh`Aca7U4-VhxbJm9?L0$|nWgDeCZ!=Hy>TG?I*gt}}kSn_oNvEFE5@CcM{5Q1@_G z=5k-~JWV7N!$M*f>9PC+-2rjHp#UitP1IyRP|AZCTWjS_|63gN$qIiohtBESZ!a6N z7djhi_8)FfB?qN_iQKze{OAHK8+99T$sBV`g7=Lv-w0XW`7sW0;|i-Xg<@{P{=^92 zVP51xVr)E+#~BV~;2C{WeB!O^*QY@GiRZ!3J95)!Za=T#Bt+%xPltG(um;|yI?nwv z^d%8bTk`jw(-f^vV!Nm`9q-Wii~l-(+SuWoL#UmNs9kmKd$f%NZkBtG1Q&cVGvo(Z zHqR@GxPk z?nb}*8N`3=tbH_@C7lOMi%cP|D;LAh{+=e$)RVUZm%L<6jY4Ces2RkC_%CuF+&ms; zmV}+1c?+td0GiCWBN~LN4KcX)@-(hM6-Qt^w!e$j;ZG(beZrMQ6YIUrp?&n|HECAT zBwr8m+5X-bdx~5Cq>}mKfb0wWs~stdx;U<|$q)_UHHgAE$xmNQeuog{#Ozm7fopQe zkfaC~pVnnL-mw5bWA+_fa$L$u7La@h6bEbdd+%O#)T{5kyv8#j!}PHI3oF99h07bR<5!`iFqpR%V;3kN3p+A_+WJVI*~i2E1D94?uaoo6 zHE`f&qYu7#JSP`-dCx>>K*rCo)=kzS6oM5pDuN;<^_CuSy@FVcG_YsAK%u4=BV3;e z%XgN%b3hT5MmjUk;bo}0Pt8f0=|oz7ejTerBA1cS)@Rc;YW8Ve1=K4X&tPtDU?5Z6QK~PR?Zgh^E@s*V@5!mw-rBtkmBDRfcnB!f zLQ|w(8L?fu%X^UaCC=vxr0%YtohhP|;pSO=odo?wQ%CWg>)-$a#T7u_P!Jg}1ry5% z*-UDHnFHS1Hlzb=J{Ickpy7gMMlCo!u}8>GPous7T3jk9*kh4f-|uv96HFJ8RzSdV zZlz5okeNvAY4Q=da|?Tm`c-4AJYS|+U`jkl}G54mHVc#6SBu5)sW<}wvvxb$X_q33P#US`={V?*IULv}Uz zA~Cr05plr##ju?1Vq79j=8*~pQ;#%4J-g%@1q|$oxXPtX(%YTo<+rePuyHMz^uEwR z^ad*RcBX2}FXHLL12m5bg`c80tY-|=pt(ZR_LFdcyOY@bmw~UA`@G6n0D%Aq*<2(S zUF3kg!4;AW@#{u5<~(%ds`p`b^Gi|IrmnwiWDB@3E>}spVz#x!tJXjdhZ&X8JIjJ33%nw{JuB~kDIll2|5xd~L=mQ4_ zRJo5@IMHWv;37NeoWw?zMz5nItmH5$&lhXp+WQ4(OKQvC{!A3!Tif2GbGE0ah~~Xp zt~EXHleJ!AP`*?3xfFZ&fL@~00-^qP&-!EsF9Q6;^@p`%O7D>Xz$Fp_s&=y zxv5M^RMRZGFkGSeQ?%ziP-^f#e|E-Ck%AxfSKi%i+6GO@=sS%ojIj$R%Y6XYVX8XLHlqoWjhDyt;ha!8q#{@d$V19RMTdu2P9>9@TJvd=c#n4wz%+_A0O&{dV03@*P5DT8 ztZ@x;IqLUTi}oGRv0aiSQQi>{~> z;hxry7omVqn7bcs?~mhlqQ%7kz=ZGO4yG=7BEa{^Gw0V971U^oB=PX&#eqqS*8f;t zg+8p}M_jR~4_24zNpsoI3yFyOetv|UKFd!!m?lI5E3vXuSY=n&%1#ORlmbj21INyO1(v@yCUGNpXVC_$8AK#{*nJni z9wbMQ;8>;+ZX8>EEA#Y0v)YpOwb1^COFO8gnls8c3ht+xh2lk?X%o#l>M1Ejy3875 z`dC<1P_cg=ZJ*$_MdwdPkfzqE5gl>!uTN*+re@}1$0`$5TFnLZU*UE4dB%H9hdo`- zsA$2mC}9izqaB98eDsZimJl4LZS>;$8V=gcP9PtkAGXD0}dMd#$>KD0ek>ufj}`h1?1NVzLva z3>q8oZX&m6e_^KQ$ZPur8^*~_0ZupG27e8NjqG9@q%D`O^+>b8du-sw;u3Vm0raz} z;z4LnPe{jSwVn-Kk6kkZeUnlO8oz!p4lD$Z~>2oK}#;k?Zf*hRwX zo(#Te#9jS-Z4{19JxKr*7NjLu^zpvl)^=1DLD_=omJ=G2OLa!G6~sz)+YM6p_Yf6u z%P=p)k0?eDY-DRNk4!UMh%n;0)kgW}wFx^`Wg@Z7p=b6lW%5N16V)2)&$`o)UNYHj zo!y)vDmL|P8oe(V2w=W2QR{hj%Dh50-Lc*5^<3raE}xLjZE%>aWr34_fXz-5XyE1x zNhX&zF+Z(b0hsFR+_k0ox!l2_pDN8T$3Xb(KBEYDt4akRr!Wk|!xN~R^VK%(mQ6yv72%tW6hqM&M-oFv}W)v&WG0h1HR zY8;OaNFmcwP;-$%a0mK25)YoMAo3+w3yx|CAO2o~$Jks2kE|K9a+6<;~1b44kbYp@vPU^}@f-eU!yj=Rr&ROdkg z_{kwY-p)!>XcT=L<_h7l?o|jPOF3DUIUW$gsqjlZGRIMVbhv@Tzxo*jN{CXaRWiLn z#!V>hj%xD`x6?&TOudqIm1EpvC@Ryzo7^EHEHB(=#TVVV9)!n%V-*>j#=zRSr51TK zOP7G=xA2g9!I~^WHJV|W>?!aq3e#2`LN<`fWA4f(fQfmRdCX{-=4c%3%i`}Kn9_og z#|5V!!3DPYvjpt zh^6&Pmr)K6sTWPQG5gyolS;;FKRHk}{Sx!LT(kG-sD@mTuuF-eY|)!^IM{ZUj^Ef{ z(rYdx%*n|{V@qwyj)Mn2DnK-q6BhKL;gEFh3|nIDPh8%^7dU&_cJumt!Vpzt40`#w zG$4io4ILr`!;DT@(P3|1m*pk>b(7V1MrN|lEWD(-cn(HFmM3qVwx-VXqn4Mvfo(<#Pt9UUS{0ig+xyaO{Bygk$4LErKqYrkR>CsNG@IzXuV-BRIH&_f{+2_qrl?UI)mak3}LV`pHcrG zKkbRRRG0hxNL1`WKITpq`a~7H@mtWo5kUB@?Y>gCVhC;sTYwOrBF836{+|hlxjGIp z&|L~@gmGDOC3~J7dbx?Cykmpo#wM0z;+z_ad^}#JJ0a_@8WUf;r+gVTf`ri1y{dCK z*GRV<195sH=O0a%q*;@I1Q!f-G(M2b*@n zI4a+=?HxGNajyJo_tY>4k%ogtp#0x%Njy)csV|U2IBeK6$P^i6zH2 zaiGPW>B8^OQGtZb_3N0FHQVr$9I3GZDFTFqG8iv8qH#&#|DowC*y?DSrg0DM?(PuW z39i9ig1cLAIJi3mhv4q+Zh_!-2<{x*?K}7LUf(a+-tF0$?yBmVoV)j;fp@QwX^TAQrR=HSp}b zKgi-&iTT6)qJYUDW%r6N@SJj+kTai|$qjIyx({HEIg$o0%t;VEGnbQ8qglZvfl0nr zI=)|U0-Nm4f8_QCuK8b*vzAjD*?38Pv-n28ZJ(NKbG)ckKy@F8uNtV4>VcrQp~*v0 z5vC+2@2$wUp-fG}+i9`=GR43$x1k;Q^si!O*r~}Gz9Rulypl}+K_TK#dr7c7ROZ_` zL6968Du|F2bMuL}h(an5!xY#vLY+eHYQ&`>!E*eBsr(i&7TDUSfKW=6Uwp@-DZ_9- zAbP{`^+rVHw9rW_$t+r0EJSp*4kOV5m1-?ozMfv`TK-{Nte0~AUCfq1AclpYn@G5u z1bO(4Bn7=bhM9fo`sog>D@M#QPGPIWFTGdwoR_R!;y;CB7h`an07ACHtmM=?lApxt z!B_$Qb=o*NMI*V#C>63j zxb_r*go+zxPllNI!QdRBa^&Nt_+^K)vyoZN30Dd?b9|qrI=QuaI`8L&c~Vc0C!M6Ybb7U~G@_V98$#9D?v8KWI~ zY<$3%dWPxuqCnR&f=~5{WqeZO?d%iRL+8oJi#UAs=)vfX+?ct$ zaF-W2b*rfPFGpIx6k$ZT$Q75T#8tm{-gwItqwC<1g_e=lapkk`GI2~w5qfnay^l0V?%@jK*g#1^MOX^i86EXNk8+G| zPRG}={5t|TP&Z_U^D7OkeSC)nSWN99-ZS;vc_d9f^2x#v9!lKKIeK-^fICu=jGucp z*9aD>Mqmm^wWA-ODz7DBapu*45)#CUH$zaNF0jT;>d$Qx()o z^(zfT_U^97le=c<%8>_~FSXu{v0-^b;(ULn@LLR1Mo?v--2T_cr!?YYOKBrpzQu+Y zK_-LPCTpFt((6cS35-T@4tGc`1PpYyR?l2a~n!*n*c0dn(wqp}TdHR#) zx5a8=+(w)f(xq3OM*Oclq#$^*52;TKtck!w?QVporzYQVlU@bDa{VNQo9M)+(}xW; zGq7h=N6wBG^db0KXFUErkEC>Ptyt zsyz|6>5w^m63*L6Bmfs6CAz+hRimA#u|LIM%pyp2VXJLjzT^cAe?T7d@M1Bv7O{K8 za%x1OVuWUU@Ns1oXlak-wqgoluzC#(?nZ%-YcaC?L)NaNM#}W2lAH@%0R%HAm~_WZ zCDVlB9_pyWrHr-bG_L`~On)6idP7Fi??I%VpftT?_;^UD+YXjf{whBrmedCZdunN- zbwyt&X+#4&zcs>64T|Y<5kZR7ku&QXDJF(}8N`QX(2Zoog*c3>$BEc1N0~gq@K)GB zv${6fjbq~*gd)SBA2-fcyUohBvr;h0Rc&%DjST|usiq1LZtI{P*uev@U5T%u1itbg zc6QMv(8uRdxrkY2*?!aT3K-I#&6^P0HWxq3)^-8lU8hrIA&@g*2_&T;D1D<0IzD0H znKx9>e?9ZRMlRe+vr)98t$%>qZ)pexC05n^yJb*Q2FLx@?#%{HgHNuekux-uX_dTb zip36wxQY2d<7lpl<1$;GD<270b>Vhm_C7Msk59<{IRKoD+BVlPY=?5RO7X*SIR^iT zEg1FKYBVsVR4Wcep3s;E3|T<*r@;fo#XDYX-6se8uPh?fQ_LoP7`~Av#ey(6=`|Da z)M?H-%3khtxH1t^nY;5!Fa$c{2@+#bF~sJX*Y#l7nK3D1!o+ZEEgcH76;1*Nw9dXz zR5He6ud=UUjrTxW1lvX!8t6C{$!tbCNTX}xBJ@(Tvnv?Eg}y={q};n=WM26l=1epY z_hPc+iR=sb#S_@73{aaZx}wJu+&t%Td&d$+a`+{Ov`}VzYk8$=?%Edm)YaBCDow$F zrreP>|OtO95Mx0_GcSwJyEXAhdBZ20EQ$Uhg z5Q`v!)=O<6#aWWNIR*5W{|DKOF6)D(UjbH~M zZo3+Vj^EYQZGa1456{jvrXAMzdcT$B0h_3{~ zyGR2L2Pisxb)e!4MjUn=?4FmwjYNV9-WATE1YVn-Q+ zBF^d^Q3fXkf*Q3NHJCG;Q{W@NT1x$Mp<;~V-u=J$HO%@)okIu@1&mTi2$4nz<`bC^ zVBeb99?;5F~Q0 zU)>nK=Z%6Hvq-g}i8a)LX)AUt)=4_ZOnmV;HgT%AN!_4Ln(=-&!_AN-f z6>8XTcwG5BH9o&%F=`4N#VUG(Xr0Ylbn^`JI@E)UV!_1hoEm;4RM>_GzoAcQRh^aK zJ>Mbi8^%1dE);DHf^S7vtl%$;z5{(d)qFe)6@WFWp-Txn!YGbqsrYp{_{S}b-`7u+%3`3H}bE7@kkYsb!?iN<7$Eb7?p;J+g{)( zHl(bGJWM^^KT|b`kR(_;T@o#l?&tUyT1r7c7Ay=i=|2#Mh}O4}j$K_hH4^obN{7dw zL0jZ`Ya~O4FShE02jJ5DY?1;jH7sk1cQkA@o_c9fPcW-JGQ4zF+HV-uaDLBY?fO3)F{0@Il32NOvx-h$V?hU+Wh(3 zg_doX1v%PM?M}AL=_dU~>W0#>EvY+0AUx5f|+P2i&Ta0d)%NeT-E*`K@VHY+I`}gm4jZy`>0b>y5H;lI2G=zH9QO-3_F%;XlDf(&({vm^d4Aewa zK<-ZWlpd#-lXWV_psqA~)_`cMj$^Vn3avM0AwF9#-Y7oOJ8TOsqeFJ<&QRA&qTt&T zhXEM^u_>0;A7}7JYJ?7$rEpf9!V!>6kWz7zqa?oiQF@)>-)?A``oulk%^}ThNOPkd z@t|H5=TOzf(k19#)qE}Ph2HYR5%Ieq7U@A2^rU;pX0NSfYuDsq%mg^ya7ec@g9nsn z#t2-^B**3gs0}kSO4KkQt9kkUsJLJS%IkjK( zrewgh0D&E6P+W6Q2HI26)-T$fi1o1WL$+L?^xRxv4LV&(xtGCSs0}b z12YenV{oT12Svmy_9SlOlit>vqO{h!rz+X}$)$q;CY{Wb)c=spdd7r0jM9V@f-q0A z0UIx1hUF94wE$R!@mtBlM02hhM(+FFwJNx!$6- zZwpbisUI&NBI7u#%tYX>EN_5Zl>EYfjd%1SS+s`M9(qt4;M5)#)IBaHI_|?RvxO7B zB;v48BHJ$%rBBl(=pG^*91vGB?a{@-uwpP)vMI`YL%2XBqx1EkKYDCSQ zb9xH)&+e4*{8G?k$<4%=a zChIU|Eay)`5lF`>1ra1$Zha3S$UrA;KVr>SP4jp?6mT3Cm7o+Qp&k5w|r> zG3JbRp%wL4V{Bn<`>nWFxv{l0!jZCA7OS=qs4WOXe(fO&QeIX?gv8_6bUQgEx1L&B zWWnzybKx1|?^f;~WRC^!%9MUuiPRy(k(6Bw-hXXax>1RAeF(HTRsNOs41S0+uLl|?f2Q8!GHkw(lHVx^0)i&d7tCf2Lof4WcG{4 zo=(D|F0CsjMMOVW12xKl+L2ZJTG@}OI!w+VZANGsla|6&o1V|q)S=Ab%Fr_6ubgAe zedBxvLIY_C9dFpu+N_T1UCH(?DyOp*G|gI$9?GR=qq;DOZu1IMx#earovV+Pz9BF& z%+~7FUr&7%`bup`LUNXSQqj*KgGz>WGR1Zq$WLdh1t|E~U=1S%IUX0_)3{C3!17Pz zBn+9&5+$aEv~-M1FIcKn!o2VTZh!PZ8gI5@ROt83-EaBUMz`R6JapKsbh>oQ zoU>#JjULd@r0Z~o%a0E~Bx_6t|JZqzJmy#JP-jq$LYHl5x%X0Q%+$O)m@u;h`W6It{Ik#hNLFe&Yk8kkHuOc7jOuf&dY*n%3cr$T8H1j z8%4(0i~s0~qR3wK5t&fY$9W}I2(&@r)NfAK`gqvZJX6#8k81BZL%r+pJr+ETlQK?2 z8v(T&Z9tw}Jh=z(NwVToFV=45H0xM;GOk_Dc1t3kL*^3# z9$08#g%F>$Ad6C^h?g>Pr(J2ATJxJkvAjF}X1Wl8Z9^Zrd>mlQK=x%wBr8Hu19?<${PqeiG13w*f^bLv;G?toFOs z$pYb|v}`Kq^&(rq*f1mK!IE0c6M#8eIe&A=;L=zYv@R0@@XVq7`m&KmDs7GZ&D^lu z9)_A`UuKeb$jo&`cuQdlLT~~_BI<5P4Z@I z<%SR1iAcmh3woax7Tq&ZVMC{hYiM*<2Q%Z&N@x=I2>!c~(z6-TbWX$80D(d^kD_V> z*|rv&#bwKyuOVD9sJg}o@{4<=pEV33iwcuqB31qX89$j}!o(&iBS~h9YrLrZ^BzU2 zkuKT%Qr!-*L{bdF9AJJ2MiPbTV16~X37m(}jI$G%hL<~Nq>}2d?GGrWlon3~Sz*KF zrC^#!X7oQn%ZaU!x$f=LV&*Al?0DzX4&ACK$ft~|g~0G&=<(Y}a>{5Li7Qr4RHA-HnC?`ZalEkb<`oqxbO~Z5hMWZKb)2nwsRKMPM4>9X z$WQ9;E|>_9WUSidG~(hg%vHClOXF=LYVi>FxqmM754|_Va}cY*+MTbIy|RD;6qYb7 z+&8|&>acl$pr80driOyR5`{=H46)I=HshJ*?T-lUC@MKKJG?aWdotehXQkqtaT9RfVOCtSVE-*RK>N+jMVFD0kxo>`C5yiwKB{nl@|NB<)}W7`Rb;r4YGN-PZy9I z$>^)}eZTA}^xeq+lzOys^7Vbpd+Z)lLbLbb2DgaO5LG})I(O;#8B1o#@!@g>tyGNE z?>;RVejqOD)+mh0asmqI*JudzLWLbf_IVc9#4{f?PNO+7Nh-CWZJuq2rcX$(N*bf@ zsy~9MGW_cz$_sGVU~3m4;&wP3da6sR7Bd+B;a7}}N0J^F2;zYjohl7X=@)9sVdQEw zSis*e$#RLKS)h{613uN%_SQl+A44O+ArYf$ zw1MNjaviW=RZG~5?3)7OY3tAo^zIq*&g_v1%<4nR(wbBK8x$SZd4)9kC z6KO+?SPIKyJ|Gu%HlN$+xT_bG-R>|IH*rKuN#dkjRPkwkR?{mZ*)t~dzO>ABq}7&> z1&R(0JcvAYT0PE12o?CMej2X&-alOBt|y%KnROjOYQ1(Ey!JkNIQgG#bc%Wpk$Kkr zyg%#wck%hz`5`#qP190Sb`pmc>8*4)F0)Io06Bq&Kx zXl9E=mp1M1C4^X&WS-PBWrD#Emr=RP6xfqQt(4W49&V2_l~~-~E6xCnho~iL!i=@k z;bD>cmBiF|E1X^5w*Ex-&wV1Sf{+~1%p7N&)SOV{@GyYqJN_AZmu@#!q}bL<%>KEp z3HCD(b7sYl)jsG!r^=obpy*sY%Thom^^7=v=xm44LJoHo%&_;DmTRyy`1y6Cn&;jN z&qJd0o~WzJDc~05`R-*RdM7E`-gPOn+2uPPN;U_)q`F-2p96wd&JJqZnWN8?zNfa~ z(&y7P!3UQg-4ol#O#n~8HV8D^!XQ}UH%gTeOhwx`) z%M*SSL?g+;8^OWTF^SSx?4BGVDvF{fC+o^^o&w5}3ddWkxp^~waS7HHZsuZ4(;Wug zaVD4XF#+_bL+tNfB5s0F{37$6LE-Fy2G-FN4hxnMeyfI)&?Pc|4~cp!L&Fb$Oy;n# zljSjadVVHScPh!~c7<2XQYMyS_RH-htF#PQ)*L*gJscml8FQ__&DKE_*M_c+es0Nb z{$D%cZpC%ZJyL9o=tY@Y!jTn|h{>gmrH^eRZWdvdA{&48KF^30_&yDhE(%wF#$V9+ zZ5DUR2)&5|FPywKnB(2x`u0dJ&y8L?|6LkgPilLyy{s9Z2Atv45e5>Zzmc^7j;4_7 zM9+T$hNMglHd~6=J9n>UcooG0j4XzQCNLt4IC6y55xu|rPA2@{n>)HSUHE}zLOBI? z^L)BlVH}&^MlGFV?W`j`xMCaaEa$0GX}+SLZUhOKnr57xM)qmrrepoCsbVY8KPh*g zQ$nG@U_8;xs{IW}eZp{b-$#&_fK`bYCH6#`>|)mGw>!|^djIjt#6~}oY&}Y&&$`k%Rq`{vbex4ujemw z&HKY{BY-r~USYsBJlx9o1}Z(d1yKyCkgarKP<2Ajx;i9VA{{xe>ycwcCGlCf{eq zn9ieiu+r8Vf&_0^C`XaAQO{{u+l~3LZCIXKCNcO&a3&`n4nS!D1CyFUl}qRJ?c@zi z(frxR*r5!n5FgT1@T%}XY74RNI0uw)+*Axn&=<#mcf!(lC;pFdkhl9NTiFMIiXM#JNJ!IRB_*y`&{XKNK)N7^=*H z%OS89ImW>(oYU5fs7_AU+8>EC5!+5hjdz^)m_6hu7{OxSt9^5ru`%-p-mpLjBKa1Z zVc|fQ$qa2PO3%mkoB0Q4RV+IIJi0+JIU##A9svxdnb|=^nnGa(i}V4%^fDFuyMypU z0d0ErMLfv@)9)9q30?ncURTG28edaYKAx^`0nZc%vs&c4NOoRFHNLuR8X%>BwMGsGd>5Wo+H8`vlI8wv-qRPalR zAoKD4+8HJ|v{jkV%hdwY?4S>H@!j;nGxrt>NNkh{$XGrJoFr_GF^}81fsZj;PL?)A`w4lPBd%r{1?Tpo-9A7|<>Mvj|l8`C{llH4XizJ$)^e zgf9hv>~Yhi$SdbVD}K&DsQNCOdBiJR&fQd^uooMy#Ll`ROZ;_hoo)%xibyb&#^tH! z6;yKj^Kg!Vwxy%eGd{zu-J>&|wL+GtDuZQ}?Pe zBdKmyjZGy3-3r{z#rpFrDhn#bl6k@>aceiC@F3g-*UM2NPiuL6{0X4LU$;lZaPeP5_%oNY`tzhde#M8Tzd4~%o|?@W-YOK_T6^X zT?G2xzHK5UIDHhVQv)hzSHi4Sh=+x|jbu1~D5IlhkzOPZclolFNLC(mAnM%I^HXzn zq{JYiXcDz?tQyI?OHzV!sNPOJP5py@qe{-eCa5zwx*iYaDO8|weH=>Lx?RGbL+-LQ zdeG571AgSkBs7dUgsk%SNq7Evq915mX+M2B0enP}Fs9G&f4Hx2;-mgq+lb^?iHG=+ z+nbJv@=}c|=!D&QT4yj}xSDRPt7Dv&cmsym(g}NgUujgHazN^&kJrEmzbjyyLsdgv zUcdh5odZxI;JO5u@bRP)C%P;20mZcAk~0VusX=QJb|tZd+BHR;u5t-!uz71Ga2g~7 z9_3lPN9zbRukPKN1<-=eWsM}h6ZY_v_lCI~QGY)2G3rDY)6iw4?~qm~oKF@-8a!AF zlrUu8r6H0XS}hHX9XI%?w#L?g4clNAC9)&I&HxLAu(13|_b^TSB+siqi&G0U(`L|f z5W`!ry4(D5vjjbUUX#fDjUMB@-j+0!_P^(BCYdxR zAc*Wf*i3T!r@QHuk)6A{=Y>KNKog@U%!=-#x(ef|@ODuRG^mO2zU1miNa6mzWWbC{ z0LjMIqr?!<4gNK6hQO^){OBTGd|WRYCBUr z%JO?>oF1HD?%I=M0uBPLygD+xgWoRCOP|xNpXrRP_>HF&mB=q!pv9mQHH0fxudJLz zcZWbr@9$#)_K#124}G3w*E^4=XzfHurO`GVEr^?|pHNl*F44OGeHe<)y`Rs1x_(;u zd|JLVSXwgCzoIfpHf!V~uq5s@DXv)X;bjMId9y7vK@x^Sy0DUxiF^qC;rw%rVDBmu zLM2CLHuzU4^lLcFNJG&xv?WUEEgd8LUS|BX{dz%*gvOjT;WP$cujT~mY(@5VcvGno z4kAwSSHqx=*G1jWf~w6jP7?2icvQhBjsFq|Fir-yq~n`92OV#P?Kuey@h%QCv$94( zOdsnQ3Dje1nd$rPA!vce&|PKz7b#t1e$!MheVE6V%D=OYxP!fV&Vaz#zWoy5<46BO zSH|Z<)#_(0{AHOrdz3#lhAYFQyJ5In{SdtH-M1HNvBpU1b`W}g;5f;XWnQ9Vluj&@ z=z7H_wQ0zL#;}>RUbtYngR^40Gph(+!Yo0o%C}`9rc0VAybc83+_|O&6LM38X7vG% ztP9&}uQ^SSTo$V*jq+yT6+=aOnf$WxW9$kwc!H7!)Yj&o4{q=@_Hv%Zmn6E<5j3i zD4YD-Zax+x-CPJOJU<2!Lu!R+y@{5Rq&`Hh@HotOK3hegbLUtiOml+AUf}l@c!>!y zS#&x}Se@`cEow}GRSuWovD*LT1=7nDJQNAe%fU4yEK*|6J;0R*bzuduGo%E0!6X1W z7P%t{t$hvNo$N7F=0UXREfrLV_Dr7wjO7V_ybBcm8~Dt|b{23I@tOa@%kx=DAUo=4 z>zeGVKFXt3dXegqOzT^{C+I>3f=EIUu#VnCbHm=Fo-M`lnx>Eimtj6X1F46VhfLy3 zD=cHAk0)(?K7uTq74ZXD9iav-p6$P|%2?}b*@cyV5iWJP8h|w=(yEqF+9+Vc37(PT zwEF|F%jmll*Y41@5V%+)&AHrOP-js|tM02MsFO|PhJm`I%TW+HM@{A<)7h39YBZv2 z?B_Q#R5|C`JQ5*W7k-X1UiAlwzQ%%}*AwWE3}RyjQAOw9-ts>>KwZ5@5uGcaTSTK< zT%PJyT2cNC7_JCf*00QEO_pe$2G1YR%Ip*5;;ir;12%uSNe4$@C_aY|Wd#rWNlRJt z%AL&#sWfvEq>rQ1cSh2GP9I?>q#x}}bJ|Y-Og_&Mt&&;e`SL9rj?4(X)dme|Uxx@^ zzAz__;YEb8rSYFQo^Mq+yrGSev;P=8sb9!{Ti+m?6p<@7rLa_s6X!ht5luIlU5Gh5$OkrP*?5&`IVjt_szw#<*VpPI;$3wx zMvLF9dBUW48)*UvkArDL6Y7k8zAMQlIh&uqv9QMB2TKLnkWn_PIsZi_n#OD4u1<6b zVfkG;8zpjE!c-0Z5ZU{>vg!JE+otj|Kj!t=cNsAx^ktQHTY392;4==$8#vW>Y4lW- z(L7Wun5lFgyBGJ_pYrp6FK~SuH^LXybTV>Cb3c!>gD=_OZH_xZ?3Hcl9XEylo46}; z_d1JNHfn4r_)7K&c}+Us-^Ikg8DiTII!N`8S?$gGxFlKAUTAWM6-X6=i z|GT?axe$3tLUU1_vB#p%@2`71t@HTza@kw=>eTm>*5wGctnafh{AKgKsCG{ELsQ67%|F5$BtX%r?!mdg=f=o^ImXK{H;q+iJmn)aLDk!2YG#mmC44YsnI=> z0okzO0t%f+&yUH#v)&J)z8c@Xz|UgE(eYkPm)CtP6qwhE z2;+^2H9d*H;5}^{L(RaiuY^xw_c`|fOr&RX>zdJHTz;SCz~dw4@(EVlcCO6+ajnZd zhdmZTAYw&~bkyaEh;uH>fzcMS{jK4-xT_JFL1+QWc4N%&4cM9DH{L zFN=+^&p7(ekS>@Y82-@)#jLMx zQq@=ot!}n<^&?8maz`*tcbDG^clRqwh^nk=0_*BPt$&21&@Nc;mS6u}4t3Q%-2`s= zkBWZmgDiQw)^;899iXz6w_nbjjsp%y*iL$zJ};)(0!OMin=xNyDff|r>P28>I^SN` zb|guDQZChtEl;2W_&$R0cA2xVkQK*FvHB$)oegsFr6&=_Uddz%5vA|YBlsE_crhpRsh@<FP z_^Gnz>QRX*@scjT>k6CFAK?i&w0{JRLdeIO-99vAMHHH$Il)=Q7HAPQEF*9#nDKSw z)fxZHBbf5VkLJ%V-<=^!;qTV2N4&1D5jLHI)V;_|o-A(Bt1njWO?s z?k1COj3f?^YPQ&lp%?HTnD8h%`d0T*cX__`M&|@8oxJJ=HWSB>*p)Rl1OECan z2kG#^v8$7?C#D0neq!-;LDy|r&nqqjY@&9aFtk|bVp)y+yAAFsH!08AfH#LR#eqlQ z{=y6CoQwG_z_fr3@Ot+U86jH!`uOkV9wiBn+m7!uD4^W)PVbi^W(s|1HuYHYJLfdM09Kp`{;XjhO-XklPY1BYAO%P6KS)uXk86&u9)Dt zWr9~(sAJzX6X-o!V-32i8z8?>OD$+<40cLN-C}^?fmwEoz`_C31(6LBXPKZx(e$C{2~VcPo; z<8XH-vX1Kao{PGT@-#<=&Nd-baY|gQjXE`E!r{-S06AgzuS-X78#cdWZj2&Kd3=eH zE`kZ>RHMC3Xp@(41(o{kSw>gop4=_g#UI`4fXZpwKQkF8)(cCKWo1|tvS90>6FDy^ z?9^{=8sqa2d&z>>>o@#b1%cNOz}b&GuFhBgeSfhyI6Ex92N?t zT2YoubF54q^TSLN^L9jRl%$0y2TWp+L8)hKSzVFLKgwUTSLH@IfGjLA-i~R8g?AdS`lehUESoi8*FgM(T{)7!E!v%>6bn{0M=-K#adI z0zeWnj4bYU6AGe1b?r_pjI)d<44%uedZ*}#Bfwa>!jy17c3FtKxW*4O`6h^xxE19e zA9@e4pHcUPs??8R)V-L1c_AWo?-}r!D!?3Q;50OG+IfOuRO(G;7LBOSoEx&Ly$xX` zukKEtft^&?;KK5wgD}lXtFwA9`tL*s{<~JP2!vs4S_j8n&JnzmP$zsnVZ0!`r#lO| zPxY!de1R2GFY*O^kh~FYAhT=KL6Cv3HIl%|V;%n9%KxW7S%%-pzBJyP@QWE=iH@9r5e3G1-5MR9Oqu}{1p3ssc^^a%` zjiQ|*ta9#m`NqE--e{k_2NzX5e}dA?bFY&~grIs=?B_;$+3?%?fDWBxfy!vpoUBz!`NQJKoiE#%^-)s56^=3|GqUefcaZi{1Sf76^Ikc)csq+;n<@_ zH1fn@JA8I}o|{~J%nZUIy>)qPLw#1x0DdtfwKHFb+jKA=?T#ndnOG5t%dj9$Zz>Ke zJFH$gxiz36V)TXa7XRUA$Zch1f>z#?p1|XBc1J2&XA}}v;c6J8Y}EI!f!8pMhGFuJ zCmd@<)oFj`575nk~au|Q>QE$iU;qvRWJR!axtHMhc-s!M2zX7xCq zPni)YyZF35H|wIWMyk(1?qh=PeOE}eNDbcO7%+H2w3>{;bla=tWj=Lv&^|4a|nhk__uO{U_+A)d|z9Kg#m%(nmmw)X0Ev>h(1(* z7L%UDoyF9>0K$A?CWw{c!mSBWqmwYryn$nD{JkxZ*+YF%8a##fg(p{uh<88DJnmyF z+<&Dw_us40<9WcjOmEk_USz3-H$%Q)bq4rh_aDS*b;L_#S`SwMPC ze$*iZgu|0*rikDY+6$I|=|u>sVgSaZl`GUEwVq~o%WWjA5{*~l@%g`sJaxK(yc z6?L|LDQ52{EK^iC+4B{=2bRMx}q+E z9{8b5xo2pYrjpiU)Zlp)R@`(2R?aDu`)Q{^veOe3kzkWI*5bcNuSsqwe^E*Z+%4*3 zOb17GDEAknYos8i1_5ym-+10O)$N9Oc#6}Fa(J*r(0{r9wGaRT5 zKG+vOYiX&6n8SYHz~`tqM#5>5lVZUT=TU1F+mxQV2) z`+bzRn?#Ocy7GOl+0wt3d9Nxtl<|+0JirWsmpZpx3Gx&MDT?9mkq#rK}FcRP&!Ms`y(=A<~0$N9DL zH$&@|ygS2a;k-z0k!{?~BQUOW8p{KHYW~%&3sIw;5{KID$V#DEi*+o(dxVgm(WH2- zXhps;x(0%T4}A>97QZ*;RbBKt6ud+h0u1=^mED>V+p&((s*E3S{>_o>2zG6Ho~ARd zRR{;~6BcmD;v3JsU757Af8X5wA|ecxZNb72F=`fAq8c*Guj+enx7Z*wd&yj5!=hK* zL`cEuC^62b&l==0Nze5-M_+aBt!tNmx98DpC)IEr+_wDy57Y@xVz3ybVxFnt4bH6_ z|KnQXR%9`+$#B%_6aBSQV_Uiys86FC#zUDVvl(N;_;xHK-0eHy7Es^ya+=L{^{@uM znJzK2{|oQts{a7)O4doznag)`M!wC4Hu&`ZRw)b-m(rMNj zDOYJP>gAM%B=bN0j!o90%PO|`ct-X{YHWsK#4*jW+31{qTA@tVLR62I->gZ>0B*)P z$`zo{#nS|~J>1QQf-^k0=_+zq6Nkhb#B*;c&s4_zvDAr-N#7OQlLN9Ik?Mum_b*hN zD6krxm^U0`@AaS#(FgwvJQWAeFGSb;D%(*iAM5|?j2m%r(7Gfck3lH*1nQ#9i5?;E z5gm6X?Q?*38VQjs^K2Uy2CJy1F#}1nSXhxjHBpwRQR^ZsGo>*(tdnS@`OKytzHYmt z+>N8`6vAc-jy;SCQvi{Zv5W0R#*M>*u3dpzS>cwoeAynR+VSYcVl=ufJt5b-yup{< zo}7=2&MyKG4B|T8{6e$;{D(uk@Pt1jHoRPWI+`uAAq0XSjlB#XM^xTUL2I)EHQxQMUY}F(+9IQ6!A1x$z{{uL{gfZn<5617zeESU?<;_`*iY-ywaDO zm(|E#vyR6`ntD2dMo2BhFKFoYuxhD7Z*vNKMGv2w1OvjJg(nC);SIwG7*)p&dB2Uq zAl1r>%S($#1WmF`MoMx+;c?tI0W(zF6D78#(?XlcQ9u`aA`h3Iq7Si`j)Amzc{I(1SW0q3LHpmxAOx;_yu1Z(12IC{_(TT50gM?l*Vrk1 zae}Hq`?cb{^t_bsxdy_hA(q5!G9r=OdN_FFzTt>$}vL$t5hN7+3S81!_4qm#`~c&=wlpBs~*j>Ew?S1)pE_5 zX_qY&Tm0oeX8fa=H0ilkje|AbPDwC_14}}QV}~P2QbbXJ0A$M#+D=D5uuMJ4`NME) zCVKK0$Q5`j*s1^Tg%ExLe6=1AWE`TFG!`gJP~R0Qe4Lq!@VlobyMHG$W5 z*ME`Xmx?zdISq|Ha;~-7IxQY|^Iv9xl4O3LI$ksX!244Hd+@)f8g0+ds|C@v*Nr}Z z6$+yNLT!kAYTYRr6r*FyHA9QE$)RXQ96cbs4%M8Ul~rVA6H7PWk^L^p5;L0fdkdU+ zY9m1lcH+?Nod#>7=JdEmTn9kdKHqhos}37{)qSLsV8cSW>kP`exYx`bD=V+ z`{Xzj_1)OeriXYHfxtjcY)j08g5pp+5%R5--$Q9oVy_*MC9C`yApPV2(e;kel|MnZ z@Wgg9v2EM7Ik9cqo+Kx>HE}YrJuxP>ZCm%u|9S3OcfD)9-_H5=+g;VwRl9aqJ9~jN zunm#y_^xVcCB|~YG;j}NNwxc@jY_-AVKT39SXLvO@$-_6@VROte3dpoOrlPg(gyVJu+}Uky_?`8<>4yz4aFQII1(`TYEkfDB zAV-$uWuN$V(3d!c(}MgYEI%ZpNSkElGGY2yNxv`(T3O!xo#!$UA}2d-m4r7w;3*4N z4ANdtW&J<}FEy7~8KsoNQSK$smpI(6|MW}UZYq0KnA1WVGfIB_J?d{8prZ5Pc7or+ z`@6w%p}ZK_C`y_cIdxK>qSyMc$Mn16)~24{!(>wHcU#~qw9Dq8R{>vc8(*K#l*WUn9kj7LRl!_EEv}knF9oj?b$2_y$lD~u{g}nJU}=uy(v2Y+(yG> zokpA61;;1@tz39;q$I#QX^C`RD5&8C83!sTCoT1|nKB#FjUkuh8#dxyJe*}F-<9pM z)wK0Thx96%ZlKM*b@Zei-sZU~&s7YmP`%wRc&Obc*;{~mpYy9Lg1fQ^N+0 z2G{?{Tyg_^hJKacb`NAdRWJFSu1Sb*lK#!el^KCZ^AUaV8n8nA7w%-J(xrcNl6w4wCNdu8g~%}c+Tq%ZFY9)49`m#=c5 zxnC>Y58*%L+rIoV*j1}#XlucX4x;as;ISo6>Jvf-IeH8&@YlncbJ5k0z*x>dj|fXKlPl&-dz{Lcgu2#90y@ zsbUdmGk}Vkno6`1$_r^SJBfHQ{YB;XRn8LB*Ocn>PnW5#qlpP_R+n6E58%(ur_Q{s z+P4Y5t)n+Om(7ePrz`#=*5{Wr1MVSJ1s;M5HE#5=6na_vYz>WBK1T{K{<67z?g@kE zQlf~~JlNp)64hJ3X!e3wV`PD9%-;R#BB%-Y0}e7C9CX}@lIU{j$-Rl+9T4^6waTT4z6>kFI-4$h_3wHm<%@*z&ydRnN<+wL8V<+d zU-$GZ_N`s{LNj)9rHup(gg@XK4Nv9N8SPPMH5@A5@-Nsa>FU~cG+!T#UxD~s{Mh`2 z%8bT%4EB3m!Hwg8h30z7p4*vMRiJ9ct@vm(CTHs|!1sN8NlUyP{&0;Cy-?V5m+{wu ztCv25VDg$f1z{C!Ly!(enwX5Xfi7Vhf-yOXoMCSV@z41dS{p-83R|$6WDYY~Z$+8p z7UH`FQ%I}jPMhRaWTW2i$eO%?D%O$=(P!&vC%-g!-xRzNDgVa)1Jf3f!q3|2Ke%M% z#QG?49*lanTShO@IGENc%pjB)OzJ^yXB@q_4qZqt27dUP-bY~1mk}5flwQa7lH>r3 zQEsPwl!!hAd0deV?X*5-NlgS#$%z5%y`5|?xB{cSEHIK}4ccCYH0!}|@&3D~L}7QU zu5T0$+Wdy*R4piwX$(}NL}54SjRkLsZ0+{cA~2_?;e|0x$^w_)R;VrAX-!IJnrKM5 zkNdyVcbGxrngy+4>#NQ!M4#foti}}G+7t>1|IWGwUN=Jo1@e@QlEr%pEo>oB-X0-^ zg(}!79Lx$d`8q-Bm5V~P0$?L9#zzB(^g1KV49gqm)I5sh0L}zE92H$%a45VwL09`N z)EWmBLK^joZRV-koj82n0+$va!~5mY$lekR(PeYA;I%pt&NdAiP|VxX6cAS9=pojf zL6!(!>sz*P$9W^2;)7^;XyL)Tt1nnWrOM3 zg}3X=W?Pp#*$oOI_Ij&Ale870PRa=pL;>Mh93Nmu8kJC6{!d^mmR1Y#kIMayxT&o( zaP?;QF~_E8c@mn)*=WTdnQZO4+$>n&>O5elTIoYCoc!M*#%^N+COFzPAX1=m{G*cK zBznxTb+GgYV)ky3P0uo~?T1!w&!jQg?}wsU#we(uKu+7{MQLRtidQ>~A+Q9!iFAEu zxMkYKGSqt2AgUzy-nY`FnW8(v}@sF9>K=_ zyr&hsnvPiVi5X?Ga{XY35kynFxSnWhidl2;u&*S(%iW;KaB$7(gg3&r+W)_^061k= z=zk`O!T7LunwM5;LN5vR*JaCp42Sr&3;%kg4}CRdDGxk>eZQOT zarFB+Rd@X0F-NFeD*tOM&9tTIS9zQa9ashitu6A|!t2ytwOyugEiZ5XW(rL`nHQUL?`&+H8l^v#pluAOaJ_poY`stP z1Y90uSu;poO$MP;*X9)XLB3CTF}&zAlp4ZN?7`A~xN^ImuR;kJe5yx}Zz!!a&z%iH z+`#_lNBuxM7=?7|0|XzXJpFf}x!&tUeu-!{sTB35o(r0l{i$GD-C1njJWpK)U~ds8t5X)`v{zc zX~3#pzd=8(A^&&F*BH(1%{Ri3EzRn~${qWf&E}-AHX?VHjlo+Uf78Cvn1I=X8*l!D z;yuIbBERkI21OU<7m^7-H*^3PD!jkULY+92V$X6!VFp3Amu~w@#6K56UqriVr4osX1+Pt#r;FOt>;3Q_3wW_T1+NU zbyb3tFqRc^oqVo7Lbl6)4gV6XperEGs%kmePe{~T&OLN{A2B9o{gh7A-}e~lean|0 zFJ+)049(&75U%wh3?Gh&Rf(u%kX+SJW@7IMUtEdZr`XBlVI3keYvq<4{f!Hk zu-1WOa%B4MzHi zJT>ZjRX*8(jd43iSltkWi`+g{LbA@l6vCWQjnD7_iaJtAhN@(501`j6NvdHYY-mOA zVzo|z!&d>5>oZp!L6~U3en-Xij7Uwv;M6}aVIKKj2I;s9)TkiP(#a8yn;dGEFp{bkJpQrx5gA%dd@MeRo_dmE$ zE|GB1#*-WPzR9G}K%fmFhHGnTa3)CiC#VT&2cZ;E2mw0YWO-;_E@^Dst1b8lT@B6F z48mZ2`iY_NzXjB8eXAT9F7Qb3VEx+Y#9pj=nTwS?7Ir%H%+fofP$!LeXvu3kOFRr> z@*Bdl+^E5|CI0%G|EiqaZ$eR33{}KBXcxGH!{dM#!zgiI1TNzv!<5J2J`F)E#wAVn z;w2!dKRhhu)`&(ICn-zoeQv~o$*E~v5-#zW(l>Hjbpn#V|Q;8THVwB3Xbhi_d{f*Rx zuEMM}+qF29nRnTA#;hNoh5!UYrUkxc{XZUB)IXn-j}W&mwe!5O*x!{~w>ul&`IvKl z!m&qUwWFW9_wZtW9m+ zqT5<{2mu=~c1V^Z@?)t}kit1R@GT;yypqwvs~ELz6GG>9)wImn^K(OeaUPY7Z$@)_ z?J6Lcm9cC%fKszPBO2o<$AxFzR~4-_+V|FQntwb3)_VnWt2cC%bvwgJ)o8CYz!Pz; zdb!1|umOiQ6*G?z0hk8%xeR*VA82lgJkZvJJ?!IO%_C)@5ORHDrMg_l)T7vg!Cxjh z@|9D~YK29)=C#=Ehu7pFlVp<-dmWC(PbrNW2uq}W&%lOc$UU&`%ePBl-GRhYso60! z6^i$)The0TP@uX=l1qz$HEmBj(WJh@)uTN)Pm}NY`@5kxuZ|n0OKFj<77&RCarKE} zaymBtgMcmQQg2P@Di{AmjD#G6NjHdIr&*-SX04a^ik^I80&y(TKaINN;rHuL1}-?B zmL3>}S|{Mku+HY}FI;zfqQkxWM;3jAl}jq$*Q)85x>vfoM;ET=(U62sc8#qGT~00q z0KNIck}S$&&g8V@n#_->k&xc!j<|-7Nj5XPttueJzhTi%^c~hl5cGI~K79hn>7`1P zDPLasV&VCn4#_IBxSmSRv(@MzVs>%2Yfe^*vi)0i2=*^lMDjYHSkx+7)5@z*bBjTBA*!wx zIczo%%qR7GCs;eENLjv-T#_uAK^%L^x>(M&Q=jXVlhkssdGA#}8TID>GTJ$FP?g}N z_+jYV@V1}d{kKBg#2VLS^cC9WqB5&b=gN0PjAopD%p9`?B-6pUx-rTj%;x}zY&2F+ z2Z$^qI^qX{0AGeY57O`y*j~i@2y;O#XqUqnr%~2V3u@LBEHY9RKZ-=Bez{<2+q)Xj z+YiQBwaB$#E7u&6gRstv& ze+)LaYk+;u@VeyRe!e-EIuX!)?b>kNy=w;}lm8?Z8Y?9uPwFeVYlU25#=NkPQ@EG8 zMopS;RFQ@z_tr^Tgdy&i79Y$s!C}l_J<~!eWH@I&$Et81W#s9 zgjK=v1(5=S*jm?FAcl~g=-vaLyJ0Zwo}=#kEZb#Q#eU@GRYWTmRE= zK2kE@IPBbSw%2>}yaDZ(sD<+Y#pQ3w#5*bs=hGg}4NrP_{Mod12g&=a!%_m=KJT=T z`pV4SwJU$J$k7HYP_e(s#iqjMHTtzNM%D_p;O6DjLH$t^z_426WUzM|SA(WxsKB8V z4=|KbVNG%|zhEGEfl zQ+97;Bgy5iYe`zwLbxN2-{?r;5W6Rll^Wxb;q69uT)-Crk@pUz<2yZ>E8HmN>~G{m&%kQ6{N^SER`lq zg-WjuY7e`eX^}D`xxY+UTZIUNh7iHJpNn|R26XHnz8?>c>*@?8UA5u_F;ID$z}mnE#FJ4A z1BjmY+pNElTau%Z?^lMm@avcqND+H+{3@17vC?N7>pqvb-xLuEWj9v(Zc%t;ESmS| z>9-U7`EyP>J-fQaq0(=5b%m=GG(b~^k}s8Wb10T%0?%V64o4!XbLb>7k6{Ih%ROA_ zcat&O7@>@y3W8B6O0>oD+45y*R>-2iz=^=-VU454xC#apS#k_8m>OEzxGjKML?EzY z__Mvmwr%i@Ip%Q)s${pHAIye)LU_c8B~CNgl#RYnNn^+*9*p5TfTu7UT>X;&faPlj zAqjrsS?juyGACZ8R}H;Nrcn}{fpKzF*B()UHaAnokzQjjt#t~Kb&Wn z>@=z>H?=A~J=Y2gt4OJ9V=7?kSk!Nrk=h}Oc_8){gjzP!zxw?`S#g$NeSyvh^wD%e`3Jo28h3QI2kskbuV*08A){+coRdjKGS(!D`|xG#Mbv9_f0!*t zv6Krf!)gK0+MC9^nEb-;>9>*IvD`-Yp%X0d0+TZ|z2!MUqY_KIt}l2{>$GTaq|V4bLMdvuMXk;1FvT)7QP0cVWT-GE84LAJ zB267)xN|^%Omm9DE*#e{vJnSt#J0(?5@J=T9|jG^5=)*1QHv5+{Wx#&-vil&xse)N zFixJhjUY`f7)##3*UuGzof5b+6}yHhR-!T7@TEE)-j7Y*^nDYx^xUAYGaGMi)M@%+ zF>{X~?9l}U9^okH<{A%A>zv5p@c5H&YV*!LACEx?gwqlHk5t2Jz~ddl>Ug?Z1F6~0 zWpNC*%KM_zaz;y;1$XK`hs4EPp}B!MUMRtli7iHo?gd5iph7oDl^3jq8KXZm$-f7F z;=l#(S%1!OXb8&aR;3>ck2d`1PP?LO%@TZYyn+CiQmsR_k-1vv@C_?1ow)rRSb;+d zcQB`wv;`G-XTVW0$Z=}}^6&5bx{P}+aFLV%N=VhM+A%2H0*;|HYL(w(M|c&UxI#y5 zg47Ioy(}&p%nSx91Q&ZN)NQssZojVlwLk>lpIL2}TVXgHHc`{d7miaY5mp068d54X z_~8+&ItkUtrZoi$PXl(OSOgA_D}wM44WCDjwre)QR75=nTp^$iyWOvxS?@0wR`7?# zpC4KTM@&4e*Vy-s>s3*XSOccSxH#beV!OMej(f^iTp8$^L!Q)c9cyQdxSKG@-hqX#&T5&WYs62%-v?-)^NI0$3Ka(|O&2-RjLA zTyH$lZrAoK^{onikqm1^>d6?YR;W?e)ntJoEfXpT++cA%?C)(K7gh8pNa8^PnWemY zbMsh-bMU)E#)6cl0hD3aQ|jS?d5Z{BPB@t`5;B20J`8 z{Z9YxbJ;Sz9&Rl_Na9!Il49JGO=p_cW0o#0MZGKwE;(tb>t~%RE5l!mP^tg%A>$sa zvT@3Lb9t8Rn2~|QCVcH_nvDiLRY7$W4U1fsvt(2~^nSfq*GQs_=KKu7wXmSfbu z&epCWvAK~BoNXDj^D2&M*_;7frFynIw;bc14O}E9JR>gJL+jD>z@2(=JR{^&AfFVZ zX+Us9t~lhS0&}fibkjvnFDG1bb&CA)LYkjSb|oz11Wo zbAA;=+k-W2)_g(z8OY!fTf^892xD=C7-+N*ZWHB(8<4%j6CuyVaEA7Ffs0RsgXKQj zcrGFt!XXBx>}0YMj?l*V-J?;QJSFfP_Pxs*m?S7?qzP23Sp@PSyIed(~VbW(V!suSx}f!*U1CyV{wzQV7pP zfk`Bcl1stL>bnZL9eIYh!;2MCl(wsVRDvynrEvm30Vy&QLs8L)5Mqsk50Vh#lG!3M z0VOnHNkGEL_o+{?BrP1zlUS-KJo+}>SQl=SX~lK(n^X6QDe8}ropFy_5tta*0G&Ej zmJ&)q>|Y_ZbFF5y(P0J5X+K1nG=|t+d7-xIUQL59q1-(l0)0;>g7&RTA^~4Wm;~|GZv>?Im@Nrzjy{*^;2lnLxBTPfbRx3IiuM^>YuS$ z3Jb7bmr{hB*sxUC1npq_By*71sSd7m{%7l>dwe}wP$N&*M47^C?0-Q4Rg!`2uP$a3 zrE7+&h@~i!BFlUwuml#K_Ce0%4iC;xIK8U`)(u9j&Ntn1BzivVZ96=bIWJ9Z`f1A! zYscSaguY0`xQg&GR=**LnMIhb#j>HO=K6uwbe@x-JAjVK14Dy^-^;@jlhG}mr~eRb zU0i1t?PruF)R?D%cyqh^b2%PExj(@~_H85AB-Uj2+owv|j}~sP7MG6B6|>vZ%_jQw z0EZSVvp_hrp`R`V>K*oFS!plW1Hcc+nYcm`+`H+6$4>ZrLmIcG-Uj;19dZaq?`M3g zjF;-0tCBms2vtsTA{z7Cm?d_C_;o!_@nXH46dCFei%ZiE#wb-iZ0H6Y30x%U)N|S1 zG7Ij$L6OaYO>6K?w=Rp$c1#t*(htg1-5TjKKYhwJx!*v*y>g_p%}den2ohk*H-#(E z*L7b6a+~Z~|17yu+v|R-Jd@F&9|q)@NIBD9A+d$PJK_`gF}BXNw`Mv^CK3MjI3Sr$ zwS`nady%u*ZNdmpdNeD1NZmH3nPJXXcu~uF*<)!DPEP$IJcG30T%X4_?_m+l>qm@K zuY;UGCq*UjA4CC?G~4r2M41vx#+q+#41u~UljL2Kmz85}2qxW8PXi7}AeA%bnDhJ6rHNqmjhBO1mCH5IGQWJJ(ev+222|nh zyqnLko!xdWFK>P;n$jc9^;J*Sg@=8fmphN|?FlAv9Krx^Lc#|dhN__{xRO!r?e(_b zM!}!hCDYntV*YCVJ4)BnMcl*A`beXA&W=Td^4s4tO^H74yRMe9_HyE%@kY**n#%P$ zEOTnbiA*}07qF;W+KizvlrR9(Tsc*Ql+ZZ*Vq^)*ax!D1f6=-0P>G0=g*&#g@5Txl z)tu}Xt|&=ptx)F^JgKDa^DZ=fk_4w-s;2=@f7AGsX(56*c}8RwLyRm z#IIaG2-|hbjr*8M_0YJxY~x?1YX3me{=Xn?b1ijKXrVva@&2=5WcUnAA++?7qY&Ph zu{cQr6C0sCRf32*(WVbXi(SMRBTmsfkeBkts(rTIObl?YGn6jG*8OKxC&zXqn6oF`0gYgXi* zBRY$+RuunpQg#eYC09v&CoVotbEVC9(g{2M*F*^q*z@(aq#qnkMLr|KP`ws}Qz083 zTRDA)0MAJ`JEN)fu#>HmWCnt&mBeYC?&zqT}7c8b;G48 zJ*LOD6DHGREv=hzhj2XcMliF^+R|Ov=*x6q!f}TdzPd%ssTMC~H5glSFuQer*|Q~Z z{bv?Jso6F|$|O44_jQ8%Z~MlDVOLVlD~$GJ841idZk-N`HI0h&@q&6sFnH=BoKe4Y zKWP>xFn1Cj?}BNxt}_$zS0XB+LTKSY$2Gyp?z9Bj?oD(^GE;;8zE`^FtX#8`kzBEE z1?%wnbaK&qJ1*W9U3V7@ct}z?p zvjei6FwFrs1Y9SzGn6-a?Ej8_7?yfbNehC=Xxxj%fyJZCslU}Ow9~dM6Xp;a@9(sY zwjP+i@1wWS>k>_O#i9sZJ^yUPkcYF;^QjNT@68XNl$S^TvPzS82XT}G<6<87uVIN& z<>O8z`M%Zgw|e*^7pWAY+S=V%)dyyoncteHI5B=p1Io~O^;lb(^@f>bG9qtZ68+DO zr{xdylmj_*QF3Jqw`P!3@*>|3#9O`wT{k4fcn>zw3wfC-)zye8jfTH1|`u$*OU zsWBzFZR+QpQe>k#9oR`uN(9jR$RwrgAl~v%ML@+60pM}q zfP^k!#NxX`kdlurO-=ssZTXDe+mV5z?65wQ!{=Ff6FP zyUosW5@T~-`M3dO|2}E^(7<0Bcln@b1!bVS0paYcdZN(gAw23H8iR+byf11+K6nAV4ufB)XC|01UI&XUQkL;O>k}(RR8$CGTS@8x4h5P;-%ud zWyh}I80{Dz&@PNUpNKV8bMRFj?i++g@+wK1dKoufR)?93mWNO6V>mfs2v{jPUIJvc(yj+L?Xga%lu`4#Ul7x z4E4ay?CFtLdXmvR#&Vq#8e3-#zwhgl%;l?7?c8V5r8M8hzWfz_-ZG2h66taxdG`phA;uYBYiK5;H+0;Ia?*iV*W`};>vK64l_WN&+ zlRo})xYeVIFmssUAdNaAIY1r_2a zF?G6$h*))|=Dp-?6-2$3nqD9{U~IG47-O!2qE4G$=QNu851XLE9|YaVZsZBHn7{Yd z*-CQ(LA^7)AUIk?Vamk`Z0*szk!s|Zt2>H1%F>D4>Ja}LU-QQ2 z@=dltVL)So)$B*D9P_MkQFzmKMgrImCH?U`eII-rHv5b5AVL2Op6B?LY(sZt2{m!U z(wUMe-BAp!tA1(F_(@z_*J>s%&hnUhFO9LoI@IKR+M zkiWemwOTYi{SL0xd@pk(dnxozOYu9eW}V+&ME=`BB82Y$c97vBxJlE`sc=jRgpk=1 zSvWp2)lypEskc_Y@lT~ASXz$ayRv?PZ4gri%ThLDxAf}m*|?QM6PeM-_ALMMIl6y-m?yTdD)ms_H;=Y=uJ%o~ zpl~~usp>o5xxzCXTMmu*~|Ki~XHDWziftnZrp^b@BO1K*J~Ng3KEA101OfkD1a2XRZ?2AbB1ih1$%nW5WOy!B%!G(nIXdO-AfC1ZP?SrB$b`_wsnxBX{?N4FivYYJU<$Y-W5sd2A zoK!S4!73;GK<>Wwp~mdmBtBA6zNJFqX}JgxxMU89fZZ>8bo%&xI@>&;cm0090#ZKL zuU4T3(*5!7My1m%r#lCWk@jG3|F6MzvG!*=^gCf+BSS&9HExNA(!NAyFmWI7L0cIr z_4Y*Cx+rK$7$FWtwwf^vEs-F+K$nFYqHRM`l|5S%%w1R!g|1P<8pF_B$v-TXs3~+@ zublV@bleZL+_5!HrMpQa_tt5xXF#kXm;#sK_wzA6#S*)~=zSQpdQ&7C&y+?Spd0Y^ z;#;O=#0W!@!J!;vx7IA2W3$@tL+EQAtdIoO({Lr>zchZOj97u^&V(mw|K2Fs=3Mu* ziLv9zQd4J9(Wl$wP5%zmhW+D7w0ew4-`~d_>Z})V-n@RVHFL`&+(dbt9g+f7L>9b? zUXL)X=ZSE-ws>Jyj1xibIhWyfIxVX^qq0Km4`>^+SC(k2yTeJPhgP_4hez&y zf}w5F^u>ozDa;-?4`-aRd|*|^pl4ca26@O?vG#C zRR%o?#aR^{ov#|=?knv6UaweOcQHx7$;W7QH^Mplg2f$ZOf;4vnZ?1daZ@7KZ#}UD zRc6-ovQZUMYW8928XOb9ncjKLAM;qPmXF*y89r;`VIqb-RcN6iB=(0D287M@_E)FS zuy)M2eIu{Y;Iv1nV1rW&$MhgAzqZIOUn;_-G%+>SVb7+cGi#Md~A?BAZ{bw+X)nzl(`- zD3tB+22o%{mV)XQ*|d$gD#lPuK>tWG=j`8Qndh!xMGMMJXKU;CE&vGM2^sOVCmq*; z558UXAjuJYab-KLMuFO~m=%J~nNNh(@Dqf_;&Nu>!%hC44tNZ=#>|D#)bnD_R_q4Y zb^YwnN!|Rj)#ic;WY_rrDVAdV&1pIxE+v87%Ny;hleXv?p-}~aKNX+jm7UUCg{;`$ zkSiX5~*5Q6}%xrR~{WkNPvn!!43Hp+)xrfrD)Tzqr zxEUb;vGYLkz&_5VD$cJ^)e_n^&~YG@_-)0v8<@CFkx_bS+bXk}{)>ZXz?R(|#x;9; z>d!i#!k6p%!So^ux^kD)Ma?Do*?m~raDmSWu&|rZ46z6bqMq$eR>Q^n1SL6pw&eHp z+TPQJfPU(u#h`$%4clD2QA>W7(^H-_;Rtumeyd-2fW~MGEP&)o; z@e2JhPf=14CBbSj*|(YDT(A6@+rj}f&x@HZ`t^;XE}obSS_XC-)K4M_>EB)LcXYFfGaxM6RCj(%ge)O7<$-f&IS(1H^T&D^#>WiHBE_M1} z7uF2>Z?lT+0edgx=p!IpK;i-vk%NR?!E!<#^-YeNO90r)1(p&SQZ(_guw=k;BNuU0AvTA;jJ` zYfWUwx`YZR5tA*l9VX#{8(_M$oFuFgWUD3wtQV(#`xtY8PDTUp*o~xf8tU8o6ppPh zW9WsUtBVjJB!WoF9kr$xU6chqT_Ew4A9@l7)f1(^UVZqp1EfixbNHMovji72ACFfd z+uf`n79~@Y2pcf!atYset2B2`X3%zWo&+?KSR?XV7Mi-z1P|Jbl)S$D7Vsbnn{w$p zpFoC_u1+qcEC$gf6G#!op@RcQWe1XcNL!A8VdyZWZ2#_Yr6E{2w7Y-##g?H{WD;44!7B zMv`JfO0+k2ca788E@8^N{`?Ux_@4cl8t2jX3^T{?iU53s_eM*la>%|H=Xic+?T4jllGowgw>7GN9|QwgG?L0&%A zRxtB1MhE#5%xdM{&;ZX}(ZI;`Q_7}7)1Y$7grXI&4Zyx(nkV(xllPxc zH#}RcR=T(?yFQiu77h^%Vaf1_k5dmWi**7xI;L5 zY`@ly@VM@RM5S3nr#1QOfr|7D5RA|3u?*<@(RS;hC0~atC29+NqxkD4&a0Yt7pS6o zG_4%1_FE`nC?!Yv@aFrb(`@@tJc%(@R3wT%1}9=4$AyJxCK)3TK>drhE%?tM zf+e%Abj>efpr$;Q9(-H33Fx)CDB{YaV8V!Vj~TPjUE(4%_sMb;7)(Dv)QZly?k|5% z`Sx`mmZ1P`TtXY2YyZPJozR|zXDW24e>5ANRE})1Mq8v`CNqJmFZNc_qW_n_Soa=B3MdxDEZ;i z^JkVrh(kBV2Pv{9ot3a7Re76Y&=zlk6y_nUK;Ap}pSDC=Eh+ontX0ys+)rwv;p@=< z;$df-X|l-K%C#DS&UE~6I5svVJertslG?W)LGui)I$>kKWarbkf+V{4PW#Ca10(ofA%^!TRok~U#*{4llD7%O=lhMZRnTf`6y`v>K9q8`Xc7XVmCp6)0z6*Vm)ZIt=An1-KeGPyBp z?u1eY!(#Ea>yl_j60Ke*uPUR2WTt6`P)`e>Y+4zgRQ5)GWkGvv@b+>N{uxx))Q6vr z^P=;j)Kpq0^nZt_DO-#2m3s*Qt!5_|2)Z85Ufw*4>HViUfaG^(TzAy_*e6Vp3i5vN z2M_1t9@C`Z396!JkJJ*mtPx0e5J9B`n#Lf0S$mFQIU-86C=1q}Q@pYJIs?Wlju-~p zzP9Z8AdF(K7!+HR=-vMah{5psm)1~01NhFI;SXaX+!}+vd2&eEq|oi!z?r=<3f8e> zB(4zb>XF&)%N!liEBzdn>&$d-TF1pOgl(Yq=~e-k(7^eoZNDQ|G~afGWvJ~g$C0(o zXnrAfwYP)Nw@^yl_jMb<^}B0n2dG@{Z*x^ zX={K563D`G=tnaC!iGn3ZH5;8ez7J+HV~A6WrPhEBlcQPcOv>(Num0! z_U)HPk*Wh95^izWnR_Vv*h{OFr6$bF3)A|GVUckEE&KIyohasn!YT`Y^FG!l)wiPx zy&z7>Se0gPcxX1zVAyF0Y+zRrjkrAU6t7={(#rLB%Iu$=FH|AsqgN_Xh>XD78qgsC z)hnhbolVdbCqiTHZ=RiuKBW%x2d%>-2jL$c+V*}njGk7H!BV1Iz>6Hc{cY2I1rfCe`xYQ`Z`md z<$zXu$mm-z&Yokn710>UkfSjGLD097LY`qPV0qh?J0-LK2O+btB)OUZ4A}0@7i|n0 zf_Ye{JO-^5I`qlv1U5n=1Sey@^V~JYgrnt7IDWvEGVIW1YT;A`-t0wvHW@O>xTyVG z{2-`vq&W)2Ff@SRsxA?E`pLqJgU}u>ucUSm%f88&qTmYV=~5S;ir|Z!z-8OX--o#F zXbKs>)olQWpyCVvm~cmyLtyG;ZP>u4kE1{u^XxLG!zR3Bo+oqFhw9^pRjp4zbr*Dl ziFpw`iH1nZ7#l0VNwRr64qds7`TkgCuPo#n-mgQ*WD=!9cQsfR5t4*DA_p~x?06MQ z6_^^J&WYa2wWu@nIshTRkf~vxN)x6GT&?$cM(j&F((K{y3rjE0K6maw_&OA@Qx<8a z@bZ1WiPJTB>3b)()iQk+XK)_?(yxWN9l6Rb;O)`wddc8y=Vxtq1EH*0SA(q|4-ul^ zn#XydhMiCEPsW~7Xi0w{H1^y9Z+EA;p@$K@6o+6@;6+X=P4q2|3!z&~| z2;n*J?oFv8ctf0}2Gk0*(!D+A%aQNv2_%^8;h)wOPV>Uw;#6J0WP%dQ=u?8>6Qs!K zMsOE!DU0W$)I?|v%@tKSffWADugsY+rlj1N`2Ga!|Ms{pI~uJh29rP8Ob<(~Dtt04zW-HXWN`cY)FiF~G)+Sg zDUN5?5qP@Va)`M3Rq6DASnF+|ruyB)@(#n@stzrVEWl4Pbo_4l3_8vSqaA2Mun`6l z(?Tf&h+!Lv!>-J3DnDCX&tdi`Jq1yT&dy*(0w8EEc5jd{h1cu7WDF13tUFE%gJP8A?8cM-0mbRA}zq$~% z2<4B7bRJ;m-rZj9o}qSOn?dXOdkhXQ#&-sP$&4i1o@ReL1)d!&OCg-zvzlrX&d{0= z=&-zi7X*g3dg>Rca|2Mudds;M@PtY|2HIMV>p3#<$h?%GSoNj z?^0G$$-oGNy8ovZ5ITQFkwFatM4q;TqxUO29G4@4<9I=?LRh~(pHsIdxLo$TOkS%H zzK^$AVF3Q|iWy9-fIWHd?4LhOK0{PoM^&l~=uSKBzi|f6GTnk+in(J>k8W`=dx0%P z331?yVprh`nYXBN83MQhKpy2KvcBC4^J?aE<%_@>Sy#1(qOtWiv0BvghNV~08DN~c zv>G^k6U%D@f-=XGZaqLzv-Ny-pD;4LKNK}D>lyU^cme5CzeOOF-@1>@lN^^kT-cH( z8@=wu=`scwtAeUoONRay$;G-XgDR>L#ySM6P?PuM1W1Vg({<4x8S9Z18*7f*f@tasz$ikmC|WBpzOv2vkzZVIx`V`Pr9?T$WOC;hpeEmn?2Qph==n94@|`n znh3%~;lZeK^`I?(1B72WnwUU+8;-Q_Bd~5x7qG(0b|1S*xYjA&^6vp{e>jGc-SieL zMjExBl*@B`SNkVm|}VCn~DtvyB4 z?W9iD1P#AF1p`}+Lw;HSF&u7h7Ct^l@R!RALE>kKjt0YM^6pY$`8T~8DguD1AAGZW zh{pBKteI6>upzjrt*?Iu4xV(k2cP@?H?EiBz4tm(iAqqN7Q2wu2c2FWhk$&uBdEED zn=>`maCd#68AVV-u`H&6TH|;}tvR4aFV1tF5`Cjom&HiVObWi~gN{H3xY8xphMy#N zbD2%yxhMmN5U3HIcmEmw?pI{9IH`Na^uWs+X z$97?%Bq5|-dShg?A|hj6%ym<*$=_BnIi4vUQicNID%Y;apBJEBroh^X-%W@M zyIo+)nZ^7ykzv9RZ3?XLT%YKi_@s+yYh*jkfqD-8vjoZ+EJ4^~1F#>}LN&K_-Lx;G z9S!xFHpDy)-Fa(u(mtLalXZkI>Y4`=a|)plwS1M3VShg#p1ds={ts2}7?@|&bPG4O zZQHhOH)(7&Mq@jT(WJ3$n~iNdjcxb4@;vYRopb)>U+%ePX3y-IwbrhJqW6B+6ZpRG z8%?rdkuA%7wWI$z5M*&+HwR{Xy*vxJJ=!;EE3r>VD5s2L`BMC8IIhOFnmJ}`7tDV> z&|c%*EBDPf|6`2sh5oftU z_1JF{!6;L7qyLyf{mBN~f<*Fjq}~0-W`^o);fndKJ8*=ne1L)9Vlej0ON#K}pPj)+&E2!a?Z_ASG`04?DE z^^h4v&1*7m=ov@bSN!-lk{re9A9(N)LZbOU%o(GfQph8ebwT#lgx=|d&zSSR?RjW9 zTJO(xI@29(l&guaB;&7kAt8l`D8&S1@=aXIQ^g-1DEeH;+*oG4M`O&tAfDbcwDt8- z;9l-qpG~z0KWl&E`k~G4Mv5;csAzv;(YKGavpD$}T(Gxyn~=2G$xi?3K#1?|-|Bk( zLQS)`Qcdswy}EnAu%ie0zE;9r%9!;Eb(qbiU#|_nbGo0WL`Le62D*-Hwd| z^-ru=)BL#6(BlGM@5l_E2Z;oEagBhSciLt9*(1m$YC`B}p#s)!`rUXZREZW??5&q$ z1CSk1SSvGrBs#=s-HVGELQj|PXsj=P#>@N{*7fHaIzNW|;{UckRv|igEv3gF87?!{ zO$k0cSstwsy{3}Zt>JDs{58c&JOu0Jb}g8ssE~hpCGriG`>v1V_ui=(v6p=FuC#wlv5{N6+?8p(rtFm|ZOm7ZRELzx* z58_2mk^6HXm!6yOIH4T8--TAQgV7@9nK?lv7^5efr;fO84ZuZMvfI?<^p9KUmoe)j ztXeKIT;6hMwIzs~d9M}wftWT%4csh&sD-WrhX?;C zQ9Swkjt<*S2^k{WVCU7nTh6!gi{W;OB<8!eI=3KX1$fxaddTm=s zQ;Hb@B}9yZze@Da#|)p)-VLieN9*SzD!v7LW9pX764}t7qlISFnHsOA%e6>Z#0X~Q zEghU0Gl>2fGi8i;#Q+?K?7G>(&AlX!)CSmP5zy2c7bSpoR?rdXju57=7?ZXSz($&J zq6i^HmKm6kK-@}2LaWqwOmfW{V^X$WpJ#n=#4iNmOa(>jlNE0Y@QFS$R(?AbU##c> zK+1t+N*(M84Balr#!q%Dpe5?Hf#&MQPi^;j+v`88YqOu}Bx~wT-8kxcPZH(b&6(#* zHG&W*8{R%wy5^mjk+I3ALxw}y+~TQ2=5mjLP6z*Jv5C%;74ZBZlnk#kV$xN^M;>Qs?XYu@#$^L>uS-s#0ueqVo@@*~;b4R=&f zp6o!`g>f>ZyW=F(N7KU#0V5&`fg|4cl^^N9 z96!wR!5#Oq!Y>>ZuG?G?xJVlN1Rn{|@9a5;SKx(2zjqJycv^5h!x#kcIAe+C7oGQ^ zQ8Q$^#<(B49_xwVXiT>ky5LP=WTOf8btCPjI}D>&zi?W^HGV~ruAvpRZoJLl`5KmN ziSV^&rTUKA8E8=kezOnad>CO|+)V2gfZLaW4mR7oqy&^AN8eyiX<`!8A!?N4!}b&T zeW@^~{rtyETkb?BdgZTDo>z7n>gwQ+TXPV+8>{@@4pD^*aa;iS&;Ia?^BlC@<=_7_#W9V<|F~SPC)ij{z=+ zNeS1H_6xpSE+em?rIo)6TAz+;FtpAPBr-#^9@Q(r3#4l)GbD*ph}5v5$wG)B0~L=F z9ieXzlp$|{S1ij@5L#aSB0A;x!QQ55#cK0}kGrASS$9%Lb`^Rv=|LE-F30+3MJQ^) zKWlrCS^*Vjii?`tRG>`H0rPE3?S0#S^c8}I(o+J0Qt>xL^N-_v;Tqbv3)9N6aRBMk zViIc#BRUp~hzs*hs3On@L6pu7y_rQ6!JuBhxKU)_XA6s-7%DWE{Yr=r8k8m6mB`?D zFh#|2tM$(-$F{r(wcHd}Ex_RG2jT*gy*S}iBQ97h)!^ol>kluEUv_)e_za;yL`wZu zOGwKWQ?poa@XYCDBH6`xivL62KF0!2qYDB{iQ@NCH~$9Zzm*tRe)+#z0GtUp8GCQQ zp1~N$`o-lmhOU&64%MFdFykOVzL~tw)JytEJD68l%xjL5J&TDF)Kr17^+`9Cb4P}n zk#Vqw5?clWnAAyJ81l>KnHAsvD4bK|0nzvJpiiQ_v`c&9c|KdMF&?OfPuAy;%9WD8 zPBnJkLZJ+8`B%bn|yt7z$p38N9d>yXEWt82d6_D+2Xt~D4=6wo~7o(qf5USLI z;jreE!PPsU%~|7qK>s{AQw?oYCZ_UXzCu+^OnI3|%`+rx`Aq&z4J|ZC36u#gB1}T{ zLso7dE;JmH$uF;k?)^JYJQouBMkc;bS?m!GDtmAS3w}2KQT{ zTzNJWlf38Xa=tEeE(U4Qp6z~BSE4y&K~Xo^LbVq})N8jCn7iZ2CzZs)VEN0BxXbdi zCmFN+?8NzIg};aGdreIa_EY28w{Hh)M55(C+aD%=v?qY(bzbN7Afk{L$gcaA(D=Ey%|?u})q9fT575}jq1hdnNhx?tl@h_BM{r?4641~lj&RZMBpWp;Q1 zzvUCvj8(@EV3isgE(B>wGA?tHkaoLg!usi$D~hjmR5f1EZL)XslIf;+mi!j-ptzqV z$%`yt1F%h3+@=5ktfvnO-wlS~dq-%w&=DVuCG@^>Xwb`{u-1RV;kO&jFP#RF%#XYu zxBOkT!F~z;5LX?IZba>s_LG8W62;L_VuFP?TcI9FO5%gl5=%< zKFy)d{wo)KFSR#*v|L!rOPRapw3}Z|)2uyN>d0Au9afa$3qqck9(aILq^X3VeZk!g zRA`I-iR`kd3PpWYOpE{=N%gk*T{+1doDse=!{T*opHQ+c1R%HDhu;?baL8{I2+YidoS#9*tP#t-Dhc8)J$J z0Pfhn;e$~NN1U~IdTef4KXd`Vs6|{=)A{K^xZ*bW+jqT_@XJ&&G(H;L!-yQubEk1) zO07!cMGl2s?{JnItuG^r;mtbCsYZ_AXHSU~p|Kz`a5wTJY^pE+CUowF_(kkK6f$=t zJDaSCC7Z8B?IDdtD}-M30Kui>nb58lLXKUX(#(ys$YkZx39&%*il_H+HDghL8ARBM zr`_E0OEEY}GBy)-<6{2xhzW=<(MQon2UW|9?7OuruZLsi!vTw&mXcwlrPPS38G)#d zd_EEnDNPfGj%h$+B@{B+KJ-)0p?oyE_QAJ8kc2uDR|+n8fCY0NCR1IOS8!H~04@76 zDhk5J{Mj3kH8b49efQ27)kVG!c`5w&J&|J+YloH-o?f|m$SgUgEa6V|UWPXAmRJMQ zaz+u+XzO)atqOLD0kGqRK%iRNnxP=l`&|C>gWTlc-AOZ9`ly-kSA$z|v^86Cw$YUN z3;S4a1(TD`G^{rbQegD}3yRzl_4Umeg#mB!=cAkNfGf4t?{r%vHGL<-38dP{`0NuS z_24WPuBRFFqx0vr@EdE$JFCHuo<6hWX?iw43WmReTM&O#i~*Zhvy?_~Da27U<(pc# z2r&z^NV(;tM6Ou@WXc&pky6NIj|fQ!d-06UTzn!FRk~XKYt2f$=jt5Drrr&J2VikO z7VKQk(^WjW^Xazd`Pbz++7_i!)~x(oc!;$WClJ6R%8T}!Vv2rD$QkY~Q{||a0$HJY zdGw>EJHI@VTI*2!mndblox?yN@(YpP!4h$J_L9X9f@|GzX)lAXL!Z%u3xX-dpo&^6 z_dZpQ9Odeh69Lh+OrzIbQ7J#@xU1|-R7b~7pS>mKImn$mpC}%`_r>W(MX>+MuTOnW z_9xf8Y^Kpp(zSANq69S1b)gEmF0MmBC@;yix(ozRN}2IKj9BHH?O4)R@{@8aW-D}0 zme}J04st&Q7YkLc{5C}2S09c(^lnb4I_Mu3=bhgOz&^7&25?0VYOTV1tRf7B9uc)_ zF4ez+DtnuB`=m=fF$BxvXRxr-p z->Hz3H;BF@x!aGi8Z_^Z^!kql_nR%pL@i~$r`wm9q1@A1?iF0XAk%12r0cP_Sh-z< zZn@3Y>kAgCG=KmE$zbJZEKa~)EBfooe1!6zZsoCZFs=u_#BnM9F_CgVJgN`3&TZx5 z=&G7~6^k|M-Kpw`y_G5UMpnQJ>8V@h*iiLpiR$RDmjYb<*?Wj0?&J(6!bbL6TzbWuvkUvxxF=(a)|drK-%X{O=; ztFgXi3CL`=ZqO#%HONNXb@)rar_v1ieMz3Th%N`8#5O1Wf`jtv?l9h^hJc0dA4yuo zVEcya!hLkYs}!P4_q@Wd`xzw%P=k%Te1DM%e#)CRy_4fCzO8}*mr>k5ly^hjsr?x!b58pL8VOND1XA?V}cyPK#Hwp_h6b# zV}l&WyH26wCE^b?LNzKJXgSn-6RlUvIsiS;m*R_(J zPW(JD_IsoR9}K00TIq+Qa8Pi-?k$YyiGHDow|rc0o=Tme+rbjZUZP=L78Priyiprg z>=1Cudcqnb{T8AWx87)lUy@!T7{HPxWY5o#9ehO2htgG)3v#mS@~zORKa^ChpI1uG zzB|AE<)ZEVYs>3oj3`^?NOku!$g1lR3=zY-?$G$)4T_5MVe|E_^pHO_bS?Zy!MPsqX*CJw$9qRR2?!1O2I=Xmj8QeCpT zI71K5SGP97fjDRnNH6R#qMhto1d6%5mV-%LB&-a#(CO^S{d9XjLqDNMzkjcM)AG1k zQ>-C2vn7a8ge*P93Y1qEPZ7E)z!eVU)T8YU$(O^OZzDdSbD;>jpRDP6B5z79n<5W; zo^lysfHZtAu0a7?EgOxD9KKvIdx>QJPa#3&T!pq0)X0hLuiyQ^&BO-#UR|i9<6qah zH|unHPl|yL)ZthABv#grXFab8jVr%?!qKN0-meZ~p@LwYuZV*bLw|b_xV>s6ndwq@ z!@(yWWvB?@b?uN=B;G12$a9$oR7^lhA067UFhHBsE zM)`a^_g=$N4o94`+Nx4I%cqC6CktqT7kEr)?B;k(RAO+c5d zg~V88oh)Ybw1?EwYGL7w{sl= z%EF0Gxxo-smUNJtpr2p3TV~EbEB9+a40$d z<5HGk1{PqAul4soE{(mz#oH2dDAq^U)KcV*UP4NT7-fMCzPH?axjO;h;BB6*lj-q> z_z~xpYrSNTaM{tEr0Fg>d>g5CJ$xuB1bKg=dtd~|wccd{mGQ$)Ps_+pQ*)qqsE5=8 zLCDxKi=A7;nz)(Z)emeZ?L`yD=C1hT#ft#nd6wd8s{7vw9+XxRoet!|I6jm`ribho zR+VyE=G#IK2OsCD$8`>GI_^=7(< zGL@~*;8YWFVl8My}`#yX-B>+Yl zO9Tp_8sctFsWIt2@zR=(Ko@Ua2ZTPb@$sv7q!0&vHA+;ud2&QL>5SG(M4qb2oMPU= zPUA)IaT`PRhJ7}th_iVf&*r2nf_AopXvah%C~H9L^?fm_zAp+Qr}+2}W}S-ak%+g< z|B@w5Yxs&l8XDlw&NHwR;}eM`L6xPpOs($A$WXJj&SjD|bx3>{{MA(3P+mF|2G9j$ zrKXO08*Z4B$K5FTiuW8Q*7G8cL6Frfe8b!oyRFFYooN!o4jf5cmP3}rlWeUQmtFM& zcSnnuVM@xgu;ZQ{f(@6eP@Fc)`~BOGLM(NFa6(_n4wBf!Sow2HzhXzzwn9r$X-O^e zkm2(V$6NSMv0T}meSbQpa$uf>aCpRuW3y71%zmG_z3?o@nj62`WH$p&=u<+KM587d zDTCgNk@~oLI-TQqYG|m4JnXX+(kdEmS;~+s&K~s( zf3)BZ;hS~%@;>Kf<_BKrbT6{T zmZJG04g9o=!^*-WRyX`ez}4ZS0PfqB`){1;Y&%bF5X%6J__!^}o9>_GnPBxdUYV$J1~{is}8mj$ZoAWp9Lkx5Jn)#af-rcs}GI0jg=xn&(~6HJUy#`wg}`f>7N% zT+vetC`ipe-`Adfi|pX~N#<9*r3bwWl4pg({_E(#z1!b$FsG76*?v#7_@2Weq^_*R zDgjW0xbW{#@N+f8oa!c9jk&n)j2PBZ6o_$z%-WK7WXZBf{2>c`ANS7!ipR(bA&{yU z!Zfgx!o{**cuConk7EE;X?FP`aBWtJ5yxcqHWfX@G=w~iP}AtVNaUgPArI^=u{%W` zT_2MuR{d_~R%@tS+wBP2cO7Z{vN$PtpPLIgLLXLmwNI(YzDzfvleFCjUi?wgOd&7+ z4BMw7sm16t?WR^R%!JF@NZ+TUCzUJni{793ajpGGeBgvc%TSD!zFpubcB?OlH!#Hu z{z8jyG{n+Fp>QgONPsME^3LfL7M{mo?X(C?n$1cRp1jBA>r*i|hOqNg<4zjqkGAZhbq}cqU2LFCh~g>cqKG(!t~QL?}oCcf?u`B>xyqm)T|8 zHUN63|B0rqJ+SVm%cJK`5_8zv$Q&W4oA8UB@w9N8M$6v;dgI=NOd>&E^FQH;zx)uu zTduS@m;zu-h{Avl!fi5%+2Lx=!JwNYiE&?03C6wD>~`>Ke;ev)#1y>@6rkq?9J85+ z)lI~xguipnd&s^k%OsHiiY7v;rFT7QTAelj$D?))=oDOx&@KSmdy?s6&`erz@0#TO z7kcVpDj=y>f+^T9gwKD9u94K+fpdUzMtlI>naFT30yI_a?_4gzZJ}9P+^p+<|9rOV zA1(0SrERWY(J74qWm4t$QM~Q+OJ7m)qi?|M!!_Evf7l3#B<=4UDsBI2rW61$5WRM9% zf_gDcGXA@;HWdF_R6m*Sr{_q2{I$kUE*g(>8mGRVgvsWC{$E~&`}TjFx|oo6fCUxw z5D9QPpDYm2aEoq-(lc=mABhcCg9>J%PuiFrAjGe@!hM?{Z>HUF(cli7c_??p2_)$s zw{;;Te4iiI>-p(@T|x1IIh;yLm-v;?^}PGh<1q7+=F1UbIsCBR6j*!1ODnUG2P}w&r1@A3l z(3$|6C1Kq4^qkcY3$efNj|kiF)gKS-L_3kZTz$AZZqC;ofUqTeiEXitj;P;_oy$$4 z2SgSCj#>xwp8*A8fi(FJTFYDEoF^`MemrS&*EUNv*n)&%u>XnbewmyXKTJa(@NLj} zb}eAQ9{elsG33D?(m0U=Fds2J#46+LCDtn)u)e4oJZx%vRLaMJhXl?5;ecd6cCX;9 znJ1&mU3b=BBFmoPpHL*OXP;Dpc5oBaJ`E2=B!cTC!v3VGNyhJdg_bA;e{MGW z7nRVXQFN|+fG$pv5{?4sd$IaAl&HV#0KUg^c3~X(Qq&I+>@1} zzy+WS7hkZyJgX9H9A?XhBO`1KPm|=RnWxGzEQ;;{Fc?(+U*G-30!*75i(g`X+*mS} zIRGz#>frsSkjia_=?zHv)C717xg9DlAQsKC(9ju9*js)PLlBZnxvoH8s@(cw5YI34 zbi{U3v2DNes8N27Ck?0+Mb_8bnQH(F@IJr7G}QjGq@w>V%*SEC_&A4hG0BdAf_p`doE~V@Wp6k&bZbqx1r6F7uH00c z<*wY84*$KTi;lQ?sIuMp@M?$ZMHR>cU2DGdw@%>*Rua@B3`guX4w#qyvXNCZ9d zqa%4IR+=E|i@xMe6Chg{&izN=ON}6?1Bf*)Jy0G{VH=9w{uy*wEXv)BnO~349^G=I(;J+#FEVGmAoDW5cDvAi%r)hWsqE zVH17qh->@2zI)4z!0@%6SEUnI`(Bs8)b1Pn-<_KQ1qUt)&2XLI_&Og?!9D?(aD<1yJY8tvEMA^E*y@#8ETXbpWtcc0YCp;lA1yM?7tKb=J$ zKwI?bEIeh3uGPONOqdsq{JkjC|F|9b!} z7EW@<>U@Uc_^vo9uJ*Mqk+~stthBXF;QU6aZZG)vGoBmDH5&-pCy9E&HgA);ms*1{ z8^{)$XRhf)e(S?~u1%z!ugd$xm=PnNa^TA2Nb@Ow((aJgyS)@?yKKognJE);xv?uw1BAp-_NlPB` zg0aBJ52gRx>|&)O&p~!|J=HNW*F^J~Z~sGM*fvCU&6zU2VQ7)9VC5RtS6n5Yv+WmN zs|h7Ex-?RCfjTXYP|?8nTVCaiu#NBkCJ@}KVii|RO9LEm!_@mtJ%m%?*@4Jm$}X*y zM4{;f$3?MIkU*K8?2%%t4nkM8kfx~)FkB)9Uw%)~5i$Na%^wxGxIp^%(M|y#kT)!1 zL#TG@(HaD`4#tqq0b55O|MIx`iVa*e!TnmM#_rLTH84ojxvlE8rqX?lX6GDa?%~uc zA{6UE1w8MAa{IGUv_~|>pr=+%t-U5q6Caj6L)lUEdt<3#|BW-!fQcR4HNpQv;mP5H z25*t3CAKL*E)ATOB7J^;v0!zZ(K0K53zI?t6|lIWX5_T_t-n1r#sQSH@1GjhASW zQGe=&$Yd5Koho>KmKrWyH(P>aiHHRs#fu8>xrvSKa{Df&C4ZW%GTKj8j-`*-93->T zGMT6zD^3+?`G*!5gWUzJ+@|}Kn7ULCwiaw zZ)oTe6nIBCswSm@qTUIi(MTuhSG7`XBJZjram6iYxG_jdQh1D@fw{L}4Q!9KJ)AuZxK&{tgIU+w7A^!UD- z_JseTMoV6wg)5pKaFW3nkv^b))Ydpg(1yyZ#wL zpkrXf|4VW50SYv1Ov#PGn%$Pq!;eF>fUi9-Qh_s5@}W}06U7z0d1<am z>?QQ-Zu$eB7ezsRJHp6hd$RrYcMj`#{HBA-tKITfO<~4V)%U{7KHFXbheTag;!&9biCEb&y)jA~IC;lt)w ztyw%WB!AIyNKnoBQSJu)A#ssdu!14tEA3E8s(KaA)BC|5H^1%*c6DU&kKG2(eK)^z z{40y`7+79af(Ue15DSdFc(Pbnhr6mwTG@-YUoSgejj*|lct=>acYgpH7L{_yeV&>= z&$AFUQ+^44-f@^L1-l12m;Nw``p{Mcjo&=`CC=N8@Q6WL4Q21Kx)I!LbxCr#t??IB zN2G>JTLO^EvZfn8FOMf*rdMmq>0J%^5&DC9^2uTlUVl}IbWsN)(k4jF9vyhH0Amh5 zI{!`l>7KJc1hpxFBbe#X#%k!vZ-3BY0$Q130y-aPnN+d%*FzD~w_koWhxi67FZ3gY zr0Z}7m@h4b0WTua4&(mir8z}mue3h~`E1ExDE?~)yg_9lr5NO0KvU&HYgzLi>4IDCBS%`e-=4s65MM~R))PP7+QQX$qodb)i+MQF;W{tVDTnlc z>VQ)xnXtP-Q-IL-KGrxACKS3|+B%H@8wi;IJ}MJ)<6^*Npd^BI|4}g%<>e$F19&(k^NHw9G|Dk!ot{^0My{QFr(quCC#2q6y;)*0WCr;$}KfvuaQ(?V4b zb*(Y9P8#!K1c+|Sf(9>Qd|Sp8HO_4;wo@!Gu8RxLH=Rs*rzj14ec*uHYpmU%x;&9= zhkeQo0A5?_=AG#?% zlpS&(C)I>9jJ1mxz098h8D;cFoEt zYNCxlui54Q$O^>B=o@QRf1sUkwL$v7FjzUxD|!Hea*jV#BI} zHT)_lwmO^ad>i3_%_$-kp&z@hOYb*;=yd&(`T|IE2fe-^26An___vBRZueoz^C*zRmLlA>cZZcLfY)PSGh1@s`5NYY1N36Dq8Hij+VZVwJy>>Yp)PTXY=RS; zMi+AMgqK9|6+Jm?8UgON$OzTf&>D$Dnuijh*MDbvaBmnUFMe+e)jt`fL;e`gFmkHQ z*OglSy%8HND@bCDB>h9X-xRDZt|CnhBN4Bhr;BCO*eb_(>Py#HGXF30H`}GzK_@@k zVJ45WZ#Pdi(xFH8;j4G{7~f&02VXba-d}7oH6QBl!HeN8|FZI`B}^pD4g-~?6$-3P zQI$09cAh1<Krn8;H7+g+N$dM}90 zV@>~ng<*%cMzD-Z*yYDMU#iAut)n(zPx<|9gYBTF1gXpz80GqQp|BJq~)*M+5*d%PTtcG;)9dZrnQ zCem0q?W-#SvG1Ad&tH9g+)x$+| zC&F-aV?tY&3+L|X;yY3n1zsi;$5-B~y9BK5WxL`*Z~ew(^f>YlP(1(q1z1D>NjxVlMN{R{Sq?Ti z5o6c`Mrlc5kn^1+OY59KWC*VCo%H!Wa&r7hx(XEhJfuic`ca+?x&%ZRvNu2|7E_UX z37k(k0YH^}kQXl)W-T~p*t?^pJ#M39MZH&bh9}c4J z*4NChb~J5ZXq1~Ggczh~ksu!l+SY=Y&itIE_j(JK3Df zbG3QLK2?kr7c=|z|8Rn4}Y zsMIaYG27aHv!7lSoY-dZI>@u-{VI^*eX?@3+pT|i66rK(q~*s`rPmJH^u2-M&G%7n zxVghCpdQ3--CgJLcU|N6CD6mk)^tw$-Cd8o+vs!28@}y@@4il4^^?uxliAAEFHdSu z2Wyu-&ysroNLy=M*r%DPE3P-de)UX0LuIWzDmZdIbxD0>$wS2)uco|-4LOg*=~yge z=z$jX#EpsD?g)$TJ7gRgiNcxxkJj|B>&Zy^y{n~#I^sfieC za!Jnz1)g9%tnIHTE5YZ>k%rBf=i5?`jw)@~!_N}-t1h)Joc%bVY|h61%C;y0_%Ub# z^3o!Dze8kD$uwZ_tQGMvDZIhO8;wZhjpmh6$r3?2N*K;<#s$Qjltear$dj5^JqH>al#;cj!?{H;H>+qu8&Bu9q<2x|munYoUDA zh40@}N9puM&ifofnrK6eR0jOmrdB|B15O&}3SyDcI~D$X5e29L?{IASlJIFzY*6)Z zX7UPLdlPep@3R>_#ef4mTMw~?fi*jQ05O}mGKXrCkgpt0md=esLY0u zN~ayU^W7)^=NL$sDAwfr&w!C3CsT3))UVQn5t4oK1QBM@J{CD~BzC+~0|b6&?h$ezGbCk* za7Jro-U67!3Mp@DrGIQJ}p_$Ejn5zJQ{L zzOvMv>kf*~9Sm~$@2MzeNE8rDQFi5h&FHvKqXUIWiOXDmE>dCeMVOTj8{bCT#Usd1 zY&i7xAIA6YMJXZCP^n0$X4{y`(DavSHXd^{n@cFPe59#3$W~V!LntuM4sQ7dsiZ^& z>DXsmh41=MB3W;sVor9i`7?AryWUtVOA%}lEhY@zyEC1o?e5&k*|9TPNYQ$RlX*0Y zDuPC_{Qti>zKh7o0Wa12mZRqMGEMHhb=DW^fXN-U?eXrPI6jxsb$yMGx$qTAIBsE6 zIENFr;vF+dNI7QXuJm>hB`x&9m2m7BSKCfZF8fOpBsFOOSXTf^0xS$&-1li*HDb2c zes*K3&R~f%*Pk(Q4#I`o#e*Hm!`mDoXLoiSOJPsdvGx>`aZO|(&L zD#YyE3*8?-6q?9?$GpCg{>Y82IpKQJ4EYYk!d20+b(D}8Msc`WI@l#cP=3%9` zN0WI>#mTk>=kqwymEI|nsN_a{Dvf{* zY2BZM912<=<6jkpkw5wVYSF4HB_2s~Df+R^W&&byNUv| z_TOK`Iok&Ac*%Tf7Y)CQzmzlCrrw-c&3?mjPO@Ihlrgz4JT+w@ZIQD$!|<0nH}37pnTL)q;|&6~xUE~cQ4JiZe^m@+D< znHH#yqexTnOCDuoH#2NVIS?&}j+x2+aQBlk3Q^qFW$w%* zBkRuulVZgYL({&>AIYVuoQjiVZ=~HNm9)nesc%+w8WNSb8YN{Wp8vFz>NdMNmHe;w zo7*_P&l?7eDW`GzAi@hh-UuJ~LP@xGtF`qo|{Aj z@J!sXCA&=7`1bB8jOS8+N62&)Unx!iKmM(!b!9$NZLnWOkN5gSSFscvmt|4VR2%$Di)@TFzH&qzMr=s18UR^(srVLod`O#1p@G+yr; zAnxV!unD)2k8j!yX5jtIan|}sQeyACkS*(@-vZ~gR&MIg#Jtb83F?C}6z@Q~2m5KJ zv9EaE|C~D}0!w>+9UYRpbSl?`x+HnL55sVl@Oa5YfWPxt4Q~Sj$%M&;+G)y6Aa}t- zt%Z^X81ZOLYjdFC@_yv&M9z}!+nql}qSi0BMx5JQ<)8jx`svA*Zbl=BQ5%a}XtGd3 zs+)DPtXQ@w$ApVW7J83Fr7D>Q$JB)gu;WyQwH8FC_>V)!a^0r(M)TTQV;O@t-zBk~ zUFjC9s$a6)L9iti2hMVX_Yu(t`G1Q?cL-0YZ&#}S$olD}p3-l)zL1~maci!g4R`Fe z-BkM6cZKqCIlORv&sO$u%g_Snoer2!$9#8tvstU77ZZ#Yr2D2796?4n#7N13-5Qj0 z4^^?HCAgL7hx7y)%AYVojU0qWakh>ff&C?u6nD6V12r8DfjS{#--1hmr7cv)1eHgb ztlg$0u1R<}M5T3xLF0J1qmsyAxuxlViZyn}n3~q$;B*2&%OAUx3KFPTe2cBd)u_Q$ z7;-_qCtMB%CjT?-zs4|_3I5nG% z_g1Y>;Ofguu_dLY&$s(hu@b@k{D2Q|#n9)~ABwP@pkmP*C*lL{BPiVshBs{QMA!Zh zLLp}`54ki|vZ%ql%Xnv7m4J^$1uN4EHdPYh(2_%a6G7h=zbzH;-!vcctQ-pQ@IW{m zi{K}v&kr!tj2L|3#L6VZr5@p}Fup};8kmcFJ1aUW4A>SICQUL;VGuR+QvL%9JS7Zw zE_pY)`R9)jt1hxc;kb8a_|Ju(y>_QtFkJvgyx!a%u&L-Wf+{GrkIp4A0Pf{ zrQ15ekG?)1ko}<#L6~0e`qPI&vo3}gWJZ`5)BEk|0_|4Hi|Z=QImU^8~+GuoMbJUtmTe2jEM2;xv& z7FTHLKRpjPWR!+bc3R|xcpIuIcEddJa4u@{eDx~eKVN8RF|7_x|1#bhW2CmIl?qY( zfUUsQxJn20F|b)W^^Wm;277%JHj+c| zbm=vA;#%98Wj}hc(AA_-?d!L(#tlV*)@|&Q^dIjd@7*E-I$LizpDpWhUS{7jis|~H zYcsz+c5QVG8#Axq$bq+3hRv|$+!E~=;VaG?LQ7qClGxDdg3B zpx5?e`*}j97@H{NWWD)i=RcIBp=UD4UI{-C|@Yb-s z-OcfuvEF>s=$nCjbM>sHqd1(3*b)C7FJqKcqp|=B{DGLwjY_JFh5_#Eo-^2rX>6qKOBvXpj z5tVtbB5~9G7-~#Z=DE9Y#FuYld7>sw`hJo#R+aW;uPU4LkD0S1IVUo+O%9kl=X+hn zmD_?7-W+Sh-+q~Sc?jzYO+UIL*V$`k(`}lXrL1-}A4bz+u*Y>iJV*qbQUz-MdTs7i z>~rnT)CJaUJnXvQ-vKh?qvVsL5#twf@<#A&znN6_` z6Zr;H-xy+zh9;J#BY_7QNHcneFaz^_Hxu&;3IZI5`k9@#7Vl2;T{k(mrw8#q&0?8r zB1T$=xr~#!Dj+|?hA_LE8DiCQgx5Pz)xThIatzmkOK9g^YX8{)#sDI?5Fn8zQGp2l z)Iy6(Sq>cC(f$d)_m9VbQ6Ksx(F?WLmhUaC-;l5jgFSaaA$|X zhBdvq*@~xa0!2MqNx4-+<&2%A`Mb^<%TT!8GwE*L_0iuQADXWR&5!B$`MTh;N%N); z=RwWi`{->n2g!2Dl}4T)UlErYesMO4v|w#~7$#@JW!4Au;UsW1N(W3%&^7x6dQ5dJ zquF_x;`4bc+b&g2HzjyDXru^SUUm%Tf8;qP@#b@odN)~wyPT7mH=;bkgjAya|F8_S zliyKRmxG=7iA5`dm7E2Oiqe{D7I^v_Q}j?76D?C;;3a72H4dPIj3e+86(P2)?1+4f zhnfi*M6HiE_*6IKg?$}u^9e0d$c#=fZXEVSX>VdQ@?aAcT+SIWSyY$nyqvMz1NBK7 zt$+AvikEIIPsI{)qf8L`5Y3yaxV@~S=kH<)8?Co}*ngM|{JG9LIy9&^Q&_4of+qYD zB?A7xd+|qfcVB9LdS9?H6}N3joAYUlZ;nunFWZv&1>QXyNPAANZq45~<^no0$7g|~ zA_}cpafcUK&H)}7jt+J65T z<82F$nY9dSFoz&ka_|pwPTuA)sNVjerm0p{VMEH`0*mg06tNH8;@pdC0!olR*)rXkn;jG@l6|kxREhHZI(~(`9rm)=U9;IRf2ZDH4`Zf9ElYH zuRzd-Wb1y0>$sbMukpAeBH!uq9IXlRE8yZ8CYqR%FHp}?j(q)ez2Uotz0zQVm@Gqz zW{vg}@$PhS7o$}hja2(Rw>jVX<;$Fb(oz|Gckwn4lAFk}nZ(INl6->3qz*rOl!-JQ zKZ8BZqsqTmU}yMxpE#pTDVtBg^iMW0s80HX8FEGw2t-_{L}5rVf-c@ryE+*V5UApE zpT*S~!BQGCpYLo}|0%+yOgaMU%5u+c;3j&<=rTUV`W!@O4gSHFdQo7Z@tSzC_2sV_a>H3h_Odh*oA zsy&0p#`5<4WqQH)Q;_dq4g>&BVzCpg&;oI&9Ul%|h~J-InQFGKN{sqfFItJWz`v6E zdu6r{hcax??y)8uLDTVoYy2l9k}N~xzgIqrSV*o9c|g7jnO1|64y{oFm!s9)y}tq{ zf|t=JmG~`RznOe*y40JAE}F~!lul!bX};eFNC2Z`ULQCj`sXrVfszDvU^kp2L1|e- zlqeel=dccZ39E&o21|(mfr30ER%Zj9kQi|{U8C-6@PQ<>P749+7(c9>kH=R^0CGGy zD(V~p>ecAP%RNbJEhOuuy81a$oP4o;ZjjkGPE>AIw05&Q_2pm7hUaG-#;FZu8Fsjx2*k0e;~Fh5omW4I&hxV-6+Q7A(-$(Q|Iv2R34*rauN&T8(w!vrE zO2Zc(VbEP zaWFYJo!93Y`8v`#-vq6qlM>%88~iW^?d;q0sR!R#>Bi+irfob4%?+~(sq5G_z<4D(-eE)RU3{y4 zvJ2vHbvM`N8}dbG_srYEVk_bT-EwmmR~5bbT)Ch1aCU{O%?8T-lCjp$88^Y7vOFt_ z1~*#sXF$K%$-rYy^VAx?wKlUZz~Gf^^*~XT{4kA9CLa@hNIV#U;b~)FL@f#e4DaE= zz`RMZ2Y^3zvMoA_omJ3T*bV?mW?+fQgNu1+< zHA>JrBz$hxx2xCHUahOj+gqF!eEnl~FFE22X&FCG^eqaC?Eb$l76FAQ%Mc4rLe}08 zNH|7@kA!msH6b&`4UkaF^Y@3i&VMJ^_l~oV2ju9`n+uETgUXg@4tK$AdE#{mbG0+~ zj@CU^z%FLk_w;J5d+R7|36T*&j3bBx`C#E|c0K>gwHn8gz@FtZP4&6GhGo2qTw!v! zY<{9FTiT*(Adz~#8ET8~^SGV%py=1_UredhZukPu$FQOw*O5X_rIq7$Vin%o;W8r^ zip$qfj@EdBTSB}KePqzv!zC$ZG{QG4W?izpj&A*5?68u%5tB21E`qhD3N9eW%f+aW z$Zc83Lyi%oeRe0I{EhYrhL4!Q4z8XCP>3c=mCT1EHvU%@6c1ckI@nEgmFbfbbCdof z-%>D5IfW3$Q&LGJdAMhSH4cW5uHw0i$9jU6p(v$2ceC~lD|0QY3&#%{!8}3g&%#ws zde20RLv)vT4)6!yB}1y{V{vykY+V7^N+Q@P)oyHA$v@tf%`!tSUw7aQOUzb7y;bMD zzPv|04(%!iYvg*-#S&$BDB1599ri4n->1Ipt#m-+30$7k`TnKMj%fy(B=&YR9rI$F z`KDMy5EFRtDShHrq540cE>;VX8U!aC-LSjYADF|;AXjKb%LO7-mCG)uc+RjrB196T zex}<&+E^!(&w4O4LyV;OZvW$xE7w6KWMcdtdlJlNPVv;~j+v5uK4B_X`<)qYeM{%W z+YHF>Yz*U}CBc6CWZ8T1pyn*t-Skd(-P3$La5mI{8SkgI=St&x?poucOQ}v_$WiLd zk<2whp5mVLw~KgU$xjBox1NC>d!T7HA>q|d%%mAM-aS%=I%we+l;F?-jipHGH;F{&H3PfLp!aUnX&$yCEyM zm{5lh+gKNktC69UGR_KGx9twCn@=mjulQ zz39D;5wh|W!VQ^qE{`!<*gAUQ2>^2`BZRBms(v<(Q%`1|Pl@RATFq$G_`JdK9RxvM z&M?`!0ruJ)r~F@f0$N>*--jp<*~L1avr(0V-#Xfujh>ec4ZCyf-kkjvIx}dS_ejIm z{QH$e;gi>&6E+Vr$iCvHuOtMzTPNDGj`{oufb=pvGEz_~+0WuriQ0_JL8u9&jAB8y7QV1eJ0*<(HgMGy-Vk!4?90qCG4`dC4J|Cwm4-0RgZsKldx%k-*cd z)_)Vr!^GhBCH%Hjw(N2JkIfkvPb>48IQ*<7!{u^b-DN}1wB2j8G=Zt(DHjlG=E>sb z2+Vktw}`vT88E-l@Oqm0zQD2_+!jJUj2Q(VKLF!QPke)g+nV-4vdPwqT)`$?j{>-?tCXg)cfs8|yWtOAK-NNQm>j4bnPNm?TtUrtxmsQj9rGFm=DNu9B+8 zKY_7v1v}q-C4|nb(t&tA%2h8pXYa<$dBS?IaooId=|sF~d;xVU+IJlOuv72*#EsEM z%LnG==wyT-fhAIzemmZ+V38mSRi@|aCddce(7v4Npx?T#paY(8i~g#kpz}CW>**(V z+%vL!VKMG`ine(l5sdo`-}Uhhf8^zau6>oVH((f8XS*wa#Efn$D(F^&elWNjV3OT66Xo{8c?YhCJ2Xa=72rQ%7c=I_lwp zwD@RD6>GLxe5eC@_R#KY${m~dpw_`EfRmjqUy;^gfvtLD$SdIy^d4b1xT9R%SsQRW zZD$9@+_eqfQUmnw-<~nf);e@_#-(zs+?@??(`o_l;4&Vaez`O6w>6fiOktg;1cIzD z-SfD99M=Ic+i81geeuX>WfBokB@YMRmOo%J`KE3F%vkimAjm>SS&s_z!F)X~q6oNW zxu2U?q4@t9qa-uRaZphB+DW{rfOB3SO9+_R4zA39%pw3KZV6Ft$?o{ijE(GOWPmg5ZVZ-~@fz#|}{2a^=*f!OgULIyr?&VCrX=g3$`-PfwEMOh+xU6j&jmoGYvZ>*;ofeR1fG#i*+yUJrczODK zXSdLb|F@ytT&F2{DGjE=%C41)qCcAZQq zjn_yC|C=ZT1jNTjlW2YQ|Gil4%p3mIT294Glnwwu3}KL+kPD%Jq6%XO%d3GJq51(O zWdy62q=ADIuYrOflR~11Jhf=Tw@dYDIsGi=%*;z}=*IO~$6ZF=7 z;{zyZJE^#+D0j5kT)iOQsO7A-zc;mc*}eBcNL|+aIjVUB@uvhuBRs_w<;P!f@VKns z5ngLS9fo4AD(t;Z=Jwh?t1JJ*wSh;S0x& z(|GXY@`os7KYODA+}Ic|kY;w5U5ByvGvi!U4E9S@3xzyYBA<|@$PQ&7B$c?f(l^)` z<+oTWWD6IDMXb*SjZQU=&=I?p! zGwJ3g+)Y3p|5ohBF>{eq8{fm17T>3-?unv^YuDDrga`|HTC{z zA$Jvyao-{7L!?T)%;@un68H%a`~Y62utLoSq`aYPC(B=E6TFdCM*||=&7Bf_VC)9p z#I@3fe>B@*T|tGeHN~tybb9ueyDKqP%Vk`7oSkI;UN!mBrq((jE|+CIcH72DIa~f` zi0p-Q^C;)4f&Sa{dDLO<=AFnxT&VDX_ocx*%hd1Cm`V!fbh0B<#Q7(WAU|xqnW}pQ zbl%H!KrbfLVuZG?z={BA9nz zBS@T=frgpCrq*XvNVq6qG-O8X1Q7{uTtb?XSv7)O*5vn|a6;&soMTdPAo!=YP+V?A z(z!|BkB4yr>}Sl-;Ux|7dloqTq`uamA0-qfMwOAD5QG6rGlxJIH>$Gn>&jd zpYbmk>FpMhC!E+kHe%a7*Kex$hc=!?FME8QMX!w~?Ypl|7VC(%|LLm7tyd}*!!Cen zV_H$N_u82?RHXctmhT%kC_dJwp#7*IGHlaJmy`bYw@!@`f6`YW zcVmQCf6EPVUJ4?bR&#B8b7eiAE%v2mi&XbM{wPKZ0rcy6**tw@!eF}`cZY)2QAyC8 z%Spy?Y&{1@BM=0yfWju?L7PK<71br$8MTUQ@s)SIn-77a+ak}?v06!G-6Eg9 zq|oE*ZBsVCnHsph6|APiJp2q7KwSDIr9<1fzatU9^YY+;8#D&*JEd>$vQ2WhDk!wq z)X&P>yq`8t=~~D1t0LICXI)Wj$yjS*S~qQw?&HAve?-IATQ!MUiLRwr|BR=(E!}gkS!ho9vD-UY@Mdh*d&SHOTiXH3)@Rh9wfZ$9 z6g<+}Wg?d@#OrcBau|u}g-+|vB?E+IePbB(Q`r}14zshZ--%)7K!7n*)93LG!i9te z^h%A!M;qK7+gaJ*B1(C3jf;k($2FQQ5!k0%i|Caup(!-G6ML!|sZ=dl_}z(%=TmHMzd3 zp=PG;_Tr}x@y(5aTa4#Z^;?tRMF%nr``ewIN}W*n7LjXB=Efr&s7%SH!xO0G8yspo zz~iqkzg3_6meqcQ2YPUII6b3?c6z$i;79AgPLOtl(c7AdbwDAw!|4k^xKXWz z{J}-&-~_iQQl;v2gf%HkxCP}HRjlRB@k!(mu@8zfbl?s5uBVM+3hBVTL&c^W>KoOK z`UZpPnPtb6-=j~L72B$~>+;i&vsH2YOf|H|-dBert9QvGxIFxUQul~*4pJuch!jwrq!3bmDF%=?FNvbN#8Xgenc8lP%a7MxY@F%1yUa|A8 zVMS;Na3`}(l2L(ViFZ~H@%m?*hSB(CHtVBFQHs7Ps^MVk_Nwg zl&y)6{OBQUmf%QpoUX$`xZSr_t`}_GnUJeK%2}(gYareC*N@iCr?N?TSsJ9i<_?{O`@wX3u!>MuB{@_m6DeQRcE_C zbpmTHupnp#>omxOy~7OyMfDCE8yXH3i~y?{A`-#UVfM%Ih14yo@+Fjdam;CutN_?N z*JH=4ngGl&STjmQgur=?Ur>e+9C+0dI&mxmPCl>{LisfokCmU0BalOS6bl~iVUbTt zn*%{J*sNF8PRjM(6IRP#s0-Z++f%r3YjtEiptc5t9pQMprtj8>KaOxgx3fyw!wm+< z=c3Km+p%5^g17JQA~sS^ z$Ye%cUW;8zK_;n>i|9}w2<@=`QgYgnIxR_4*eKSPp8+Pduu!5*$aWZxD z)CQEy=G`Rtw3k>;fQBmcu3MPaNkRte)t5S9B z`j_kgCg+K>d&}o2G*^e&r*XXoyGePF?`SJ@3l_!kcu>!m*^vMIk1Wai`)&L|w|iK| zCbkO4-6<_xAizGTnp&>`r51;ZDQa;UH53*Vn^vNZAkUyw9CEWYiG~)ZPP_&ti7!kQ z5fh>LdJ=1*wtFbT=zOd2Mx4~i6%b1*%qvds-`ddfCy9l4!xL<|4cdF(aj7+1V(Nbs z>XraIHQs{FMaP9-yG8A6Pgjvv>Fk6QDIOeKTXia%pj~<$=WD&5Yht#j$Lnp#=1g8-;*|IduHApRn#x>(Qna%lK%t=368cA}+E$PkE=0XQ1a(Gw zUzA|6pCOg3Q^ur{Ps|Q0ns;`3(cD5Wc_I2vUi&4=?^?D!YynKYg`In>`zYl}rZ=H_ zz11(Aagoc8w*4W^huLQZ9f@qdb)NJ5qK93#AlHrHwc=U@!%Q(FDBl;?k1dc-^~V8g z$7KN&2WoZG%lI=_w1xr}f=KV@(R;4=mLnGum9S+?7aJ4!Z zy}gJORJoJ*wE8YqZ#sDD)Yi|{Mz2HDTwjvW4y z)lLnbbc!Ca&NXk7=IU&Z-KtXG-ws3pNKu%he>3Kk7w0hcas!QqePnbB<23r`LmvLr z39er?fpFP8o7z`2CRI;20#;#~5Sa!2(S7$e*Z-1T5j^1g-hIGOu4eyD`SVFjBpuPa zkF^r3K;{yX4j}i0f!_9mdM=@vqXkHsCStiD-b|gO1MQE*Ihp(!OD0$zJ{qB*s1Htz zfdx4RYB~YopR&y4!tQptad-hz}kbUj6f8=r6FMOn{v5qX9UELj+A`w=jck>`d2m)^mlU8IhzHX2tjVgi!R#>fx5$x2e7I z(U`NTTFJ4=LW0@9sR&CX44zIHzEcgw9Xz7}Sx`T^5*ujK)zw5!yK)!@`2kJ4XiTqO-Gz? zCf58Z%k5&S^lJ=Zwg*`2oM>6y7IUxYJFRJ7!cKVDOLMQV#HmQ$6HcGA<#WX^deZgY z^N_1pXKI7JM5iq5Z{R&|+iv^ZbODFfO5J!qVKm4C(7^n$l}+X(XGQX8H@^7o9l6(w zH5?-(Rm`XNizeCN)6SaL_o&-bR#S-_`Y_a}QN5;DUI_hsZD&a(3_b{0Ga+23brpik zJdaR+rnfMOso?3s%TB=~qB~sqkrl2gyYAzR?LQiMwXBZ>dS>fvrR^zaN!kS%3!E^No_-gm?mw?qZFS6;BPVfVT;PU6~I%Zp=&X5Fk=f0>QC{ciIC4|Kg zQNCQK4nRRV_vMk2wRcD^MHxF>s>dtEXKMV=9|;2 zudClz)*mdv&<*Oi>1zQstn*tfL8Sm2jsiu7Qo}-95UA;O?41>8h?AhRQ<0(&GaIu8 z{e$Gn7zP}BlLLN9e8H(?o3l`J8bCm09`zzEK!I+6LRf;QLH3tEhtx~vJh--$F#`V8 zi5)lrr=3;y9c7+YQA}%=0=qja;uT32H6R|1e9!glipYS1`tnSHni^!}DuD@a@kv_~ zk-&XsR>#H8iN2N8G zbsT9E)U=hwO06dSyS7xzc_c?2>W1=5mHR?yXY9iGv2%Na>4i>R0bVrQNTe3slo*Y7 z0$y{(47QN)_mIO9d9^wJ5k50t;u-iOle^2oZ=1lIW+M}P1?jGSi_=7J`}-^*{^CY* z5Qja%db`KQb5x#s?pZX2n^4+cGuShoP`+qyiwf^vkV~qd%g5PN@`TVX#$fAwhk{`> z{ge;w!=0^Lq>V#To!ac~AQ( z?h~o3#OT?U-p*o9)~ZfO(tW6o;qgC`%FE=$V9JslP(m9BYmR?fN^PEwlpxrv_J{aq~wLM4Y8uN4R8OxxK$Pj%lP{ zODSc(K=q;A43L%mmX!g8As zsH*BtMrufUw4$cnPdL`!rmvOhYt4vf5?vI zVPh#BJEh-slwT2SR1xn%TpOL*ST{w1MM{F*&HZg};vl1|> z6L6Gc-@ypP9`X6&U>NPuSXK&O!WY< zzkbG*;_aZBs4qv5eGo6S2YMQt_N;dVAE%EJ11v$mkj>HO*k*-0hKM|l!cG?AJu~Ys2*47l`Q*@ z=!kv~Tb#%getl^!i?CLHIM}R&60*ikobUIycQ_S{P$OSZApetnnnnFjEJlZjDJqHu zQIUm9?YT)sK%^iPyuLHms4(|`GFQAFB6WE1+Bov&Cm`u^Czbz-jQ`y4+8OA1S1q!c z?J%;Bueovr2FYkdJ&)re(DvrF_5*SEou}stMicsv(%ODF{nRO%6GSJnY5N?Rp!mef zJhL7W{Wp!_0x0({&8pWsU1~r7QV6uhl#_Epcx4IeuG-Vko3sA$oFpS_q z$~Wq8AsV8=1d7?C%J`zj7Cl}O8w-F#2z#VaA@=`KdL>Khu$Xl>18!&gZQPsMg(~lI zWG~j#_Z9 z>#$unD1(O@Ti5ERby1->M8g;I5Q}ecqC>NGPG$wO_U|+_V35?*g*50N?HWM9HdpZ% z&U#CA7`A})0!Nh*2!Guqkw|4!>VA}$H?G*?s=;rdwOx;GwZlT2W*43W4<`7G4M%-8 z7n%xWUGp|$;9RSaHNbmqD2jj=^4i0I2`f^~RV<4_6$l{c8+G z3$L?_0;OaaqcR}KM;L|l8^;zip^|4v>#9yE7Lelz@LD2fFVIy>V#W;P6GVc}5w9?Z zdJ-d;krut+Fv3)UL6|R{MBX;CAdp=f41|r9`e>n!`eG(h6KLbS*h^v7q8Y!5*7_QA z#|znoOQr1OkS?WZd0a3)lnIm3DP*>Au@KINWFI-XQ}?O}>PmucrO69UK5Jx^wGm z_HKTeH}DA)m@45IdC`tzn@Kixvh=Wq7y-z1!NndP^n zc{_4EpT6dv+qmBlX+GO62ro!_lW$A`}x3JF0$H7V^#v_p!VS2n#Ve3d~ z>*D=Aca2wQr+uw`^W`1d8gEsXU7Zu^Zi_xz)|^g&bdeJtyjj;cyd4?sJO2`eo8O;O z;P;TX)Hstyh^~lKVW}Xa4$9z|LIxf7_aC@47!65#mU`h0OKZ7 z$WJ^6i>QP}=2R8}5pts%_r}laGS2B^4*p=|w*x0ZOr!KalCNV1C2icN00k&nmqE-D z0{JoCigHbr-mLdw3j?{c72o%nA9fB!XV-7YT=@&$Y^<%Zz z{^gXe?tZS}^&(SJ3d< z4*~qk(bA~-L|%PHUUwsPZpOtQnvhk9=UX=CHC`F>lZn_<8)<`LZ>5&0411vwwVFk{ z)hr}Z>s4RTaO=V*Fyb0Z%*{T<2Kv2c<@l_WfnK^F+Sdxnp8&4c!}R3vH%s4ya_H^0 zrSMyGy(f^@l-|eKT9iH(%}=D+yQ0s=rGsz-@-tLQ;YEL`3vf;!x8(5uORPVqx3u;3 zFu|`DYj1;1jYGbh0{l{fz%M0hwYu=b1IhNYUz*fltqHhIMmXLw#d&))L^(MmWB+&5 zy)Y(Y#%>$~@gT5fPX(zcCPY82uO*j=S65kK?*1jOeJU>Dlf2W>{_%8pg7Ysr+O)VZ z=Tq{@z@#6DQetA79O047lrpGDkGuW-E)-3E^Z*v*Vo@yMr|Rrb?>FeRo7@*;(9(Vr zB6)bIp(Ry1&~&^T;_`g+t`lT>`09bhB(Njw&Gwy68UDuu6{?=MX^!~ zNMH=~6$Kw2qjo3N)K(*r(4$+%K?l*ss!HD>v<43My_DIf`m4sf`=YlYqnGieqs6gN zk@uwG%P26~sm}b?EcQ}P4Q94bg&IQIQwKvcS`!0ZR8Zp2T$?P> zGX9kD;@#@GqL#B|<5hSXiIeG=3CvgABL6tf27v+Ex8?rZ8~wwIjyH8L5>RewT!bRAdWp<&@Ij=Z@ask= zt#3{<3gL-ApH2D+x;7>QK?RaK(6U;lR~%HP>#gvtSa2DQQ%nJEjPj^>C-aV}FD3rY z>k`w_Moyl91ms^7$7C?#k|1i6Sv852rSFtk2YLr92C8>2)lWqSyd0Y}sJ1!QQ1E>I z&7E)L>so6MrzhPSt>=xmMBkjLd;8ecXPL6)d)h1isfC&y62IkoFcS`EE3CTlpIi7B z5h2KFj^IzD3kgwEJ{Z~3U{w9y-6NtIftrj9$af1)$avTe5}{>>ig|U6GwE+OfKYD< zAZlR7Fw@P{oa*ZT;#n@&`KB)h>VF59$~f}Yl16t-KgW2=yq7~&0O?RGUy|1xy1}Vi zMOHAsQIQW?j1^|<8ljJN)5*DwwD?Q1#RC!H%a`14<8gQ(y~z9Ox?1jQ3uc2pIA~gf zVePzCeMm^{ni1ai%spXkx$J#@o=puIgS^mjcy?l=i^|Vn1ZzgUXhPmeASMk~Z%ftH z3yZpK0tq35Ti4Wa<+DUW|JymEpY!Ous1P;6XQO}Ej#agwf}n;5*Qboz%SV|^qzf7P zOcLZSu6UGV73f7#xznXk<<^Zg{WjNday?r|>eTMP>k2QEu_2d*!iWL2odLjlM=*HQ zy&kr~qH$>xIst#w*Fmtp3YU>vfJHtg zwCn|^m410T^%^`S3N$o2YnxS2+RbMle>nrha2D)wXqmPxNP_|UhGHnNNV_KL#U`*q zCyp2gaQyk6b*R_=H4!g7tvhdDK0m1KmcP8jcQd^>Ppv=2oxq$<4Y*?EGvR5&P%vTx zI$0}oV9lV@GfpmV&|957(hIbl4tXP_A{mE@x92#kyWU!C`xy_Q``FiyW15{s?{-Cx zY<%zk^gSM|(bd>uyZz04UlYFjC3^gR{l}NHvtj4-Q$f>)3)S;$9kZS^%GpVeQn}ba zgpwKi*Gz%Wf+H|=%tDcX#ah!1qOnAQ%K?%UzHt*HoTvj(5v7KAi2jyi6qBHY<$qg% zs>3L5gJ9Y^83*PU1p=ab2N_!o8BlIDNQzb3bBSE#jOi?smU06@XO!b~1m;xVQ%&({ zA^6Dd}O zQcsD&$B@pT4gC7guHBi~abn{j{ZC);praxs+=7xpi(!Gs4iDt?1hk`zew=_z zp{@}u{~9YF;xr&+2~e!D_YHYsT`5{HVW8t(9G?seg^P4mpu80?$O1--)zjVgoBYYJ zdXJw~yjB9;Lcq}!g6l*KGmuOKmPHL{pK56nln#k(p`>xZO+ zRCVvSz;2?#73EbJyc}Te+mr6PtI)k1X#K){Q;2rEHurPOt7ht_uXrh)P*U(g)2RM2 zMQ_@JDzspwoKI>wtwx0Q20WL>QcPsOjU2j3N<e*V5i=tocvi!9qC^~_o6 z#|wb(oug*-2e3CgD~^TE8X7kBz9DI!mkj9l8;iIMfGdb4MKRf0uTX{TrsUQ2#X?Mk z83RJW@-73}Y^4H5c{}c2$tu|51)P#KtvA?V&FMl8kw39(e8@Px0@|I0&rZpwUNhS_ zcSSBTv=$@Qet`MO1hyXfjJ*NX-kSvval4ma-NG;Pp1UEw{hHK~;=xrAPS@S>-xz|B zX^s&L3$$5{Sc2mpCVD|j*fWf2pugnbKnU+tP^t3*a3L85{18K#uY(%`(g;g3ZK03J zQjlMXLG0AlveWY(jQnxU-)<}to`si!W~|O}nF?6yZ!6DI@%HqXDqDG-@#Zc8}eY#*qXh;xHOc_<2MZwE=(5m;s+O)@)p*2Z{dOD zlwMg~H($KU1dsc$AKYwof64rUO4V}+f63l_F@Bg8eGz(C_;_hfU)Z5{DS9)*)nOgc zO1E#cLB9=wGDD=YIfU1*rP+vV*_p`4cSyi(UjAIyV?{Bf0*JR}nF=8W^JBA$px#OGPqnsW2R$D4XFu&6ROjFHj8X)4WpmBf;#y^u z#|p6l;}=kL?+Q1pL5G%?gg5gh_ZAr|FoYMK8w}16&|g2}UP(KmE;mU$tE;M9RON>d zZ&rQHtu%iVJMwZ~)tJ1q-h5SlC{%jN1&whk<*x0gv?xHN0}m$zCxwsUb3os36SP|H zflMF6!n;i8M$gl$uC%yF_tshseL2cl)Bz7Wg#Hg z|Mk@m+wUim8T+%-59wCVg6DC?DtiN)2t85|%Y#a@evy|}*GxKSSjnT(vyWG3DBI%% z_iBb`j|b8a3fzWt2Pu93H~{G;Z@$@_o7>NtC(i1gqh>X>e3NRz4=xg(A`WhHBI!&% z;={rOk9G(i&HPTo9SeI(gau9Ne@Bc}NX}$UZfPq{*TJ>7%UQ_*euh zy-jV2*D(5(OdV~cC=EAtTO+P)Kd@sPY_on=@Ey*u3{bA2f|NYxPDSbtJ%{`z%AXcdM|eoJZd z(i}uM=@sKSoB2@}7cG3l+0CU^Dvr2lBZY)ZHWM2fHMn?)il>M#5VIlSL~?}$Mr7As zzt4o;!|Y<*X-56olC1p0NIzx317X5)J~)?k{_$ep;ExkDAR>$$@Z8`iLM(vG8*K&C;5*Q77DH0I z#lFq!@N)7lkDE2b2H<_K*Z!{1X*1`rY94ERSDqR=EU-sn}#*E@DohRcefT>!wxk|Kk zBp9vDIeRYubR{R0jB#}ns$ymJ4bl~~b^Ce^?=DPE{+(8dmZaL4^7kfjM{V4cw4gPV zGkVg~X~1xO@V`mEb2701*z3B>?Ap-ZMkg=y(Os4)d9S=(j~eXfydbl=kUs)L zf$vZCT8iI{M0LgMasz!no7A6JRDR-$-9O9|ia7>PLr`j5P=Wnn?T2z;uZdjUwhE_M zhrW1sLIYC=WqUe3pM0KDdc z{$JTT=dy1`Hk~Ft?vd9--)9AxLJLF#KP@A@%pxUtZ$4wjj~7?e7EcNB6pa|`pk58z z%bv3F#|%xTSYg(pv!fx7?_l#V=?o77Yz%2YK%8IR^AGmF34Yu z(zNQ8vN@{)AL1Yopl^v@nCO}@9PY^%M4FW3?NbM-i4$U>X7`&}In{SYj=qhp^F_Zc zce4{bnPHZ+y7QO=e8Sh;+ITGPw(EWjNNro>?zTJWMP@4}kzKEs-4oo%bYaGSKpfQ~ z|8819kM2mzCcl9BgvS8(CTBdTdILEV|$R@v31brdWW(*mza6X>p+kv(z zo%RWS*m!7be=*p6A$WjoZtcHk8Q->xX?Y7*@|x)cDQ)h2cbTYIJN>vF2NguJR-L)6 z+-T$JxCQE@iEQRFGkfZ$P++CGzcZLaJgeId@ul<163Ji3^*d6F>dpjIvj11kH@zXq zLMbM@BuHQ|{<;;%X=*FK_=oZ*(idT>_Or7Db9V5Kj%G1kgp!VV#7|O(wL8O8iJoQN zu{e13F4_X!q+Yal&AH&t1F#OVthwKdM`NibOd&%#GY(+QH*uqD_#5C( z_}oD*P1~w|_f)pm^>A0vINvvHzKhqJ^{)o^mY~DjkFOy8aa;AA`$18@*_lWkWE*B= z)l=*J;C

=oEJrv|A?IsPu4S6qrQ_&a^#BCRu_pu$6Cr3U6(%9KvSt+?hKT&feDg zC0B&Kl7>m@aufA5B)eaYkreni!nrLi1IVPEhh~68xYG3hq|hkOpSp26r)U+x)U4b^ zI)1^XeaF;x>1UWX9!;!$rV&jTeSF|M&(7=9s(f)L&FXvm7syW8CjB(c0j2avWaSUQ z1L&q2oS3O5hMk-+6-4^UNkPeNy)_2II{WvDhx~NmGOfai_YioG65LQyX!Tfi{beIj-nyBVB>QpuZhlj=e@B?i;KL=rXQ|aMJF(93!zQ)QlYt z2nN9|e;fX?7>Wv}scoyY>t6ZWUz6ShUWLf^7kc$$B`KF3SQ@-!fQZTODITUmy%ZcD zJ1Gm-@j^NMeP1rS+wr>|wbqagoMK)c2R|ImwojnB6Lr7j){n}1McYD-M5*qvB0Itu zxYtFk4hjZ}ZCp!-;bc?h)k4b~!!eN=>p(IBJQ4VZh!Uxl8lr9nEALmt=L4%`f`1W$ zw;nh2V`*y=Zf}FP!3|w6&ql=zMg6IU{0;qoQT0_(aW=uW=rFjuyA#|31a}Yag9dk( zAcMQRySq#9;Dlho-3cVPb0_~3smLFh4P~coSkirT zA=C*azYQ;}8P+g6r0#_nGHw|(!t(oQT8kyRWSSi4I#{;EN&nW7()op7fO#7@MbdS9 z&yG=p`P*Odm)l*%;p%DJ5-HbtSuxW!W-!ZNXVoDa_QH=#eqMHvCdaXiaL=>+rF*?= zEnKs}oh=OcfE1C;n!|}phn;spcet^c!$6~ zQzH3_@0k7io4`y-E8rKqxE(7wvb{(NmLR9_wx|*WpFB((4@@Hy0*7-yHUzYe!(a=O z3Qoem2_wweE$UXBk(fk^n&_G)Er){vtr2v3YZ1%~zXqYk#w>j_-R;BqE(@abbrg@x zl-fw0j+8b0O(T1PK(Z)O!veP3K__=_a$`J#^N!t>Q!HVn#i;}B8I70ogIytE=q3B? zeWuvz;=*-66F2)H&}glrH`jfCeP8_Zp^RT{_g!lpA*lTz3;WBvcfr?(@UIsE0}HkR zN9gNYFTc0C@AT7tzv;LvYJ^^}Q23gW`6X%SyrGtN^p-boJH>Ws(SkQ*K3+fFx$T4p6KB98-h`~VwO$RmSuGte#xjn z5B^zGud5N$xX^S;OyGxtIfDfSnvj|&UGz{Y^B<#WDl@e?kWCgn1Md1zn_;FSg4fgs zRzxR{IjJzTryzCTYeZpS@Sz-<5T_%xZquW>#q-xK4_#2PCZ&vO)39%4*rJJ~j7}4O z$*b-r@x~vY3o_5{=I$;3Z&Mq+okoyQ%;`s)o*zv9(?a=%@$1$%_ixY7U(bymZR`%d|WHYmJ| zLDidzgal_)A$C&e@d;IO?TZo5gDPvA#q(u<{o*W9F7{SvR|4ZkA=-t#sKCHDvqz@D zR!a<_y_os++)Fp#`vioIt&R7-dl#!b@3J=)J!y@#CI^_`pI~qD?)$c0$IrI*11?*? z?rz?Bz8{PH9Y0Q2fWI$~6AtI4pF*^FSw%~hn_C}s%fcC9SA!ggT^kn2Kk*mnJ8O%k zqoQOmY_g0?Xo-$pO9CM|KHgrG4s?j(H8CiJWlDoH1;hEC0w^!n zbuivjxHrcj3IS2oA_yn zk#T=kr~LrWmxq(@6DG+aI+Ls{IKFYX#OG=J3L!*XINyKlUd#2j^_)2P@S(~<*$)Qa zz^m|i?NC2)>*4U5Tm9?Ma_9T=vg73YI_n0Sfv8j#c9qRzLCeto+(-n6p&I&n{(O_V zN_ndDXHv$3>yisPDK{)l7XJQc1;+FsDdkMDNn7iM8WA>$V4|o%vC%&b$g+3vccKJj zZnRl35v-D4sn`X~62bmuD0NJ;0FnhOQ3y>+Eg|R+R{K!_T9?e3lkFc#4WX~Mss(-H z7!+!({E(;K#s!7i{W80;OO{^nb_Zq7&r;-PspZg$Xki}r zhg)u(j^=sWuaLnC&2{^bRswOyhrUVD?)rz#l1HoPI`?VYj(L@j)1=+&4=FekAJK+> z&n^bsHRrn?1>EdiOgla*+?P8(aoy+L`}Mz0hQBTPzkCwe`B(S$X4(}_D$H2U!ANE; zipeK6>+*ZdNQlAe368d%44h#Ole7{g9LDByf+I9XbH*$qrOJlmurgN;S^qrY=vAR7v*x^WRJ?L#cOwYw!W)s^PX z(f8eOp=r`PDOgjnOnjs;lo-SSs_B!4xCa+@Suz#$JdQ`A#wIX#==H|v$F_Jkzwd`q z+u(fZAts*3-5M^gyLXJ-3=d_py0YVtW1mfkcM~_&aSL`I?~LSgZn-J?yg<8evGF0Y zb7b0K_u{eC)BV10S$IA7!mF+ODs>j;I!@*Y0%adRWN!U>^meSWxoz|w_R00qZ`n7y ze$^-@HW*;oKhzI1y9(Ni{h6Vhhek(L3|GIs+vOejLS5tSH%mMcV)00Q35DiTv9!q; zwklCULhy5*;vR+hg2vjB5en}Vf9gPhMnV*cjWO9TMHEj8WUIwlVOk5C*0wX7ew|ZY zOQ_;+0{qx2JN(Aw=IQj~VDT^R&oWE^R+y+XJgdTgTOrR}U~T1^6lySqn?gwgH>XRd zhziSfK=6A)n%g=t8nawIS;+P1lN`6wm4z4eh=$h{%VR`2K4sB-c?xRYthR*5t|EyP z;RJ=PqG0DE-cfU%AFXG|nep<*?jfH?`?n4Ibyi2`&z`lj-C^Amy4oJvJ-fIYi1Y>y zVDd`aXXKJM2zhTu;M7aElL;_ps; zX+7%ZXG7pkhAUM>yKJK^XmSVQE6Vr%6?cRk& z>>j=F1S$6F%n>h39E*}GN8^Rh$48l2t-lDtP*6*WZ?-4UPMgMv;SSYByt`K z;2}`e*qY~sUdVNMj?dM)ovi4Wmp3GuE8+ZiDwusL6q<%zkU$*Yhpj0UNp9Z_s1Igr z%8k6z)?fCcSPNhTztzE7RRrWzVGlzuHbQ*?fRNR`?b867hDjg|Q=mi+DeNnPY$DHE zh~u;7#=Od>4a476R_^Z(mq%aUTGx5%19aiNcG5#l);I`xvv^l$spupz9T^AFDS zBRoLpmUFRoR`DgJiRfr-o8PWaqP#g6=(0kTAPSjUk7Vm21zen3!?RX+3!d~<1TiBF zt(+6}K;a5>{$nC7Ygws#b4>N3E$Zq^oMZezmie?$cISm$E=ETWNB6AsU7vD-D=A(z=mJX*F-pdL5<65}p3~;f z)Fy~iB+8);C4k5f-Le+dcNYp}_J!EW<})7dHPfC8tY`8u#KER!1(;EA^T|s>vV1u| zC&I>xW?5^7dR9_t>qRcY(`bL+siw3Ut-R1L-Q+*K?KL~iWi5<$FvuNhfenc8B#_<; ziD*HTfJV;@rj{0&KE(=5S&_(xBh(;tcb=|A?nOiwj$o%}{rt60zd`N7H+gP9Bc~mG z0ACM18LFpyACjW8hg`mzI6UfYE^WON)(^R86V-DCLV&APVd+XWE}c_RR2 z^0N6)ngs6?b<$+RFv(-SkX0AZF+nXT8WmVkNlc@e1hY%Q+VRsV1uMoQv_U-c7Griid?*G^l{KgUH14-&ti zNpIcmUpAPSvXC@XC^1ZLzx-n23Ptg}S!(S+B2x{lU@1T1vam3>Q`6N)F86D~Ap)2p z(=y_pUcat4_ZQXLqy znxQDm9i+(egLJB&djD9BvTz&e0j4>@%>-nE0H8ov;?{9+nuo zDh=nQK4(f+12J%=`F<0Z<3ftSSG#+pr)5@upekYPiD7(XX%ElC~Et&$fXqxc_;D%e(p zQTWqg<2jgVFu}|?nPEREx~3p#H02sgF@FET`Jl3wLz;6L(w=-yfJw;s=w%T%JpW*h zw~`HQm4UjE>7pKLcmX=IRjM;_F%|qvG}{R8_9(V&(4W&_X#~q_972GZi*0_-X;FF@ zs8Zu&;nU)gQpD!Vf)T z=$CpWN#^~42{fKKZNfLrO=P-?_EWe7Exk|}1Jayj_6Ake)HhtjBHwtU`94-QLQrZA z6D28(aZ%{@0#Chm&L5&Dl-U39xrdaVu?rIc%Pf-tQI2sjxXc2pxD~u z3X1gVSISsr;J0eoKEyEYvLHl+kO}P$)rHf++u34OQc{|i!hFO1u$sbd*kB>J!d&9IJj|_3Rg?B0qVvJ5_fxPR zk|H9H=9${ol7X2Fr*q~N^@49`$c4P-s3!7RA7}AX%oi{xvw^Rgq*O0v3-h;i2|~=P zrNSY_H^EVFCz{V|lc6uB?QHIROg@W`-D&a1G45&-sc{o=@mzm#&(sh(4B9JT%1<_n zNjj@(ZLm2XV%E~v37}{KmkUFN50pB%2|E0y5eij1=^=3b_(0^pnsKdSpnejuy(73Q zv38{+ekz=oplUu?1X^jWkn#Qr5(!hfd@!e?oY5`?5=71miYxN!e*ThBVj!IM0%!46x0dH$}r=WX{3B-eb1NgZ| zW`@>{{xl8EXIqONT7blL!q zS{+c64aNYBvj?x{Lm6`!b@k4;(HqEN+_8~$ZG1R&iat&hy@ z_%QoWW4}Z<+&Ol;IPZ`Q^AJg$Sdl-R4cd@uX4c05anF8$EPGMUlW~IH}CC)B% zNcHS%qpFZlCSY=)O7KI1Z0zkDtY99XfRT%V$iKwB7T`dAdmN6JbxzdmPM3NH?FCV} z?T`SI9*bJR%wCm1mD<`=($wRJJ+7{INg-bHhk`<8XOzEKcH1EKHUegxTr>6#NQJG) z>Ub`&fiG2;MyFq`(#VpVo<*Sy*e%>()wEZv7b}qdSfFxnSTk;y@S)3KS!dKyFUPi5 zC-gg$Edb&Xc@{i+*Q-*HBPvQsoB3pnY}qGS$5+L3BiP&315Cc0)D{abLbWo=yIiA8WE~#LPAAAwYd-b-$cy< zwIG`YQ3E7wK3(xRB9y=E?21HowAzRxk_0#sBkLaxhiC`;bJM=+nBsOjz`MPn$i~#b z*g|Y4%>Avjajo45v<}iy|b9)y5b)as)GxGtS|*pbRk-4=x17JU32Lh_hrYVxTX}vpO5GM z(EV-~ZjQI};Z@~{6H*XSr)>cKa`0?7(<_>(s|;|HBuspNvD$}r&B$?ASRo^ApdO}!lgD=&h#o}&Yt1yuaJiWju zC@dV|2EpWKPzx5Xt{(JjgYltrAi}5ec~alUpK&F>d@G;!$xnOwu~{wM^DFF_gzFcs zgrzDWAGVHZV}`@EAyK)}ZCXxVeaxC}ib193T&(z<`i@Y^4>GqAc@t#!1b$8#u0)Wj zo;G|7<{Ky9=~lM;uM~QLX+1; z;Lkxradd`3=@BZ`ZERObt5xxWYO7t^T}d?|NMh2LgNJ@9>Y{KR9*ad|`=r0NA}uz8Y}mMj+VyHFM0OBQs!HeCMr z5bL!IX~^ZGTaNPD}~}^HXSV*@MM1K;2UA;_?GRg2u0XlVhQwb@Vi2Y$|)PaOv?h zKl(XXnJF6hrWH8pTP`2B2~qFANK^&X5Kw}5%Rm3AJIE9;B>NspWB^$0<{F4IkFZXF z(gwGNrih`Mp_{6<5q$i=pTQY}h_<>2fiGvm&S>NZNt*M-3GkveIG}UAE{ULRG0%I= zJMtEf`n6dLR>OzJ72yWr$PI(jjME>dPAHWcxx8QA=uDJ#>_Fau|1HAA8E#loix)9a z)d4r-XOmW@qa%8Uy^7(ZDEi7Y+=0I?aF@P9d%2vMCSa8 z%}x*2Z-gh>!hi_wi2ok^RsoY18l>uf+%87=Z7O>;<{1ikSksw?|BHTxxA!5q?Ujs> zckgv21I=F|*djHg%um7nAN?vOJ1L{vFy+0mK&+f$8Di~U)NlV|Zsv`^rnUu+8rlSL z=|S44n?UACz}f3;a6JDQlN+!P9Zx5Wy~gIvBW}?uJgTn zG4d64;POLU4bg~r%Lvib7St4CH0v+e7)O94LQucf&Yt}UubHm#8enX>UzA3O7y~$X ziZtvykZ4la#(sS@g=qgQ%xO3J+|04zMZpwHoc24A-6vss@89t_{g88kcG!?@&qr)x zMsUfR4}z0RWAIGM5Jag|zp5mg^q-B2_8L=vT0?7}aB5I>{m~20Z5zWDVv1x3dZA=4 z-sFJF{7Io3|4Pc@SYz4t`_7O^TQ9;>N9|f(P2Wh(F4M_Mq zWio&;!(mR5|JnGZwT%CtjY@06KIUQ1&6K#)gw&y`Wc#Q|<9dQ^(LcX7v9J`7c}&V| z{7v8w5KD7zmNM?%6w79(i0Y5{5IqafaWAfu@ud!?RUpVP=M2Y0-OFidSiMf$VQk7G zb%>Vt>q>RXi>Z}FoLjlp6;gi?(`GDTr6-?}X=qfGn*NcSDA=ke?0AVZk*2S0O)AJ- z1@A#oIR2b5QoWem8YVz#W^4)aK@KKq zl1>b9EY@sTd>>|WoD$pO$tvgG>?D(C@Tu8~2m)Ev4O8BRIIpAWC>4A~!#CQ* z8qw!631t=>m2AQiyK%*7hXrc1(|ip{(__+lSL*&H@3LtwC3zHTr~rOjSI8i}5Qnmi zg(JV+GO0DRySB1rukLI_-Rt(Wc7FG~G6PNRQHHTH<9enu)+W(*^Inr(nXQM4H#4G!B*dN9v8 zPrb7D53buz;uh0Mj-sZ`9q~Ur$i!w72`*-3H~X5G7&VK7jj7i0nL$QT+3EWfT6b?= z9TB8N$!H_g&kK!L!QOQZ`{8&PG3^x$-^vB zj$DES*X^h=c!h$6%`?{B=Z8{M_$PpJ%_q#9v1GZ=CyORw4V%5hsZU*}oOs8k(DF6q zw4nnVq+rl%3xlh;fu2-wGXPYXlEdJ;XNMA+n=D$_0Ui{zP!iVh7oZIKfRMYVVvZ&A zoy}J%^eADc^Ds68d$-q4HUv>|J)gd85kCfzwqkgWDO$OZ24|UFi_`DjMv)orpXdV*ca@i z1a?O*#x@gyM_`C1%Q<26?qSj)cm$8PKMA{HJ)e2!n(6z9&`;t<7hVi#F$32h@QJYR zfq2RPs>X}(bNx3UN7V!ta+Da#st_U}=rPlapkygn(qSAISZxz3b3#Sd=!V%vb#tb< zjo`Y3{@GL=WqB?hN0VJCcAs3`cup#74lcu@_14Q@xU)oG&#u%rG_JG;zXz3CS6U4_ zXxqbtcH#~aUHAO58N{9hcv@qG;e(VT6u4--zKIg3ogwBrbR=M!to*O!A1Sl6q0eUttsn4#oegTUa1v1{$S~CDD ziYVKkkfT>3r=_9Qj#3nqN%c>>?kZe|bb$sdkmV37AkXwdE7OPt00heC*sp{6wETjaMJ?g**E5IN&ZxO$-tI|Kd*52I%I281Bs3vx-oP1&EOAj%Lq zM@33H2nphlbXN_bhti!Qb!wxNkZN34ABU(}aLaf>1=y+3;^^K^FCKXiHg7$jxp!|? z{jBOgJ>K<5_qsqq>oOUlV0nyEu#{vsr2E?CD|~RmGdpHbyRitiLQ#;1H*TX)R8R0f z1UD(}!e0^to7d0*VrCm9ubFX^yM|xs$OXTxaB@KZLh$=&`gXpW$H9yXn6j8g9J1l_ zy+sUs<^nc5B496lb;H}sa48x5YUx=a#uA!ien40G7c3yGe1r_SDNPBae}lXxWNL&e z1HNKj_z##oGZv0jT^5KeANqeY;(G(M`_*H2T$`i4c$wU#vtpxlrJ_nW0T*IXWtcwK zA^kRLtm-N4uWs$l`Xin^^(~TJ3}e)#3HftVjXY6BhbIOOjJpMd#8?#)=0Tyl`oyAA zyz=gdhpb{$9N!i!hM$4}>S;ZnNMmKDhMy{(Ml7x3+p@uiy8nVTn29Ev~@j9 z?HBDPQ72%@0u7jGLZGHq#Z3p==|`@P9!D(@c$ULMA#FZ3>>WQ=<)t4LNX-eX=Iu|X z2Qq70NNc2-MnoOK1dA8c!H^0-{5$j+4x-)93WwSvq@(&H(DeukcB6lRKrBNVbJ%VL zX1B?j&0bmO0whtx4((JA0JWi-6p-k>|lS-$tnjTDjGpe@M4&IOD}~! zMm_b!Ics{-CccWCD{p<6pIQi+RvcFl|0uYP)TQ%*OD*!EDZlQRaeA4R#4VI*?Iq@; z3aeC&L&GrZBe)1YJ*D$;713@e>z#z+!;myQ_~bSt;TX%bWmh1m0HdOsCLV<dBf?Dw#p)^lar>q)?^`R-rm_FP-t*}xRHz)=*tUiwnf4= zXMmK1FmugRJAxmemy8o~AZm=y;!bTBsQUXreep*?5tZ>|?&I(Ik##Bx7K4^Ykf%sK zLz4UId9-($AC12H1DlrY9s=Q=2(_qBNKga zargxp2T?R?`W%(Q!SbRE`}((1u}lHRpUuFA7g0;>{mMnzk!DyiN>%N|n3$e9PWw`z z>}N@pF#0_*Mx-6gGJ_*7hJ7*M4`>QjN+5Cz&wQHFXL-}ZpNC+%@oY14dZ>#Him5UQ zMHaDC($Fg`7(()XA1`k--py0%zQ8&a+R1;daXgLQ$j~yYBE36b^3jOG zVOV`S9*Atmr@SJ{eIz#JV%VGGez+h#7L2m3G76^_R^M#XErA%utO=Vh&3v&QDC($^kPSMpS2v!Xr(qKAEqE=)9;_V8gM>jf=dyTmwO5) zpKBlFNdhh;zY`!eZcIy2jc10z>7w9c*BzunhHYe#;w|vtWK}3`v07O0v!m6$>AZJ$ z7*L=7l2|e|l$kn0Dv=74#)yZi~n2n4@^rJMM z12HvSvuG4owu^JV5T>PusjEb&*u&R@T`tLO10X=eoZC%%5HAg^zoH>lY>iFQOwuVsAlFOic!r zF?<7IIr6cv-lRYb18Ncr)~{$UWAQoc_Jf4R3DAdIn1nPUU-&) z%uCyL8+B4Mc&+%MF?#FY6IP4J^`3-Ub&1A7rxYmO^OMV*d@v%^6e#}FE`oigq>P1R z+HfUq(Iif1rzTQLx^6BWSssdJTz4_l%|3>5c>WiQtL@v)?9hLdpuvl%D3Hu(q~47x zRZ4y?iR(rT_a`k7IKbobIiiMRv~DEe8B$hK85gx1pjm^L8kZL(VF;5bLopHXEWD|4 zYEPft_;GfHsHD}_$NOVIv_@94(>zl2!eE~ZB^^Us^qZ!?B-O9tpT$iG8v^i>w>Jvc zplof1G}4dDYWCHlsf}y#*CW`!7KwhtR)0@Joj+GA-~{SlDgpi8LmR4qfy$3Uh<;i&dZuu3>tSd2Hsn9uON3pdJ+(I+4{2!2?nDe{)Em zYmz!hc{0ctuw!erFvT@xFzCMNh(IvRrh>?D4J)K4SW04f&$avBc1HdDoj<8dl1wRD z^_8fX^mD981=8Ts$Ne_pkXclq#A8HU%|04KA(=j$WXklKj=lVFe|njDj-DY;*XYkS zw>G;|hTUzOpVf%pv41Tga6tc=hWMiOUo8wUf(9&3<%EsvSHylQK$1%)Qb|^mEn?T@ z)T9)lxn+Plqufle$kZNSqLkjjUqlpfO-f89zEe%EZHY6lNAGAO*JEYAd0+}O z!C+YZ$R$9?=dK5b(bCL<-r2gU#+aNQQrFnSn#-!cSfQ0{q|{*}MC_GM2lY*iv6`H>A{ByABSdW}k<9I4c#xtw=T>-=!HsdYib&Fx(w-VpKRi$>6+DEA`7&Qcd`B zH>ERZPFzc!>CtbmUp-$4y73-4M^lx=w4Y;gf&|mAF&eSFkt6X6$ow9mgR{q48w|llTzbkDq}O&Qb}OSqg=hbqAYry5`YZ_jpj6~ofEDL%_|FZc z5I1lgNI^jTidkL@q?<0dyVBqy^U&4J&Fmou{Y2I3?W>UHFI(GA750U&xZV8#PHT7zuFJ)+wt5#-93_-_7ikKN3oCBFjj!I9fU~1W}CmcuFitS$& zdq48k=_h$Y&u9#^~(Yd!jsCl1K=TEnjrR> zQ0S1QNUO*9F(W_hx}p6|$UfoPV~eAJZ76NFm`q{m)`lD)oxGt#;ReKhN4%c;Nb4LL zqg1)ch@fT&f4UJw~n{B z+nO#el5I&L4i_~%wLw@vR%r7Yaru6@8H!|s*2Ona!J)C>DZ)q|$xvVcuMdxtWCV}H z=Un2!kR7S@wfhH&uG1SuO??THP`MX7U%(-!wNwU5LT{}!PGnjS63x?0qg}>hr}{q z!ddbs$%S^tX68-t-p~ed1JVg{x9aF0*f(F?Hs0v|WFXhO2l( zBC5xWa{qR3e_-$|IW>e_%Jm>JZ5yH8q<2axWKBU=()!&e#571sttps2)377Z`UjXI zS{6nDC3=Pekt;rPomkP92x%=@Qv+WEQ{LK#OlthfJb3bZ1~e=qvulSvH1@BE_AiX* z@)fclv7OG5v|+v#O@gm*kEmmyjM>H8`UTMN1lo<=nzO5mQ3-0r_A)SG`A)4hgLNrt zE}M{q%-CBix4G28&QQi9JdpG~M(uOk#gM>$Rcv`N`*lsJ?LwgU;~`i&)`45b7e@LL zL7E#ybHeBNXlBVGEaT z4OZ5St?28-2#8odCbaw{1fCp2@^9l99`yjeV3&^6&f1ZBEW5MJ{Py%ch%derIJqm4|3dX< zT*ve4e)bSN=xvW7K)MKI*E?_W#6r-;5`w_rz%=B5l6ZE4ya!jjG1x&DCfldb5VlR! zuwm5=45osE!px-91767yIJ^~HcYi1PQKlhPLorB#eDcal25+pw6ccPN7m6^~ub61V z9?BPP<&%st*ify7Pva1!AJM7WFIW{?R2Dj|&q1HFw4COiqul?{JCHH+R8hOKXEJgr~D+CPk@>Op9dA0@hVf(nez}3O-YOcU}=%1F_&Y6 z_?g!HGDMU#<*UcQwWY1T>_PM|IdlHwC3kh{bj+G=dHzWYWG<@FF4nZH{&l6sqB`ZO z8g1#8EP|@)I!I%eDa!y0sjp3g08&DQO)OX_ z$FLCne-R6!JfakRhJRsaA4{B$8;?`QVZ5AxAi!`QKht9-rWULH*;VpM$RRTWRB z)eL+TMZ*ZQu8aQnkcO=?hQLUgux)KBkEA&sb!h5%dBS;`)F7cOZpcGqmhR8xpp30_ z3DEy&{<48Qp5Q3}5KHIHw$$AkTEcclUaRwAYf1WtRC<~)t6qh&!)BO3q0u|u23>)2 z|8ehN1RX0b^{6W9#|Kg!Ytq8-g)yYPTIH6Dw4!8K;bCGSks7a*dL0<#Mkz8n{MkPn zR4Vu&kV%TnoUP@WD#73K^&kH?O)WdA)@{Sz-_# zn9ez)Bo)LhVd4JL!vE@54AlKzQWB^%OU`#m0g@>*T8@j#_+SQE&CUxMUzk12@ql#p zLXqP~0)a4_tY0G_K7B=A(fQvL79=u%a1&c!!xe*pa+oao6GlaWa){iCK%7SK=bA;M#mt)q zxD79R^%x4A)Y5Yku)-2&@WWEM9-oO|3V4glh4DXgkrv)#yXP0+P_X~b&%T0bX}ftT z`ceV6$W#cmn2Gy?UsGq+Qe|PL(r!oAxlc*clzqDvH$%H9@;n z7(X8x*6w!Qdnw&30F2Nz@y&m66GKN@jo{N`PX$ zC2)lgiKQ155@bN=m7F;?<({<2Sra*xgm#TLg_wRGu(wI4DiDNt34^W96iu|FQLob?j#N1OPKYajF> zKTs&r=~}!2q5bY6IFl@@@_dp?7~?{}xR%}^7=Ad7CF%R=IE2tFDhkwCIdVq&;E(`E zF=?uW{mU{1OSZZ+yD9oT09i#>hhwo9OVkZUfy8jKlJ9n`ABBy;JbrAO^Maz6 zgAzlQr7}mU@3f<(r2eP@PQ$I=M6%{uJGfl0IM)C$PSE9(0FB_AdO{| zEa|r3{IN;c8+hWUHs%n=Gerh4vu1rgXoEZ1qp*V^n9qOe%eMH?gP;+LY@!tsm->nB zSRh8kXbj9z)lr5trk*UCG0|AO-S~N?C(*gn!;Sqj1c>vI=(jT!tbH7Wwl`>2ZGP?K z7$NUkYXRTdj;lb>bPKrI)eg9&5^>ypmnw74%vnA`Gj+Q z@=^cuhV0n79b>Yyjoj!nlT)F?{V+;@h@{*r0)aIL8`~ap#9}tVSA%69n9wzxl(3}6 zO$~mFBi{a^q9|PNOUjOeyHg}+pRrf2n6!t;7WqO_%v@;jN*g#@T(;-N5g9#3FhH4`ksWFF-Y%{D=W`*MGl5c*COO=cL;0(?hd%AypV%_;%l}+XCesw zX9F6XnYNS&g5(&K+`f*#aVOoJEMAWVy#&IkAEGv3{~Znqd|_BfsGw^9k)&gJh#g~$ zNYy1P0n1+Jh9TJ+f7>dS=EE6Od`GH<<$)H82ANy>Z~j>k$*VwInGU&U#6aSr-ynQE z(usw?u0;W8wR4y!b|~m9b}K$&FSPI!*s{BS46lI3x!$8E(?=O*7s>fAE#K2OaUz0h zCAk8_*az$qW zQs)(Cp&l%OZQ)S;yELL`=+|LmIq`?oF=InL1B0LOJQOPh-&*h!AQUfw2MEfd_C*TeM6&9;v2-QaG>;BVcv!HxQ}Enuqr*5A2xLA+_!sBBL%F zx$2!e?fyJ5b!cfGM*W(&17yB~DSVZ*OhQwIfK7tyV=CXmepG<~D6|a?6|JkAfpd}l zT>-gwiy>4HXa6Px=xChTpp1rcU%cBZK}-YUY*GaWM& zTo)qDhy(wMhT9q*4g_rdtN)TYvX`}VOgrbd@wQCOTIQ-;zK8uQr< z+4DirzZiwBtijq2n?0|8_&z(*`a1eMxVeHRfuBiX|IwDjV=cIt=}OpXI}kh9JB}jQ z!n7i;4MyGq%2xo&`VrC~r}dx4a*1YxR!ymxntK2<{>pD>In&I}#I=J2h+yW>K**qt z8Kxc)Z*rT8dY^m3WDf@8L+ZYrfs2z*Fa80BoST0jY9;Yr`+LQxeJQx313to2#1{^p zkK&#)3i;Scm3QC#j)yKT?tPr1C?_cB1Vg+w&$-HvjxyJPUrGOHid;kH7=PR7{q}O< zEsFEl^enW{d-+Np)6-(-?&#Dz>*?q}dD%6u{4o_K%KZ%sCx_ zp=yw1pMhcD%0jeEtQ4&_)sjrVwq+4aANvOr{cFT?Bl+W-T&FF~#@{;Q69_S|*jCmt zD-7Ff=Q?23|3G^k+p_1owqLF9*7Mc#-xxlVjxd~vZ{KOhhUc21XEd~KfSs`lf6!JQ zBV@M(Z|9p;_NM#}#Huh4Bo%mYfsnc^%ufW_4H4t;xM~PKe;=t%E3x~LsV<^cc!8M3 zK(9o%vV3o>L*d0`Jw-7sp$FSyC!}s7AEIidjy&4O(;BO<8(SBE{TwGFvM&5wo)6G| z3IF;ceIJPMRpFjawSH+LP#2P~c+UE+FTTE28zU`0y`lS!ZJc`C?|K#O1+=hnFe?xh zma{;lf$FdPzCAI2y6k(Z?h`_fpt9OJ5xFqD3^3j=wWxj;-g>P#ObC20mCb&Qu@YH+ zJ?08XivUz#QXkW?W3#&kif-47i_vLuFk2YoxyKS{L3)<^WPN*T@lLakndK@oTkgBJ zj!&T%)Z_x5%T3vNf8hdNaX+{jyS_j7*R*#IrFVMvp7ja_jJN03aI#G#*kLAF!BR4q zA^+Pzz#|0xa(6g`)?I6$s&7KaqvW)I;*$8(+bcrtV2&07q0&lAAtmyRHfclBOS~-P zKZ<>(0`d_%3!#XSRTKbJ^TLq2<-cJ%%G=-|vAEFAv^uHZ;lqh*Q#sjwKkWGq-oB=W zj4coTKc3z)pslWn7A{gKUI?zmTio4Aai=X%yrnn<32vom@Z#?7F2SL=l;AGKg1g(7 z=e_rSKl3BWIkRVG&#blf>`+90yugD3`||ID5E*oHNy{fwp-^PcMJ6$IJy8grc@ewY zT;;Rw>B1IH z9-YbZ9xcftX>XP6k%X8$lLh+~W)fo+Vaj$%<^Od%K1fc3|Nt6tXLzcQF2|HFWH(cc!p0Sk3{9%BSVu814{=2J^+ zE<}%H%dmz793L1xD7npvu1S+b<$_)w+?qM>V;|&K*R#U~rnz6O}ub)Co%?};?&K_wQ2H#QvZ+l5|5hPw{ZwY@RfuOHmvKUOhQn92Ji*~2X+ zfA+aY56pMx{DCe~7<}FOY|#H+5^>?J+XyxCEB*Qq582#6?`r#mPejcIMcjsZT+tc` zS-IOmh2{}?>K!dR^@j#g3qifM+b=&c(|soF7D920sZqU>1&PJrv1k)g=ru2W+Kk)J zIjrKI^dki5D;DAxAC6(s_x+m4(C70Jzh0jQw}Q3f<)^7#OJ1XrnDyS()0CVX`6Alh z@{9#{`hLa=Cb8D&qij*HK#J}_49fNZdr{OwpE_A-jW>jlllt{$Fw9#Y{A%Nk>q9n68Hf#Ut zQHGHg;UWr8jc}wdN$<)TB~YZ z!7Y36%gc~Yf)ryCHt4G zGPq>jgBW5^hO@W1+x3D^=E9D0&Te|TLZD}_ ziO0~!YNzc|2f&?aZP?-y73h&a zOTY?h&O@9Ow=}Xf{5)vx+97Qqh2Q!v(Bg;J_}%15I*ga^+kTaX)EfRVJ5~Zk4YfW< zYeS_}-D%C?M(LzB@Q-EED8koofFCq4`K-dRAeEq;>!;jCrN)4&q=YXiwUrOKWeQQq zu9^dNn`6+!+jY_RG%C6wPZH&PTGu8E^8hD^?cq zSZkWc5-btwWSoD^N6jZUy_wmTu%uc&mr=u8y9N^&W@VKs*SBfJgq`WkcbSBJq&Y|m zv$J|}!IL^PwWNbZ?$Z&RuYJ+C$920t!LU=82tK$B=Tr|KX}t*qb=*ZQsVQDo8fq%j z{h|KDiu%sm>XlaU`tP>Yk`W$WPToE_S!;k{-bTIIAmSaH-oD@NDnWfi$8oY-uS7d3 z*P+J$fq9|e6F0bqm|>r~$r*Fb??XZT??}1g!QW}?yt}-k zCd7Wr1t*vWrkce|UFkh0elHU{isf~E^Op=(yg zOrr4u1%LB3ZcC_3v)NliG8~bE^_40K)d&|W#+kM04|9{ zPIfu|$j)O(ka+t)CaAZs+%RFDkrD-#14%%u(Dz&9`utq4m5B*_7op5Q%}SerXOAoa zMo`ExYg}R18FQ94TBaW0f)XhWu5_(t!iDpRAp@w|{CvJlIDlU*r3RPY9zFjO&7hcr z%0jpEF}Nu7-6SL1`pvp>uMdigJxS%nUNGX(QT788bTg0%n;(j$NTeBC5O>q){);Ct zlvV4`-EjM-{JoDYDI?YxB!iv9GQ0PPaHNn?#59!cgn_W=UFB_+p|2~v$X-T&6v2|u zmstLg*A-gZlXAgxeH$DTx@s~fQZ8`@)``Km{o(T;H}@j|{jL?1B8$K#%4@Cd1xtWo zpTrf~r>boDJDYyTVrOm2XbVW{gny~t%p3Kh5*cz96j|-;+#fFW7M}=cfl{BocP7(K z6O_u?Lf+Ji0!fQsx#1BVTg$m6&w!~?;O6TQd6N-FyljQCpv=F^4Fz3<0oB%wP$&|? zW*_@bG$08k&RV@2Y@fU2@It=U|D@hsdiLC`rB}is$KP-Nv$t=AWmzc^{|Z{MOLnS!zW zxhuzoXnP>%!H5*oc4OS~6$CK+lj)51IgXw+O4(;AaPv&;6F@{mjFozCAx5uzIeCkR z_V(>tK}w-)%D#G@j~>l1DPh$dqAdHAnQ)%*w+gXv^DRP&{o=P~Td#*3`K0wc-h}t_a#7Q9$wa3O@ znFzqV-#@^AThiD6nT+|(t$8fw~>eQP_(|2^}& z&^WmH-dmWRZo8>SK#qFI@NI#zPam$3)*0luBLv{L3DjF=Ue@wzwKJ&_KalNhcMZvK zD@UOK8K4MM*5H4t>cD?|_InAS@qNVbz4d>5IJ3Atyy)X{S!C0_o@w%b%C2m-K)ZhA zii7hkV)m^Z%mwhz8St9f6Url%JsZ9bm$;AUhBlw}d4`V(2H7>146VC=G#;2U_CuF^ zdc;DZL&;kk9sKdJvzIsx6g+X_?DKThMEm4Rp}*++U^j%Auts#ZuN$iKe3xXrQC8J) zwx8Sc9C_n!xPSCUbb5t)f3^ZgG`17$=iOpP#%9z;*un53@$#*v?$1=`%QI`P^vIl{ z8!qiy~^#{%d?cT1yXrF z(Cx4IzD>~S1CeCU`SzO4)o=efBQLvoySa=XF$zmOP7yCMQ7)^EPuE+`rJ5OYgukC2 z*8EO4LTKc-OuI!6%5f^b3WW4WUI(Y@+adAW*kkDb?kxLK`HOR~<-CtXIo&xpQ;^2* zoJ_dT4_BMCWS1MZlKSUcmAG3-`=H||zb4P>AtnmZxw3t;!`vlM=QD2S^R?)sN@W8L z$2}@>#|tf+Hwa&N*U#)50X0qvQ(>s=Z(P)7;TGySttj;PwQ)(`z7Uxx~YNB1i6!z-|WyPTIB=6UPm&fY;W(!v&yGZTCQwPqnyS~{-)0KuJ z!i6?5o1RZsvnZY!MK{QN!Iz7QNn2^xJGQr1b8E?#C1FDPy2K*(Rrq90dV$7;*FHBH zw<6L>1Y-Mx#8SfMwy*a7-z@)>nPZdDvRbmf} z8_gCm($GvL0EQhXHJNa7HE?($zhyO6z4)Hx?pl;6;tpln<;K55II|Sm7Cj?XYW_M# z87x%AhR8RET^aOc8$?ykp=VDRSws$wI*~c8{#D88t zkPXvyT=X4nL@n8~eM#^Wb!(-jCg)ztB=2u-^6C@6m7T(fXpr&-l{)Hi)E6bL2p5YF5sa2C#y-ivUa#LV`&%w{>yZb=bf_ z_nO}e!1}XJ(<+o{!UpB3X*)5kO!Vy^NmiYn_!8dr#-)>>CiAw)eQj$EMn-6~gcD7@ zjkB0YAi|4;551&VbsMaSpwZa#6(b)Vme}V;-uVlpe&UQh+$$8qKQ>!5NU`)H9`-51+{esUZW*WQt?O?LKY6383R(rM{124#bgU=A>N z*0^AvHfSYN@$&pY)296GUZllU;$m63+GHbyHn4cODJ10C^-L7*=(V10>L6Q%grC|l zXM{B_@?_S$9~Pd&akrt}2m{{ayY7y>Q%RE~eqbz2VP`=ij6kj_52MDW(Z+rYWU(~K zFH+F>9BZ&IsR%wujm~~wD3c7nr!)faEu%<)L9BLy*V;`$)dkbvy44;gDFs zk`u5-NuXTL=e~q?VDSlCcD@snKI;9L)$`LIFP0)CX+!cn|5s;=#hYWXA&XpAsK$Ug zSdkACsk<*IvV4vHFT_6NLM`B+vV*d*s-4|N465Rn(&@8~;;^=kUo0USS41OdFc4$0C+>Hj;bva%{3C8imjwC@6 zWCoeCedVI^xlr-=1a*m(*34DTnqHZ{U}>(`_R{^1kz*Dd}u4OqXo;b4Xs9~IMcGlCWCmX4cg%sa&; znPlsin!?W{HCiF|4o9bn?6|bt?XSggHEGnW=eVsEr2a*Bf1)gY&El^Xt5mKg-Hvqq z*0`AbCmLdd&n{W7UY;TF+yMM9(XgW?-^6nOybz$5`-sq z`^Lc0g>x?rWh{-~za}rlnvs)7)RM<({4S|ine!sbLhtY8BFhI@fhP1kOgZ~RbuJgB z(fbZ_-si;p)Nd;;jA5y33FH*3$TqO-fwdmfs}{o)DKhkq6IM{A(Q)~>DHn%(e|f&; zN|io$QPXkmAkqPQE+jC#R~(cLIQf~#o_aRQ!{p`r$m(#mJ%^b!TNn1JiBXZjFm)@+ z>)ZQ!5re#b$VQFMG2t-6T@=p{^r^O+7;ZP}$aq=PhMKp$=tK1V>vgU}t(i zO6$61xJ;N20u22Q*$G5qi<{@mZz)>y-X(0DIs(1(CZv4bqUuW-Tli4-7@&hbd1nwI z3%3NBKyW@`p@Yl&s_bPWI@+vA`t8uL^zB%<76}}%GRXk-?XtA$l=JG2i(bLIOe@r~ zbz2jq^jsBt`)f@XI?#Ck#tq-Y(?#$4i7>LrHFqhY1FAw`Xs$gFge3a06HzraNgb^& z@3%ph$7&)ZAkdRzUkBd@-X1yTQanF*K7++=5&K%N>y)Cdb*~3z&#)2RsE!|nr(q3Z&Mk&h#`t*lXtV7t%LSd)WH+C}=w2LwQPE9a7|0KQoR(U8jfHZOV}RQyY= zm;rI8FlUchQEfcoO|PkGfAfpSDTSoLCxM40+`aX22BqRLaN;q1Quoz`q8@P+P_WA& zLLCM2dpu({m@GgSyPLiRmUc{e=X&{Y-at5>x=ofX+ZmF`l>jRMdUfy2##^RZefxi?{NQS*<`Fq|&4lO?A|(SyK(waJZhS*^{aI!ysw- zYfE9(J7sWyTy29E6ZB(yQKNVw!z&+C!*gZF4^1Ug7Qc&3b%X#q&7Lcp20rzzp=}IM zmwl>iZ2dk4Xif$|5Jq+0Mdh%%a1`$tj^geBSAb7G^-Jlj6#eoa55+_bZUs4WsCe43 zAZKvoPZAiCSI~du4>|iAA%h;JM*5}Gv~C`tEq-^aA#`>-Yw2?-|KT1b+la@pm;Hao#JYc%)YgclO#!yv7!ZabWef0-od9%?2nh|KTYBQ$WwEKetStUugmKXSO7fov3Q{_x?jU1REYpm?1E`v{kELJXQo8iCRL725Dhpnb zZTx4_CFkz)Se5H7BLsqemh54A`hd~d5n zH&MTU3FfPf|wr{4}zoZj`-VNi1zeob{h)}H%WB6s>N+l=~ zP1wJO^}Pm!DAAWLSgG|=a5MkIWIU#{a$IS_%AkzDZp?+0!xmY6LNg9$sBu<6Fh`1I4PIaOgVk1 zJD=b^C**Ydjy|1~;GWMT+9$1d*KD$(yirLNY$b-!UxUpJ4+Wn4baL453JF?aKfY4? z+)A)fu4anTr2Ymue_n%=U?A#}RQU0y7b*9o<%qdO^8>n%iqGS;%6OWc@Uw^&ge}t@ z5xd+GJmw*9q{jqtPdUvXXX^LB==Ib%|&on5}qBC--2Whx4u@o({GWtg_5~ zQ-M*vS4i;?#;=s+egE3~d?9IzXspU~XtK(r{c4Uryaa@@1ZrYGTx+JaRq9|4uX8ze zr56)(D)-4%{xv5IGy4QPP|gJkD(xN_-Ruwxk`al2fgki*`C7oq2FgpKpx zc)z533Lmr96=Iid0o{C@D)hK+T#D=3y(5(c64|3{!@pj*uei+l-|VPLJ5MoGTU~4p z)$(HLxlGoo@hHUY8vEWQ7!=LeBx*)181vGj}Pht@N>HDtb_bxDiG=x%r}e-qIh-XxuHh#(@rH z(>Xe_7T(naobRZmGcG^V*`U!Z?i1?XuI3iouSNo-5mf~^3wE*^=RF=P21~#$*Q`n) zIE=PaqQm=HkB1|REdG>WsE`bgHKE&t1QxtKI^-)_$Nr_|@I&TuOWHsH)dJ}oz)&D; zW<7;lHv0-cq*mrf3dgOQUqi=BwZOpAY{y8gee)DrYX{EAF$#U)P6lr6(xB+2oz)xYd7|J!cp-%u-m;-xesGf?Xf!l zucw#l+_Q6@8)y43Cv5;5~(5r!4`(#S`J6lHdG5}jVB-V!v3jo}Kv{jT)t;zshN>nVUH zxOFJCdnBXf9rBo3!Oj2Kw_Pm-NiV1Da*siu6xKlK31H1&bCFAx6WadJTri z!oE0{v1dOC7sW1IsfQd5I+oP6OZ-5ibp9v&$dSGznE^~vCy$?ez!y=QNPfOwIvK~i zy_7GiXk6~mvq{SIWA68K5eBc}f1=2f%Zy7c{KKR<{WahIflsj62EYJi_y^BMPe`l` z=BoyyB`5%PhY7Xo{%$2Te+n{BgWto1Z^|3Z?AkgyUTNmqtYv!67M$XH$Q0JOoH!v} zc5Gl)4DoudIgwzK-e${0df}3(f>Wjt=w8qXZukM5rv~GM6cM*KK*8mtSsJf@R?RhT zetYDZUV_Ug!Lcqp6vr*1(K7mooN2U@hc}Vp@liiRq+#P)9~20PvSI(Fu5k;;I(wn>a>+dPS6^UW_d&-<~=#Vxe94 zmhsVIE;QXJZbsdkGe@_SnZ^IuicT+3-^W2J)r5`}u*H71tjDqrF&OPDj>7FAB|x|F zWj9lX6d~Kgsm%?+*a%1?)&4A#FbGeOOY=%eWw*n(ny6bZk!_@)tDslrWane$I<=%V82JWN~rVr8v`R=((K%IKd+_@C7Ht6VA zg>#^?n{p~#g8Nz+?jWsG0kSBGd^oO4x&X#YEKIFf%BW|N zmkAiIRYUBL78}-|?zHQThYD@1jeqH$e>f!Z@q9e3Zr!+aWe!fuce#&uo@>YTr}2B# z3(L#%nFJ3 z`de>-p}s$?S;?djj)k-5jwH{ZKt<$8Az5(5CVNSs|x;}nxH6{ z0lYa^7VWb0sgzz)G(HmB$-kD0i=C$sK2*2!qEsZdm)Bl)pUQAxPVvxeYuVMR1qy;C zcs@S>1)rFqf>-T;`xVz{cM|8Xvw9YG$-J9H*)}x&3nH%jxX}_4YOM#wAt#Ij)%Pyi?1_ED_I$5Dhh07F${K3VGf1v%aVc@oru^MFdT(@dGmGjqMR})$av9s2`_wB^ zhY-(S9RID+F~5#WaGKY@IQsnwtSw#&D3il-jm=TRoNI@^9qiHMhqvx4p9CNH>42VQ zz6wY=mH~QsEBchKoPJ_Tzoq5xmjzT-mlVd1viE7OM_+PZI=bmr^+B)A)mYfY<3}yU zi)n~n%JQ<7Vk+YU%@CW%{lyE^m$q95Ciy11ED#CC+(~B=mWIxCEr0q$|KjfA#|#mOqooEYXjY~Qo>B!{jQOI&QKcR2W%g=;;K(WdSzTFg zcZaWVx70D*fxl5BS`%|$t?25BJm`^I_r|ZoxBJ#hm2#Dt89hO(6mT-g-a-Er1vP<3 zpYtI+2d*={$E|E}VN`vJGFlmG0*>pZLwbsOl&Y1hgG0dhMfXcP`QJ@1i_t$-OFf91 z)#fn$v6v}5pb&s%yj(NPw?A{RTp5XG1lqq8%6A+4y&MhwBP<2g|K{Cn7;h>7jU}V7 zf6b!%EDusfu!_n_KB`fjo9Q0d`AW@^&*B76zHUQBpuDwE_p~-TANK>-YU>#mjyldu zm)lwss{owYfE4WkQGowz{o4k4c}W}+qug6qOmSoy{2J~-vCRMG#vFgGr~FF^}475+lWq&naCtu_LHOXc>PtE)7@=% zv$js(-*;|&jI%;6Lo7ybZY$-4UDFy?``}GQUxiiNQwEJ%n9Iysx2&AZ9P3pl5&QW* zQ$U}u-5`M?U{FhusZp?~ExSRDYeuh18nB)J3EE*wU?{@9j93zejHC1m&JgAS@v5nh zp-13uVTZpNK7mIYXd)MO?P#k0zPRre;dYAYz$B*QG5tn=x9`t`J-(MS{$iRwCKDBO z0F-mdA?(3OTw7J941&l3B%zYPF*{5`U~9VQ@2zEAry3a=#|v%glCB zrU(A`v4h7aD>lgb4*C$0s!`lo$;`hyDhBc>v{KbkOn+A-9BdDn*(gm$sAGw2>bEa- zGt^UXN;hp|!ruOHufYGa0GG{B-erfQ9~&A@2MG5-!MV1=c&T`fUg98RQHzw9Uw+M; zoqxp!42FqgWYe=Q?>fJwF6AMGM+sE*}YOh}N!^&BXHR0?g z-f;d#dc)K_`}TfaA(Enpieq#dU+jliM)}(LQmtI&P0_uA8u)_y%k72w?(IV&TYyYw zU;1Ihq2*n6-+Haav8}sZYQRqmq^gY2G?N z&}A8`_4B(N4jkB+kj0g`q7mQG6MD%#=9n$gxJ*EqGjLYDJ?s@UJxJC6;J&;gPSJpR z-x6Spi2gm+k*lFyz{uc}S}i*m1wVi-d5dXxGwp5k++NUe7}~k&XaM06g3!5AN`*7! z?d(szH7_&lo!|)=<_t5n*s?5a(5Q!SbhXwQ%XP9$H@)~wL_f+tavhwI|0#i$ZquGF z>n^j(sEa=kq{}jO{{vO>q`}Ygdef@kajJtsR1Tb%$D5Lx0FQTZZify`%YJyrR;b%4 zJT7RI9*0&uNw(>oH2KKljyM=!3d=9a|19*;wtTFX9UhzOig{o0ES+& z92IptcAlBvq}lT*JY>2nc~xLc>-yxLPtRorq2O6ESVs-+VgJ2U#a<{pNMnH&NCLgj zyYHY|ZTD1-bvv*efsVd3OiHnEXK$ z%M^6b_z4S|ajB|chdByvFVw zevC2U!rP(WDmFQ~Gk}%$n?)*f6^}%mocd*xtS{BcY_F|U*LW{~{8 zKxG}g0lT=_(IubuiIdpnj)YSte60HHp$N{P(5%hZh>cV$<@KQR)heOwmFwO%tNqPD zVOaR1Z|?SlXRj<=bZ*Z0f)^6m*YO#F!1^ADZ5ORAP9zy@N0&r^d4xv(p6^pKoT-R-{}Z2Ck)Ek; z5PvvlSb3fk;ndgnU#@^Rj~8k|Ug)c%!5X^Hoi7hG)5{&F%8~#jQ}o53V&d-)mpFH0 z7+;kt?}bHr9lN1=%(y7l3_rRM^(%uVE!;8tVxD%446h+aWh3_G(PBG%$vmnjh1_ku zqWt4|vKDcg5IrpsVfE&m&}a&t~ZYZqQeMiqwI5jo{XxySfJpg1 z6ZA4|(^=GY8)h}QjN~(Y>NU88J&<$X{y2Q#;M5xBU9LO;!cw^FYQHX4U;WcHhH{Q` zH*HdMf9^pB2CRrvP^lS(7^$#b4eb3~_@EQ}Y)Q=jx12^`C{k`dAsJGq3jTOj;V%60 zi_}#=>f2YWzS2ziB*=MB5SsiS9VfF{7$hBoQBco$-d0pC4C;7=Eko84i`9GIKz~kYOtK6BTUk?Xtcf=xr zL6e+}HdYdRG96nXD#kTqOwc|Bh8G(VSOIZ{^XvyM+tZApNG$GUL3dPeC)7=Wys9(} z`?_Nrx4GdZ+kKd!9bUe@#%@^LaBMlXGtj&2wn|jHe_yBsM#z__JPiV}-oq=UWj7Wn z?lF&)C%G=4mo}E`&Lo8l5N+hLGtJ8Y|NrcYf+q1w9HewT6msClf3ErfaCqavidH8s z1SSNxmI~5@wM(9QqKi&ouyo#?Q&oNbqTAv`G(GR6Lxzfw^rf2FLtT7sA5Q%8(@XdW zRvtA)AdQ5iuy{)o0`#eqa90$Z_{C9G@R)}3l@fW~3w)i>?J}mo%$k?zDKW7cBmi9<_xaLmd@ssas5~nfJW%3gu*!esmInW`K zgYW7gf`uK7Oez!Sk5lwH2w*3N48a*98F}9E(;CeQzI^S9SipV=xWRk3N$lG`BT$ry z2Vl77o?h&$`)i4XCm#BO-=_+FaJb;G6|bI{5bEvoJ%NqIsSy=(j#;%L-+o^4P#HagUEG6L>Ah$4E{(*D`r2+v<9hzW#a0{+1Lm&i?r)iL2Is9{F(v(QCO1oy~kOZGelktg+Y{<-FH;E&zO- z0O?dOC50zR2l#BO^JkIq#xGA$h82wB9OsVDb?4W`bTr>`&d#Y{svm+H!S=kGyyS&c=MsASknq z2#$Xwg-^vT;|IRq0~WN$G9ZouQ8|Ejj_U~`(TB8^GJv&+UTDLV=c3AT>Pj^M-f=pr zAXNL=`8PDQjayIDjW*>COJs#d9nAoIlZcX(O^sYO5k1W*}j> zp}yuD`dp)zB&zyo@5LX$sN6|VdTT$_3Kt}VHygT!T)nNL>j45NyTKYx1+&i*1HMI!R3!F zt%rs1GPF^L{JxSlMlik6I`PvGd;VIXhq?)ezxSAhkNn1Sb&?)WHh~~rIHmy+f#Gt3 zd}J-8QWg9J_@L|gW0FwldCU1%4^JhGtYvR>S+R+47I9Gz+Cj{ZnhyGr?*%nijB%QV zicAGP_JXT?uh5pI%{NJG|F`uB^D-kpMFCn7h@4-ZO=V$?@WI`<_iI)0Bh`C5e!oID zkzBt!cvJ(V<2bpJIp@Y z-;yRBI48#bRT4d!(?$sGOK51){YS&NyyRJ#no?$HxTG&uqm0@lL8Pl|tmrX0viJiw z80QUR%ctb`u$oi7_noEaukca6<0ia1#EL0^6D&X)R0&pCaZE&s|r3f2{Soe>y%;(R{_#eV@J zwI0_3*plgepTrjFC1W?$BuI?Be4rEA2x|BEl!8c(QARKZ$DB;KNe5YUbf4(GqHzQw z^Gr9kEQ-t=xg z#ktlVZN!UL6Q_hmCh!jf?)2lNXOBd@_&YOHv-Fp`y)5DjGV*i}gG^8XSR^IkYv}?; z=yZh|Njl1n<>)*`6i!A#+W4%UCxVfDx#^TNsjG0~wfi+7&#Xg!-$i9)_?h(K63gM* zvN-I?qPR3$NLmhcff%Yt=M&j!SN4*OmLvZaFo_H*sO#r* z>v1Rl?Yj*7cr^0Ty0J5^i_Vw-6mhqmG?Lo?!d^k29V6LqAEKZsY_Ni_$tFYzbkEc- zW?1g7Y<>ckz#A1>ut!0Sdi%S2TC3cHh+@xP>+VF|j6mN(iWulyF4REok9cF?QFToR znv?{8#DY=WX;ForRo1+za`^MVjF74b9-8R!Hl}b1hEdpEGGfcuhYT@8B_6_lT$uFY z2%g%#kBdd1o{W&n^(5dCu*uPqr&NmaF^)L{*d)H}NOASL$>rEnJk;3m+ODr=+roqP z%VXf-;9Y{B+gCLMI1Q)DH zZZH0VjRxAo9^X1(-ATV{Ex6yWl{E0!DZkzKDb~z`>gW)af;xB+(UmdR)>PR-#C8Xc z8b+=1Ig9;KeUKUA?$Rh_sG14al2e<|{g{5<;dP=o`;LS;Je{KjzaSHCjaRlvMbJ-B z@|P`QK7v67Zn(c)}!i! z=hLyKJ(cB|>}L)x&^1H(2QKGX1500^K1XKMs5yb5(n<7%!4KLE0e#TN4*pE4*hG2$ zF`y17dYB*@b2yJyksc{GnPT#2%ca-B(fZ{P?SD_W!e!yYwr}_y-)Q5_|6Z`%6T$&N zA-K}%kEX-=a}pgY+4T>>D?y43e)inITSh9DdyS8fM*5wK>kVkte{Kf~lG11zxI3l6 z7lBD`1{!(@tz1#26LJK(W7XhiJCDxifb~NC)3usXLPR_D5Xb0D%=Retk)q6pRFC93 zomXA@M%B)PRytSI@zIjU;-hxGPb97g!RpJa7btIP@+&+m&sS~N=eppeqAV}`aiNfx zeKD$xF+^s`Uw7x^bsFQJ3tao+jcild5{$jm5b5bnxh!!iU6pArz1`;E{d_4vEj}@ zUw(ZlLX2bV>~oSKXkv3dJv=Sf*>-x&#Rm)CUCpVw179WZ#MBdDUWQ zX&f6YZH9IdE|M8p*xa#e=PMDY#lnVzNnUPRphagVnLp)iJX_d`h>qM%8TTD0J)Jaea zlTbt@kke7-AoT6TVV`+n1*UE&4#J8~Ao?K=bA43~>@@p!l5#WVD-#*=btx)8?l^<{ z_d4BKVz6!2&=+9RU-|E@Rz(-<XZ^5hjmoQy@Q{d1bDaCS^2az)KW2Zoj4{vdQ|T#GdDN{4r=Ef1yU#ldp1t z7QH7w>9p#f);~|2)UL?_V+Unv-rJs&1|B4`8P4_IE8x#=ATV#*>_Mb~3xCMGl zP?VuGyd(oK$6RA|42R=qucD`)m00DgJ%Skf)O4t+5Tr!)TnZ57Za=1C5W;2#qUTJb z93pY2xmT{1$MTT}%oZYZf<3G;lsv{QYY=hb1yfczil5`+~dL_8vS`S ztFKP*xzlRvyLvZc(%L%KxA@qM)}R0b$8u(6aNpKhCOquU^7bnq2$NI%g;XT=7#ho5I>OQ{>LpWapT zM=Xy7refa^l&MqtTn(1k8Nua(rE$~n#eu&aT$;ZoK-PZaR;TMex0^N?9{Z|E#JM2( zGXZk;BVZDn;LXGvo*ZgtuT5v?AYbR=={7w;vJkbTuyF`h)lV3FQ~hsZjMZM{o^%3y0cyi{nP;?lra7< zSg%m7h@BZ-T5a@{E~Ep~L!9vS{|jPKSOIMnT69!1)?&JQJl(VX1!w0Ynv0taChH5N ziOKZbxzQn;HR=YTkaa5>(H`}DP4q%nysdd;a<2~}Dch<-4F8E`mk@PDrCcGuDg9cL zr3w!JefqKpoQwWwq?88g_|PT^!nAE%D109W*Y5Pev)%TlfC}hYByo_{DYsK;`s`_s z6^=!R+-=!~H|ry`VBgQFSPgeV_XTS*y#H~Z{>ckyD6VWSC0Tx1?@gC@cK;7J89wf8 zr2!-GT6s?6tqzRu$Dcv>EMgh!wnbD2r$kQqO>rlsAULC1gw>yK%+OC+H0QsrL$lxQ zzUY0AV?qJRd7{81C>wi$@i#<*8fk5@gMl?DBl#wOw%e!?&P08^+OyX$j`#B z59_OSZn$=B$X*-M>785iMn|YR*u9_l?;d8F)I9FOX#6`0cMa1M1|F>c{WTFfPEP!< zK*phV8L=T%WoDCsg+nK&F{blBA zSs8%5ky6y)k1vak`StFf9C||{hchrQ@ja}-8YKts)2&=ke$$#Ky@9J@NKCx3iytK& zZ?xYvBh6dw#rx3S_36fexU(0EU1}4(4Wo5dp5JTg+(t8hEpo#t>&AKpsig_}m)#f- zzT_x!L>e=|3S<^=`0Ui(MsBl*blbTa@8@)A6PA9`$N$&f!kD11z=>mwG=CYYu0QD< zqBN!WhBv-+55z5e@BFy&LBS`u=1llhBd^#pLl7SS>)cxrMA>&1Pd6UJG zq?xNPB%+%Jmy)R#yl5pz&JaZ{>8j7JZxHI+0o7>qT-w>o-%z zejM-OKCh-Uy~VY2;VJ+6W2fSmsz3=6f`wMR{ggtzdnwWNbc3VuBugFZcOTb@aCjqx z!>@!g#2=lC)qi$Cq~;NXA}?THF7?~w0*{yj&!>urg6FHx(vbh(==SsIc>7qpnKNH% z@E&)pK;yxA>O$(b6~CiDWu+B0i6R9{hIV$RUR`_hEakz|xNhQ1n_1vX0=~VEgTs9qzySFImT_ zg7dhClw^!QWC%Zftk`V*4|v-67poVsA$qJ!vYK&0KJf>w4(9Ci*9R})MCb9RKRTBq zz)*?jE^^Od^25>p*VR{tRkbw_)7>rI-5r8-w{&+m2c)~ZySux)8>9pz1O(xLN-IeD zZS=kO_uNnZ@p;bPduGkdnwd4V_JLAbL>DtA7IbI0_X)l_50f1QeCR>X7AK^E<`X)` zSu?=HDubm1C9_g-v>vX9rRMu13XST}un6~u56zM1p}ce?RH8sO!y z8jw%Fg@(QJ#1O&#LiF8yD4{b|nGI4WurRPV5>d0w>!Ypm zJ3k)j+=Wl1mB@FO_UUlD>-1F!o~Hj!x5&qK3lnz~wr$GzY1% z0GMz~1KMPQnhDX6Ewdpvb_d*h838QcWlF7qkU&n7Gj~}0 zsmBwp%g%?)@bQs*pg#|OeP;t5Zs(0b)G&9OgDZlfmnRO~sp-$nMw(yWWM6x}H3`7l z85%nOg~5;&j_E^fI+m1&7{g~Kz%|<@02C!N0+)B>@=hGjg2`uO>(4vO#>md8Ni>xB z#RXz)S#V~lfaw6$Kv#v%edTs z%s0JEY2E-yI86HZo}+)p5Omh34kln>DeatRZMZLrwYRT@8;%#C0z83 z@vruJ(Ps_4-%yZ`1}5GSQsi?w!fkuJR|UQq37n5-p@o6U1I#wzUpiM~&p750U$2h6^NQEi1c=Ldaf!&F7lm!{u=WE4Cbdu5~EvafY9 z9jJWU5TB^>w$?@lDYs6+o(d(-5sd(uY*r6*F&k-GL1Je z!Eu`#-@gl77wgWZreF9`_Ym@ZlcmR!{v0a97@AE}wMg3&FxI(k#&z}eE>`sSsRKasz>B-o_o>>yCsLw$!S-z+ z?80c@^LC+ae;MbEz`+Psjf3B%(FFTGO+?8s;c7D*2kbV7WBdEj*WfnV}GY!@Jo@F_$Gs8V%Q# zM(w(=ObjOVGXbi_{hSr(zPp(6c|Ar~E+NSzbm1!teSzT)nCm*;-$py7)BZj+#-Et7 zuGzdrd6m}cn!48HMib!agB|U(G!Wf502vyY03*nBt$u~-e3`4!LyZ2^(1w^Dbynk) zIfR$9eoy(vFtKAlAab49=Wkml@0t;uZS+8^UqwiVL-sfV$>`JJ$J;c z#0PGJF-LejPg2iVGYuhjrkR#E+S7Hv03{xK)aF^vI<_})v^}dySt=grG|t{i)GGJQ zyWRNyM)C>K`{-{VOQ&FLcT;#OG>QCS{X_?e+Sc6I+&oYHP+yB1NohNNr0t0b=5%4T~$&NEQ6 zPvCJ6B-KC0_s)A;L(b8pO87}xDOIFOKi#anSM6NzT$umRU{Rd_wAo;uIvEoIWkUUx zBfNEY`!XAi)6JrE3DHi&twwK_Xl7&hTUlkYtH=5$8fY6u`|Xd24A1j^Ah~$lD(oK_ zl~5NrYpXN#{}TLildy2>t;0&UM8n5fqxAb|jkc#Ii`H>4s?SZpW{*YAR({QxZb|st zVg8jPMZ`k!sG1+Ftr>Mw5QJyjcb~HxTrFFHcc-d_|)3sv1{1{mm!D zeIHaaH&+EU2}rd&bL<^6gU3N2zlfZT@)^fCDRr5_+6aYhfIHh>>CTUBQt};e1frew z?L*p1T4z&eU;4rJ@PkY;gD)ph%lp!DeF$NnZ&_r%i!Ng1a+34}8K+#B=%b`IX35xm zdJcFw``~!NPxEWFQKLxbs3Y{5)FgD{Q{B zN(0NVhF-cwfzC9S!?EwDWVGp^;`+%9I;gtB(xRJUF2ktA{$heiE<7x`X)ig8z$&8J z3~)`|+db@8J#IOi>@t=vmq}xHJ?T|_?ngf zlFSr*N3Hwj0_Yq$y0_K48%2L3piol>j1^&^?x{uQst3aReY@cKj|)H0QDPO;8&@T7 z8LxO@o&vCXS&UlZsEb+l8V8>zJY8LGZ299UJaaFWsja_jp%?+~=o=IsirsDWZex)H zW@$b=iPSBLDZSwv4}<3kvS5W|@bY`E3S}R>pH#C4ho-*%Gr1O)A+1O%#J^k-x8&5S zX?iqt<1F3*J^!P*&aWGVsorhyrT+Md4@8V7K4*$@7J>-}mZX;{OsQAB%BG*p@@kQ2 zySXC*N)+s?{HJ?SEAkbZi&40pWu@()6ZRUu2D9F$SEW=@&*}Zu1jJ;WM%EACP3B5( z?O2wEt>szs?@n>}YyI)h1e4E-Nrm@jS(Yq?i&`n)@t?OH2ES!rJkKR1<(bGvncK!T z+)d@@J1b0bMoM+~No44K!w9s;7Z}vy&E=y2rIrKR-WBaT+4v*ZY>F1tU6lDG&!NBG zPBUNLX$NiPtzpt8y-L>9-@g9RT}c{Tny{KHscMPbm`~fC-}{r?*?r0g{Wx)`TozP4 z55l6kXZev_pL10R8?W9JrkVl#GIQ3~&SABZ5_MFr; zZiL0+RjED(wr}(5eYBH#N3ZeENIv6?qOi(QD(tM(0PQv+8mrIQusXErWz)3N z^lkc4IQM|RnAC7iRC*DTXf8O$Op^AOPM~ntc|&e+gM01=UeKKlI6#T)%--#+`u!jT zkjI<;QCc(s1jPs7K_jWUE42K(k>$9z0nl*6N}by$iz~W~^VB`V{+PED!qM+}m(pb# zfecUO#B0eH(mJO){VTb!`ag%0ypQlbKaD+;9DFKMN&F3%aNEMJW8{3> z`<+fY$b1{d`uKqe|D*2A5e2qdtB4m0$%CqYgYxz7L4&^Q%C_MWQ^1IW-^26%@FVq| zk;c)-lQfEwYCs!lwOO8AL3DfP7T$!&GdU2fEGVc;3kPCQkWUUr&2$Az%@DZ;5DiTK3dSsA$fcykSCnCl^yq2?ift@}S*r@5?xrBr{t|Kbxf*rV5EqmwRJsULiuh z(5wnu3^xdy=5dEM&i}%GMb1Y#>Gy-yhGGrgH3P^;+ z&$w6Q>85PA+j#u$OkF*_Dlm1+qF0$YXPqUk=2<;UxgLyEGMxc2cBKKPKkF^vHA$S2?aj>?q?H3D-+O+aU=2-16#B@Z z?|?lhp+=(ss&>oMEy(^_-`j9a_5P!E#}A8g`bCIIU_3^v0mfoKbG zv=hi{rHu+%J_C89fD z$X2xSn0!xjF%+68+F9!}6B=gYxM>mS^^{(TA&W2mUO2~uP46bUNoD!kQl*9aW9)lj zI3D|n-0=+S4eP={M7lO%bdiT|3PxNqfc|O)_NME@w|@9I(q9nYx+F*v>W?JJQl5M! z1Tu$865rq^T^(S-z15HdtOLYCTTnHAK_KtV`BrG(kMQ3HfaKx0~QQjH}I}r!=}!7U~4HGElm`LeTPa2RT$VE=IAyvjb+$OCg;3O z6+sCDY+d;36s(<3d`7VAhV@3!odlRYs~^vN$&lXsepFCP12>-K^snsZ!LlUU(XHBk z_AB1Sxc%xboXsb{dUnmF+^9f*o&2z;TDPeD~7p z80N-l%ET=@=56>Eha8?5l098Z6i`Jc7;`P~ zZSzh8!np>%K5K5WF>C;JpX&M;83Gt&$C(Dk@;qN#DBYCZzklxtc7Jd8^>M3X zZ7qux6GiDKUJ_BwI;~1%bZW&&T(&z^R@2a%yeD-6iAHF1GCq#4Ew!QZa!UTCwW(md zC!wIe0+$p`op4;a~hNgWuBKo9&>tFbWkcsg} zZxDHt!FW780#zKKfi7rbsWqwf>@xc+q7_qMa>o>pw_dXRfwR}xRj*Yx7_Ytv@tmVx ze`NYFa@1Up3=PB@#!uuQ@A*30;M<9{afr52?nwR{${D5v)Y$SWH#v}Q?}^~VODJ2J zsxj8Ni{jbOMBw@Pn9R$5g4pZ(4_oSi)G40{~sxWv@h{t9G2RcckvG~5wIQUEXGL6DQyZN-1QJy-meF%$m%YsU^oyvrB ziACBCD6)?%m2+D^EP67jW$6q8M(7~wJGR5t>9r#b81$`r>-_{q=;XSMdH%X(&+i+T`n@Fg{-!f+f_$`%UyxY-jr6M<(cTa^t363x zMpWQ17OV~&Dtof>Q9eB{W89=YN@81L2uMF*rz3RTi9+G=BKWbS zXA$S+OjdGBp}4>@LPc5-l*p}p<0ug&-Ta|_8lH%n#{C24-cFOl6 zWm%8{et+6TR+^0her5@+u*}V(6baljp|(R_)1Jl5L4v6dF$tQb30tK~Fd#gNyGO*f zs&qY4=E;|_?z6fY#kcsjNuVa~+pMRCql>pcM)DPq@D9TUIarQ^&JK z5lJCf{UFIT&V8%;TxglV-^@EPZuN*_sXQ3d$c#%4RF2pEu*8w&?4e3n*PW028=n`E z2x@1gF)392p$jDB(hD0F95aL~0QdW;E|0G0HAKAoI3fm2RlJ7T%H)~Nn8OQV44CwT zlASOIa)=sfM|aW3vVBHyuQ?lZGTBRA$D8#2kgT!dUy|7^Du80qip&U)k6NoBuJJ8l zB4p81ll5F9s;x!P>Ib5vF)V>beVx02I~u3Bu=x=Q z#`!B@9SgH6tEPVu1$Czf(L>;A-uOmkL0yftMI%BTZN$WjYQ~EK1xz%=67p4yI|r=U zRMS3{Uv+7kD!F3HM{{PqN)4r;-A}Bl<6<(w>R(kamAF1iy)qF=cvWr5$$2dzMc_Ir z3X!f`q7aX+gLN5ko6m}T<@-R>vBRX0TOLmuehDQQ&1{E8Iy6i;>;=`R`i=gMX+nU- z=3(qLHXFBE<0jCW@Hr9!JsapZ z>A&KZHPA50vl5taOgATnF2k@b9ed7F0#mn4kqLWIVaZ@5;~|O%j`J5v$04RrxEMq+ z9rD8BvhxUYuc#StOWVfDI@CHgV^%?7P6d|ef4&SkyGGHdaIeaC9YawNB+a0*7cA8l ztm}?r+tlP{&jfDzq^DhCsaZoIM=FqRiB&fM&1~<+t!8)zE%!bOffcb0dwgkld*K)p zgY7ucIyxoO(ItZYx}2s(Qxr7e(5x%5l4R?!4*Uo?Xl3Ju5GkBOn*^$=R97V28FY%( z1WPUI(mNceRLd!ofa2FLmtt*|T(t?n3oqm^neS43L(IRtu!8(Qr3K5GDsH91t};V$*vg&rz(_o`Llg!xhLXE|Jc+tyuh z=4&%C$V40rnDK}cvu}Gv!W~vrCRBTW5P%+DRUIp4t)Hr+vic}b6#d$UO9bU~7ko&8 za_J}vkAWKJtN{B{gSuzcT+##+qYx2M8h(qrP~0{8gZEn6BXEQEA_$mlWYUXg@?CXr zQ3Yf>hHEgM9}H2y`5laFstoUm)zBnK z$W23T_Glj5kNC+z`!pt`w5T5~H35m+iXYZEjRtO0$)UEXaJUm`^@>a|%{;4k@O4Pp zkS$G5n#OQsnAZ^viw)VkE41J>lL*FU?nS03Dy0BmvUkV`4~#OBD^Yn;ll;Vt>|5gC z0=F=@gD`}AJU}sd|3RvdGJ;3B@r7joQUJ?_nOmtcbUSdic~qi3U!ih4n`d)T0w#rq zata~peHctBv_p&v?m9pC}Yw!U&j>Q2U(3 z(k>WAemymGg6=0XPcSzr6`jn_$~?_{W-wCatrKl37*7(?zWCVzrp5xsp=9>sciZ^4#G2)}*&cJu z`nFVRNRAVc!jJK?4BHCE@Pa`vC-KZ?xOo7f8cZ)7?rEi3`YZbJk_9*Km{s+0n!&46 zhMQfKiJx!x`m7rF!sv9&sc4-pg&5gkrerS4>wYrNK2w}zuKvVn0<)@_a8H-(mGTd; z$QmFVX-S9=Km~Kl8Kae(3i>_rcjzR)PzfKPl27pk@-NaEKcTm5me^71_8*7}ZWgQ0 zOWf3h&`1b%ls_GRS_3*{f5@3z7Z+KkeJgpCGabylM>^>W($=ey%*+|@jA8rnGi;@9 z2%&piPxv_w>3JWVd04^DUlDco79s- z#~>4T)N5+ZheZ39fpI~rV^x-Fh`YD~taA3E#)yp1#Q=Oei7r*mZ9arUy6(1j7?EGF z5B%gaU(K?aa}N(+5LJv$CN&S^Il?%=Py)j1L`~fnoC;kdPx&jVP>Xtbt%i^Jq83Qn#Ntt+FpsK-UnjMFnbR*0 zgZ1T5?C{B3csZ#%vUp*bU?if(j3{&{g|>T@zT{IoxlQDTk!CDIK?vz6NXl8$Xv32T zk_giKMMR>3>BMXarn&$nj2Eq$C7J6^c%who)~LXn4V#fp?K}`0QhTw#?fekEYPf zF5X!T#Z4r|teu{qti$ye^s|t5werb09LNic;Cx_zXjXmKSzw~jL<=|TdZm?tn`q&ClDPxT`pI>W5^`eSbhmh^gTBJA}CwGk|%)eKJKF<}&nXuc}dXlUM9`hdIh|-w^L73+$+U z%n3&$Bh0FQqbb@uESV{d+-&~WTAb5|0)yJij&ggDpCBKqhLwV)*9Nb^$P4OhChzV1hGM>C z>bb|viF->(C&_P0!3)I;Rh}rCa}Y6>3*~oIuDbf_pB$BJNSCx%e@zhuH2>}cdR>pXF$}ubvyjT;) zp-b6}H#!+)idSposruM2ctwy8)q00ha#GUsB0Qh&A$CBlpU|i(j#=qIJx(yhW5dn0 zCmmyU$ut9)M$({0(zO2zEL$ zf+854ZmIU+EbOobI7H@Na1}m* zaKH5zjTl?-#&>)Nlr;oOas&;(_K_4gksGB3X_erghbWL{qoCp;IE{}nfI1W{mnL8E zG9|}*Rn24K9nH{!nAV{6=n^KA!N2&W7!AOx>Gfj+1`{%%4JU5UmiHvYlmZ(wBi`e> zX~1j`8Txcr?V)Hwu9<{y2_Y2op#4FL;_yO>-I6XTPjRHeM50LxA&BkfxV}TsOFfOY9#u$<+OYXUY%nN6) z2$2V8$^?yqkLgdn9rejHJlyB808^YBmykfs6!t|gK_W>bzz#eUAfNO~ya z51DQkb^9!vGjiNR%;<IIl=W5OU8#!Da9s1b_K;s(WH`B*F+)6zrIMOc(Y z93t5uKB{(F!zKe>sAL2JvVeGOX~m9^WvL)w3e1;^cP(&aNOq|^SfrHnnpc;pZ8MOt zB=i`=_kLHTS8GA$mcJ~tU0djLK3*H3(bT(%lBYSrE)4@<5fZy-pjZ%IPAnH9M5_$k z6TBOM-O*5n;hvyPRkki$D?`qhl_tmdL*o$5K)0x)}GE zIEv`imn!jEV#&`%FgRvkuBUyc^r?c`fGCo8oxEv4sd0>C7y?qgn`#vm*0TKT!BE?Br|2CXVnEjKkllmq9K z@1CaM129$jki!2J7I?TXL}fVbupVXcrX8uC0M#PC-STDMF_HwwO=QKbYMmH5=Buzl zO+*?Wgq{3y%3i`$rS3_ayh)I`pdepm#X%uKYIU$_?}q;@Bh8UwYZ~LXo*pFL36=1e ze4Eti=6KQL1-Br77nJ?w3SVc$VmdrC~cj1kN$3xpxXyhtk}k9Ad)?}Z@>X(lde4JNHacK-!2gNT4bUgWii{3Sba) zNsd1fjv9P+pAIug-pQm*|7$vCm`kdg%*F&3$bfMY zKF>ni>c99nHHt9Hgc3NAfZZHn+;X4_N({QBSm&qsgdfW+2eU1yE%U)H6+RqJ8-@^* z-{_*80RG^1tSOU?_IV0?d!uj~S%QLx%?+GLN4}t3tx>|CH8QZSOp+ERva$Hgv~iA` zG5u!4nhKW+S3@+ey*$Kf%raLkSs)f+Y5@*(RgVZ+ghJd@>B)LZOe}qjQbTtbc6m*V z-{WI$Gy%83bc*q#2MGT*^wA`v6Hj1c@LqW1Q@Xyg2&a~Lt3FLW76wW?^zrS!g6%t3 zg(PDA*jelQEbQxO{i?*5G2*_7Fm9$|rcJc#giV^Tn(bd1@S0vxV7llxztG!Kn*1y) znVs-ewUSNyccW-bb`cOEUENrfwp<}Fy_{Pko38gXR4?A-wwpBPyY5FzY$~eM(-N>M zIo~%ljX3B@NT>f>_zZUD=$g$C=RS~X<92QZA0BHwV5NTKiUwDoZx2_u5j9 zsmQ_10wj?4yYvNW2k9!4q#3IdgZPIiN>1az4>DcE!@z|1?nK!lj3d4~nr`V%O>`DZ zZdprq^Nbt^q8I)$GC;kG7kE`&UnXqrFGm1bdcf8`&TlFX?|9oMMGgd3`Z-d*P4KHG z`&`a>S$y&|>-m{Q@X8SF_&2>E&XmVis86^o{}>B1PNbQyg}xS9qZhEi)p1w&?;K%{An_KIW=(y$3@uh;>Jd(KPv5k_e5p@t#ZF zel9>k;}al82849X=XZKvyD`~;R~<^WeXxJb zlr+qZG?lpsV5YL3GOGNjO#HgIm30Q1+cOlXO!$||dp?u;Mu6-VV~2ZvuLB@gnG=Y*_Kw|9 zRH}}`KwsN!4F@`@6JG-crbv8%xJ?sUrMUtgvniyN&&`I=V!SLCkNPX)~ zQWD8$BipvLb_8Rm}Cj5s%*XyjqtlCJ`F`T>ME_@ z0z`TP0k8r-#QRly(VXhDT;nrtSdgO<%%5uKa1NB(redN*ftqI#TiV`bbIr{u#3DE& zL=Q-Lf=Q(2Ddt=ql>$A*gt!l)RKIax#70R`EeY!=dO!bE^kkOum7yspPN79Vz)2GQ zGtg8Fnx6-o7^R*!-xFRso8`qOZy;PyV!YelbG4n~RIfEH4$t8HyL?tlP<=z5B;bG9 zRrD+$Xl~LYK(?SGRb;mzGhdCnv{ z7vO-K+%%4gSU6rjp3dh`#}{+ZglR%m#1YZFlaj%up1bO>^(Gv_g167Ifb_AwXK#*CyIO%&E0<0;Z z$(ZO!0&wWmzdDuzCI&Dv+<^84EPDLCGflQMdFwt4*LZfs7UO$fs1Zs0Cq-@VZAQpE z1oC@w@-%{c0++hI*rb?W`Lh~!P9RWLl3e9$9S#S#bOl@UCi!1;yp)MnHxw~&l!1-n zn~`WS5&k;LKr?^T2M5=ey~zs&kc)d6I3Aq+%#->HOkfLgEl*uq6v$mlq(xe~K};Ic zFpRKguHDr0>2XZfUg2dEQIJ$9rW*FpjXg){w`_+_QN40K?J_C~o{}K7B@+xI{Anrx zj8`DnY8`*kvKt8Om{Trk)2ck!5c+eBeC)T3E zd6*`dzNYSC@DDKjY1SP}wZW1UW>1zY1nB~Fy-BthY+y|w`f?jy_^1j==pQ%wZGSmM z4kbWf=w>2LPTi5>^j8-0oL;l|ew2jB2jdCH5Vv58VNO3w1#h60)qzWGSW~hGP_;KT zH4K&l=M$2wXscpOu{#ws2-4H6j!O~^54(dzJd^!w9v1h-87HoaPZmY%tYTaLh`F%y}X< z;`Ev2zVIWtrIxGJbOZaD)f0BjJ}=HY)=rKJjOl3L9BgBcdi?^ZjSkNSh>4g`ktd2~ z93W4&gV0RGiPxS{&_q9=L3PCjkMwj;(N34*} z#>6y{{vzh+vr~PQr1ls0?O0b1o#y8pEj!AOg;C*TT|KROW zCLLTdOjhih5n-1T;(-oIKF8WtbUStPE#}o`RLjed1NR6}brSkF6a~+rCEp}-bHGr) zl7afDyxd|dQr%)wD&Kw<&OcR9WTn-dy`B|&mepQArAHd539mSe{1Q%spJXS?K|_`F zH4FZ`&+ZToy$oiWZSU?TL~9~oce<+X%(84c6wXk&zcyIb0=g`^;b+5p@aG`ST3?Q} zpT?`hb!M&8tnD9xA-eR3G6}Cu7GEM^5Tky;`5xnYH0)n}3zi~3K2TejUy0>`iYLKq zavi>+P*i|V@r7P--D=UAMo4omQFw>{*`Pj)t_QdTn2Nxcf;XTmSMytgphZTj9d+*p zbh!%z{XVNG;)-CwT#G;ruycztWbhpRhy&oq)Wt~+LgmsrlsKa6)pas6Dc6HlCH@ZynJ%Q@n*&|)T>9%ehh z_C)4|vF8+5%+=+UDdjEqgpV`FGyk(H3@RuAvRF4KqqrdW-Z2t1N!RFE{5HmMy)#tB zrFRO3npCQAz?yiXQr|*Uw*W>7Xq8mligUI~huz4N7d0F5S@DBYTrR;Nz92wzTCZYf z98QX52bROqOmFUiC1CmG?{W~SlCGQSkB`RD0+x%(i8IUmnn{K|=lX+nWSAGEMVX+| zfr5@5wES63!6lXnYCkd7nfPa(+OXN9fG+z*y9T__M_bi!G#3)w?S>c6s5C5+XD%y> zRn5ABR)t}#TN!^#ORk`W`88(TK5PL&j``Y=?k@-rn6lEs9^XUxf;9AEPDJWz zZ(Mh|Mgo}>V$_bt_@GOKG+-zCulHeKbSZ%(CKZ>(Xe5ud=dqYRs;hYVzu!(-E^&bu zGrT6iYbqKq5NsU!&glHbQw;%?i?EbSy6j??_pgQ-ix=I#lm_|7&f>2J%m=v6V|Uk9 zi}-qt^QZXJ*8^dzVgwD(5`{d&{>>ZMF>Yg<#HbqD4-+IBk{tqWt!4BbDRjN7YH5~v zvf10g#6AU6YSnACKy8^N=V+YtNnFZwh{@KA%jp1vB`Nx@PR(!&^b0GCw6eCroAKSj zMv`1%j4O32Sht)Pss746#6Ihs^0b8Un=T| zKM$FI5*&?-H~}@1A>M|3clyKbByy;V$ydzAP^qb)@f>SE16ear$^h0fc}!BmaskP`XkfjX;w$Z~01=dJTj!C_#aC&pEB*JEo`x=0dJHVrITNq_%Z3L3ZJ z>*WSrPl}5fJT9VC)Aau!iKWJ`j`aLUP@|&tqL$=S7sfi`m_-JF8NL9UkuducL;wgS zL;iXo4AG;}o^gOZF#0RwHE4&W`Inam?g7Fl%h)!|De@Pce~$A5iSg@_C~Pumq7n#q zUjvmf=4{ETHSEP4OUukRARr3xB~`*>Ma0Db`@Gr}xDRh?LnrI6iC#vCn&{|S=fN~q z7ef7kpN+q6C}EXdT1_A`7e2=M5upqxSSQ+P4+mAlLaQX06KlC*(j41RivRauf3Kqx zQRfH*q4lQ4mer>7)4xGv(7~rg4`(#@XTb`sXncJddp|CF1Vhen7k-_r z1Zo^jYX6>NA!z8ZCvfWb@i6zuGr}Iulxos-@$UZM8CsF4$VSk%6bAtb^%3fN&`~$A zasEfkakhqYfzg^%P25`tsrmFnU^?Oe_A9nA-jMXm4p)AJe_oNkqzr2B$`RZx-^RC{{gt0XaHTK&*pRN^ zdm+rrGDWq6xx_j@hc%bj-YEtom)Z>((ulpolBk~VhNm^~4ct}=;M+GEqsQ}p>F@76wI0O9yM4ik6nw~U#+^f2EHB1G$IcIKw`+?)xniE7-|vuiSd&CWMIfxj??NKSHaK+kfLG zq&BmH>K~pAZ9uJuI&F4;*%Y^b=pRDvAtDPp`N-YBHvw_0I`EyR%`W^zq5|KbojL#i z7$9LH0In#|Z(!)Cc+c@D0?wG+`ub&+zrY-9G_fiHU2l_CptOSAptD*EI&s-6L(ew4 zP~%+}{PzQ_2nJ|9Cjg#E4JYn>>SDJW=B>Vepjs)Ab-Fx!t@Lqxfm&yjg7#N*071N^ zd)XnnmDuOXqY>WA?zTR|7wV*?rj^jNFN;cS?$;9g-?kucqIVGiR}|_uuyl3o2Fy2r z&scc-+vQky%D@%CC}`)vojN_4`=%3EZ5AL}@jnp357=I0pq2M5`bZr&{vT1qZl&SB zSY?A+NBBazf3SaV%+};mCgbhjtFb(h{0EXtAykOdj{y%s$a8LoEbG?SJ-YiB%V)I! zS~M?c-L}VDDg5*BB6SlwuG^sZUz;WDrp^cDN$tpeLdkN6Yf zKN5bXQ$z{=$&cws_I9yHGObAd?vO~_@tjod%DT_iyb7j1o& zZ1Xn&7C!kssoQNz4wkpAoK{UNN!Eyft*2oXt@lL z`5WQ!wr`HuaGV19{q0U*x7Mqm{#}Ozf&pSr|I73E!1H-%`E-#5+rx0}WaseXZq5}d zEd3^DKAKej?13)(;P4`$k!YI-VwfEwlEP8z=_R_2fI8=%m6H_(wyu*aT)KasWeY|Y zdl#0v7$%@d^HcL@=Vk|et@0OUK~#O7*`?OQNHseCyQ2yfwtkZjrZpV@qI7_qhuBk^ z7e+g0&e+`8GWemRUe|-sddYU9MmHgcY8Q{=6b62G`{tw^-*3y5?_cpnzzI$*5?V&I zIWRElJ+J-d-0tYFl|Q2kBJ6O>Si#iXIhY`k&fVK1$`$Fq3E>k7K#}=}$}Z?o@M7=U zuou&>1x`8!djXgn|ARTBdzPD+L3hjL+yB8gB-GjF{$?3@U`q}CABG}eWWiPxJ$x;) zE=phNS@ipT@x0b|=kccXR3qV&?Z%Amfb%CIm4U)!nGBfa#MYY-h1Of*e-;Z7oIhj^ zvlH%q^7QsW-_f^Fv(gPOKcYVG%dex6Gw;kLQl&Q&%g70|RwDnhI1~wm5KxgxfY$K7 zmoKfEpRUv7aH%w9vg+E_*f9Kg^5k%TnQqk7nRNMoQYX7N5DMHld0#G9Wa_oTX&(+R z{CEeBQ4Zz7^@Iny%TCJ3mQP?OL0nA#?mJUhI21r>P6t=Khc{+VYefzgbB7abShn3b zkmLS@4I+Z%J1q!sD97Kn*`LAsN7=ou8G3@-+3RjA651$c`j*g6F}$wk2YmZL!v0^W z7TwbnU91UvwdaSuhO*EyM!ccr)rh=`*LFCO~_WAzUIHr6^g%n z??{>M=H+|UC*AX_fAxdpN;%8?kC>|cE|jOi725gz{Qc{P0QXSuxZ~qv^xqFpyVs)u|I*-(Xaq~WI8Bi%fzPVq4&4NuX-O)f zXScr}-CZd&3z&noH~PyCT>k<1M;`cbtI&FAycW*+`|&^u8!Qw*Zqq5=6*wTSH=HgI z{`d1kDMK|y56v(e>K;hV3a0Dn8#F%u=kL5AFoXxCDb{JA%R+GrG#G6O9A>ch-W(6^ z{%*f%JN}ozfBqv{BdWQ$)9>hw)N_ryBXGFzM#Wm|Q_uE&$Cs6yvw!W_-(}GRdx&-V zL=DuHj`q4n4gYJoElCMf^&!X)O)cOmpc zoV>rfb+_mT3>bY7wqQ`}^0WDH>uiip=9&9H59xoeIWS_N^*HYqKKSr-&YgabaYF31 ze!kn;=AtM4@0XQePeabcriAl8?4KWJTnHKO^ezvzr zi08UpymLdu{Qnff3-zl-`N0_p*SFvTJnwf>@9fCI1&rM)|0tY4AMC`aLh7*;FAVtQ z_PQ~&w);!8o0RsHFs)nSf6#ZLQzZc%qn8Ul-Btezt%ljzax6&x4+Ho5MLiZ-XyiA9 zA6p-^c0zY|Jfv<_CmsL8jjnQ0fcWCT+OIW@#BMY6ZJ7V_J3o#NE=VDGw6^EV_n9w) zSCxM3=|#Pz7jORa6qr1T6f_w4uxa`#;y-MJgkpp87VBKiZ8$~hL1X#vOAJYPpjpb9 ztxVXRf-PHz|NN*!0(zrV*!Mc{ZuRk@JACE*Sg`6pt1GG;IxW(t6%Hg%FWPcPj#v5* z5hJ0L#NG|m2*Dd_yQACg{FhavP_?0FmBs^U=UAKl{<@3bn>{A}gLSYwl%v?Y8l3?? z?L}dkuN?ou3{26)2+r7@&mXNX+A`mY`#<&df { - const { address } = useParams<{ address: string }>() - const walletAddress = Address.fromB58(address) - const solanaAddress = new PublicKey(walletAddress.publicKey).toBase58() - - return ( -

-

View Account-specific data on:

-
    -
  • - -

    Solana Explorer

    - -
  • -
-
- ) -} diff --git a/src/app/accounts/[address]/page.tsx b/src/app/accounts/[address]/page.tsx deleted file mode 100644 index 7893a24..0000000 --- a/src/app/accounts/[address]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { MapCover } from "@/components/MapCover" -import { AccountDetails } from "./components/AccountDetails" - -export default function Page() { - return ( - - - - ) -} diff --git a/src/app/api/stats/supply/[token]/route.ts b/src/app/api/stats/supply/[token]/route.ts deleted file mode 100644 index dc1a94b..0000000 --- a/src/app/api/stats/supply/[token]/route.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { - HNT_MAX_SUPPLY, - IOT_MAX_SUPPLY, - MOBILE_MAX_SUPPLY, -} from "@/app/stats/utils/emissions" -import { fetchMint } from "@/app/stats/utils/fetchMint" -import { - MAX_DAILY_NET_EMISSIONS, - getDailyEmisisons, - getRemainingEmissions, -} from "@/app/stats/utils/remainingEmissions" -import { db } from "@/knex/db" -import { SupplyLimit } from "@/knex/supplyLimit" -import { HNT_MINT, IOT_MINT, MOBILE_MINT, toNumber } from "@helium/spl-utils" -import { NextRequest, NextResponse } from "next/server" - -enum SupplyToken { - HNT = "hnt", - MOBILE = "mobile", - IOT = "iot", -} - -enum SupplyType { - CIRCULATING = "circulating", - TOTAL = "total", - LIMIT = "limit", - MAX = "max", -} - -export async function GET( - request: NextRequest, - { params }: { params: { token: string } } -) { - const searchParams = request.nextUrl.searchParams - const token = params.token as SupplyToken - const type = searchParams.get("type") as SupplyType - - if ( - !Object.values(SupplyToken).includes(token) || - !Object.values(SupplyType).includes(type) - ) { - return new NextResponse(null, { status: 400 }) - } - - const mintInfo = await fetchMint( - { - [SupplyToken.HNT]: HNT_MINT, - [SupplyToken.MOBILE]: MOBILE_MINT, - [SupplyToken.IOT]: IOT_MINT, - }[token] - ) - - if (type === SupplyType.CIRCULATING || type === SupplyType.TOTAL) { - const circulatingSupply = mintInfo.info?.info.supply! - - return NextResponse.json( - toNumber(circulatingSupply, mintInfo?.info?.info.decimals || 0) - ) - } else if (type === SupplyType.LIMIT) { - let remainingEmissions = 0 - let supply = mintInfo.info?.info.supply! - - if (token === SupplyToken.HNT) { - // Due to Net Emissions, assume the max amount will be re-emitted - remainingEmissions = Math.ceil(MAX_DAILY_NET_EMISSIONS) - - // using existing supply limit logic to avoid repeating edge case logic - const supplyLimitDb = new SupplyLimit(db) - const supplyLimit = (await supplyLimitDb.getLatest({ withBurn: false })) - ?.supply_limit! - supply = supplyLimit - } else { - remainingEmissions += Math.ceil(getRemainingEmissions(new Date(), token)) - } - - // Add the daily emissions for today to be conservative - // bc they may or may not have been emitted yet - const dailyEmissions = getDailyEmisisons(new Date(), token) - remainingEmissions += Math.ceil(dailyEmissions) - - const totalSupply = - supply + - BigInt(remainingEmissions) * - BigInt(Math.pow(10, mintInfo?.info?.info.decimals || 0)) - - return NextResponse.json( - toNumber(totalSupply, mintInfo?.info?.info.decimals || 0) - ) - } else if (type === SupplyType.MAX) { - switch (token) { - case SupplyToken.HNT: - return NextResponse.json(HNT_MAX_SUPPLY) - case SupplyToken.MOBILE: - return NextResponse.json(MOBILE_MAX_SUPPLY) - case SupplyToken.IOT: - return NextResponse.json(IOT_MAX_SUPPLY) - default: - return new NextResponse(null, { status: 400 }) - } - } -} diff --git a/src/app/hex/[hexId]/page.tsx b/src/app/hex/[hexId]/page.tsx deleted file mode 100644 index 0901635..0000000 --- a/src/app/hex/[hexId]/page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { HexHotspots } from "@/components/HotspotsMap/HexHotspots" -import { LoadingHexHotspots } from "@/components/HotspotsMap/LoadingHexHotspots" -import { HexIcon } from "@/components/icons/HexIcon" -import { XMarkIcon } from "@heroicons/react/24/outline" -import clsx from "clsx" -import { isValidCell } from "h3-js" -import Link from "next/link" -import { redirect } from "next/navigation" -import { Suspense } from "react" - -export default async function Page({ params }: { params: { hexId: string } }) { - if (!isValidCell(params.hexId)) redirect("/") - - return ( -
-
- -
- {params.hexId} -
- - - -
- }> - {/* @ts-expect-error Async Server Component */} - - -
- ) -} diff --git a/src/app/hotspots/[address]/components/HotspotDetails.tsx b/src/app/hotspots/[address]/components/HotspotDetails.tsx deleted file mode 100644 index f2264a6..0000000 --- a/src/app/hotspots/[address]/components/HotspotDetails.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client" - -import { PROVIDERS } from "@/app/preferences/components/ProviderList" -import clsx from "clsx" -import Link from "next/link" -import { useParams } from "next/navigation" - -export const HotspotDetails = () => { - const { address } = useParams<{ address: string }>() - - return ( -
-

View Hotspot-specific data on:

-
    - {PROVIDERS.map((provider) => { - return ( -
  • - - {provider.Icon} {provider.label} - -
  • - ) - })} -
-
- ) -} diff --git a/src/app/hotspots/[address]/page.tsx b/src/app/hotspots/[address]/page.tsx deleted file mode 100644 index 0c70e2e..0000000 --- a/src/app/hotspots/[address]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { MapCover } from "@/components/MapCover" -import { HotspotDetails } from "./components/HotspotDetails" - -export default function Page() { - return ( - - - - ) -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 288677b..0000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { GAScript } from "@/components/GAScript" -import { GATracker } from "@/components/GATracker" -import { Header } from "@/components/Header" -import { HotspotsMap } from "@/components/HotspotsMap" -import { Providers } from "@/components/Providers" -import "@/styles/tailwind.css" -import "focus-visible" -import Head from "next/head" -import { Suspense } from "react" -import "react-tooltip/dist/react-tooltip.css" - -export const metadata = { - manifest: "/manifest.json", - themeColor: "#000000", - icons: { - icon: [ - { - url: "/favicon.ico", - type: "image/x-icon", - sizes: "64x64 32x32 24x24 16x16", - }, - { - url: "/logo192.png", - type: "image/png", - sizes: "192x192", - }, - { - url: "/logo512.png", - type: "image/png", - sizes: "512x512", - }, - ], - }, - openGraph: { - title: "Helium Explorer", - description: - "Helium Explorer is an open source network explorer for the Helium network", - url: "https://explorer.helium.com", - siteName: "Helium Explorer", - images: [ - { - url: "/og.png", - width: 954, - height: 696, - }, - ], - locale: "en-US", - type: "website", - }, -} - -export default function RootLayout({ - children, -}: { - children: React.ReactNode -}) { - return ( - - - - - - - - - - - {/* - Wrapping in supsense to avoid pages getting deopted into client-side rendering - https://nextjs.org/docs/messages/deopted-into-client-rendering - */} - - - -
- {children} - - - - ) -} diff --git a/src/app/mobile/page.tsx b/src/app/mobile/page.tsx deleted file mode 100644 index 9b72e55..0000000 --- a/src/app/mobile/page.tsx +++ /dev/null @@ -1,8 +0,0 @@ -"use client" - -import { NetworkCoverageLayer } from "@/components/HotspotsMap/NetworkCoverageLayer" -import { networkLayers } from "@/components/HotspotsMap/utils" - -export default function Page() { - return -} diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index a56e2a5..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -export const metadata = { - title: "Helium Hotspots Map", -} - -export default function Page() { - return null -} diff --git a/src/app/preferences/components/ExitButton.tsx b/src/app/preferences/components/ExitButton.tsx deleted file mode 100644 index fa9a4b1..0000000 --- a/src/app/preferences/components/ExitButton.tsx +++ /dev/null @@ -1,49 +0,0 @@ -"use client" - -import { gaEvent } from "@/components/GATracker" -import { usePreferences } from "@/context/usePreferences" -import clsx from "clsx" -import Link from "next/link" -import { useSearchParams } from "next/navigation" - -const styles = clsx( - "rounded-md border px-4 py-2", - "border-zinc-900/5 bg-green-400 text-white hover:bg-green-500", - "dark:border-white/10" -) - -export const ExitButton = () => { - const searchParams = useSearchParams() - const redirect = searchParams.get("redirect") - const { provider } = usePreferences() - - if (!redirect) - return ( - - Exit - - ) - - return ( - { - if (!!provider) { - gaEvent({ - action: "outbound_click", - event: { - description: provider?.label, - }, - }) - } - }} - > - View Hotspot - - ) -} diff --git a/src/app/preferences/components/ProviderList.tsx b/src/app/preferences/components/ProviderList.tsx deleted file mode 100644 index 4c475a5..0000000 --- a/src/app/preferences/components/ProviderList.tsx +++ /dev/null @@ -1,113 +0,0 @@ -"use client" - -import { gaEvent } from "@/components/GATracker" -import { HotspottyIcon } from "@/components/icons/HotspottyIcon" -import { MokenIcon } from "@/components/icons/MokenIcon" -import { RelayIcon } from "@/components/icons/RelayIcon" -import { usePreferences } from "@/context/usePreferences" -import clsx from "clsx" -import { useSearchParams } from "next/navigation" -import { useMemo } from "react" - -export type Provider = { - Icon: JSX.Element - label: string - getUrl: (hotspotId: string) => string -} - -export const PROVIDERS: Provider[] = [ - { - Icon: , - label: "Hotspotty", - getUrl: (hotspotId: string) => - `https://app.hotspotty.net/hotspots/${hotspotId}/rewards`, - }, - { - Icon: , - label: "Moken", - getUrl: (hotspotId: string) => - `https://explorer.moken.io/hotspots/${hotspotId}`, - }, - { - Icon: , - label: "Relay", - getUrl: (hotspotId: string) => - `https://explorer.relaywireless.com/hotspots/${hotspotId}`, - }, -] - -const shuffle = (arr: T[]) => { - let i = arr.length, - j, - temp - while (--i > 0) { - j = Math.floor(Math.random() * (i + 1)) - temp = arr[j] - arr[j] = arr[i] - arr[i] = temp - } - return arr -} - -const PROVIDER_KEY = "provider" -const DEFAULT_HOTSPOT_KEY = - "112Y5Vn5wzsreeyCijSEiBWHJekJPJCELvvm9615GvVGWKfu99Ta" - -export const ProviderList = () => { - const { provider, setProvider } = usePreferences() - const searchParams = useSearchParams() - const hotspotKey = searchParams.get("redirect") || DEFAULT_HOTSPOT_KEY - - const providers = useMemo(() => shuffle(PROVIDERS), []) - - return ( -
- {providers.map((providerItem) => { - const { label, Icon } = providerItem - const active = provider?.label === label - return ( -
- - { - if (!!provider) { - gaEvent({ - action: "outbound_click", - event: { - description: provider?.label, - }, - }) - } - }} - > - Preview - -
- ) - })} -
- ) -} diff --git a/src/app/preferences/components/ThemeToggle.tsx b/src/app/preferences/components/ThemeToggle.tsx deleted file mode 100644 index ccaf8b6..0000000 --- a/src/app/preferences/components/ThemeToggle.tsx +++ /dev/null @@ -1,68 +0,0 @@ -"use client" - -import { MoonIcon, SunIcon } from "@heroicons/react/24/outline" -import clsx from "clsx" -import { useTheme } from "next-themes" -import { useSearchParams } from "next/navigation" -import { PropsWithChildren } from "react" - -export const ThemeToggle = () => { - const { theme, setTheme } = useTheme() - - return ( -
- -

-

- -
- ) -} - -// do not want to show theme toggle when selecting hotspot for the first time -export const ConditionalThemeToggle = ({ children }: PropsWithChildren) => { - const searchParams = useSearchParams() - const redirect = searchParams.get("redirect") - - if (redirect) return null - return <>{children} -} diff --git a/src/app/preferences/page.tsx b/src/app/preferences/page.tsx deleted file mode 100644 index afd2d43..0000000 --- a/src/app/preferences/page.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { PreferencesProvider } from "@/context/usePreferences" -import { XMarkIcon } from "@heroicons/react/24/outline" -import clsx from "clsx" -import Link from "next/link" -import { ExitButton } from "./components/ExitButton" -import { ProviderList } from "./components/ProviderList" -import { ConditionalThemeToggle, ThemeToggle } from "./components/ThemeToggle" - -export default function Page() { - return ( -
-
-
-

Preferences

- - - -
- -
-
-

Hotspot Analytics Provider

- -
- -
-

Theme

- -
-
-
-
- -
-
-
-
- ) -} diff --git a/src/app/stats/components/Countdown.tsx b/src/app/stats/components/Countdown.tsx deleted file mode 100644 index 068805e..0000000 --- a/src/app/stats/components/Countdown.tsx +++ /dev/null @@ -1,66 +0,0 @@ -"use client" - -import { - Duration, - differenceInDays, - intervalToDuration, - isAfter, -} from "date-fns" -import { useEffect, useRef, useState } from "react" -// broken into separate Client side component since Date cannot be passed down from server - -import { CountdownProps } from "react-countdown" - -const zeroPrepended = (num: number = 0) => { - return num.toLocaleString("en-US", { - minimumIntegerDigits: 2, - useGrouping: false, - }) -} - -const CountdownRenderer = ({ days, hours, minutes, seconds }: Duration) => { - const [formattedHours, formattedMinutes, formattedSeconds] = [ - zeroPrepended(hours), - zeroPrepended(minutes), - zeroPrepended(seconds), - ] - - let countdown = "" - if (!!days) { - countdown = `${days} days` - if (days < 10) - countdown += ` ${formattedHours}:${formattedMinutes}:${formattedSeconds}` - } else countdown = `${formattedHours}:${formattedMinutes}:${formattedSeconds}` - return {countdown} -} - -const NO_INTERVAL = intervalToDuration({ - start: new Date(0), - end: new Date(0), -}) - -export const Countdown = (props: CountdownProps) => { - const [count, setCount] = useState(0) - const countRef = useRef(count) - countRef.current = count - - useEffect(() => { - const timer = setInterval(() => { - setCount((prev) => prev + 1) - }, 1000) - return () => clearInterval(timer) - }, []) - - const now = new Date() - const target = new Date(props.date) - const timeUntil = intervalToDuration({ - start: new Date(), - end: target, - }) - timeUntil.days = differenceInDays(target, now) - - const countdownPast = isAfter(now, target) - const duration = countdownPast ? NO_INTERVAL : timeUntil - - return -} diff --git a/src/app/stats/components/Governance/DelegationHistory.tsx b/src/app/stats/components/Governance/DelegationHistory.tsx deleted file mode 100644 index 6ef53f2..0000000 --- a/src/app/stats/components/Governance/DelegationHistory.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { ONE_DAY_MS, veTokenWoDecimal } from "@/app/stats/utils" -import { amountAsNum } from "@helium/spl-utils" -import { fetchRecentEpochs } from "../../utils/fetchRecentEpochs" -import { - DelegationHistoryGraph, - DelegationHistoryGraphRow, -} from "./DelegationHistoryGraph" - -export const DelegationHistory = async () => { - const { mobileEpochs, iotEpochs } = await fetchRecentEpochs() - - const cleanedData: DelegationHistoryGraphRow[] = mobileEpochs - .map((mEpoch, index) => { - const iotInfo = iotEpochs[index].info - const mobileInfo = mEpoch.info - // need to pass date as a number to client side - const date = amountAsNum(mobileInfo.epoch, 0) * ONE_DAY_MS - - const mobileDelegated = veTokenWoDecimal( - mobileInfo.vehntAtEpochStart.toString(), - 8 - ) - const iotDelegated = veTokenWoDecimal( - iotInfo.vehntAtEpochStart.toString(), - 8 - ) - const percentIot = (iotDelegated / (mobileDelegated + iotDelegated)) * 100 - return { - iotDelegated, - mobileDelegated, - percentIot, - date, - } - }) - .reverse() - - return -} diff --git a/src/app/stats/components/Governance/DelegationHistoryGraph.tsx b/src/app/stats/components/Governance/DelegationHistoryGraph.tsx deleted file mode 100644 index dec3c09..0000000 --- a/src/app/stats/components/Governance/DelegationHistoryGraph.tsx +++ /dev/null @@ -1,145 +0,0 @@ -"use client" - -import { - HELIUM_IOT_COLOR, - HELIUM_MOBILE_COLOR, -} from "@/components/HotspotsMap/utils" -import { numberWithCommas } from "@helium/spl-utils" -import clsx from "clsx" -import { format } from "date-fns" -import { - Line, - LineChart, - ResponsiveContainer, - Tooltip, - TooltipProps, - XAxis, - YAxis, -} from "recharts" -import { - NameType, - ValueType, -} from "recharts/types/component/DefaultTooltipContent" - -const DATE_FORMAT = "M/dd" -const PERCENT_IOT_COLOR = "#AAA" - -const CustomTooltip = ({ - active, - payload, - label, -}: TooltipProps) => { - if (active && payload) { - return ( -
-

Date: {format(label, DATE_FORMAT)}

- {payload.map(({ dataKey, name, value }) => { - let dotColor = "" - let valueFormatted = "" - let labelFormatted = "" - if (String(name).includes("Delegated")) { - valueFormatted = numberWithCommas(value as number, 0) - const isIot = (name as string).includes("iot") - labelFormatted = isIot ? "veHNT to IOT" : "veHNT to MOBILE" - dotColor = isIot ? HELIUM_IOT_COLOR : HELIUM_MOBILE_COLOR - } else { - valueFormatted = (value as number).toFixed(2) + "%" - labelFormatted = "% veHNT to IOT" - dotColor = PERCENT_IOT_COLOR - } - - return ( -
-
-
-

{labelFormatted}:

-
-

{valueFormatted}

-
- ) - })} -
- ) - } - - return null -} - -export type DelegationHistoryGraphRow = { - iotDelegated: number - mobileDelegated: number - percentIot: number - date: number -} - -type DelegationHistoryGraphProps = { - data: DelegationHistoryGraphRow[] -} - -export const DelegationHistoryGraph = ({ - data, -}: DelegationHistoryGraphProps) => { - return ( -
- - - } /> - - Math.round(value / 1000000).toString() + "M" - } - yAxisId="veHNT" - /> - - format(new Date(date), DATE_FORMAT)} - /> - - - - - -
- ) -} diff --git a/src/app/stats/components/Governance/GovernanceStatItem.tsx b/src/app/stats/components/Governance/GovernanceStatItem.tsx deleted file mode 100644 index 759c34f..0000000 --- a/src/app/stats/components/Governance/GovernanceStatItem.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import clsx from "clsx" -import { PropsWithChildren } from "react" -import { ToolTipProps, Tooltip } from "../Tooltip" - -type StatItemValue = { label: string; value: string } - -type GovernanceStatItemProps = { - header: string - values: StatItemValue[] - tooltip?: ToolTipProps -} - -export const GovernanceStatItem = ({ - header, - values, - tooltip, -}: PropsWithChildren) => { - return ( -
-
-

{header}

- {!!tooltip && } -
- {values.map(({ label, value }) => { - return ( -
-

{label}

-

{value}

-
- ) - })} -
- ) -} diff --git a/src/app/stats/components/Governance/MetricsRow.tsx b/src/app/stats/components/Governance/MetricsRow.tsx deleted file mode 100644 index 45df056..0000000 --- a/src/app/stats/components/Governance/MetricsRow.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { humanReadable } from "@helium/spl-utils" -import { - humanReadableLockup, - humanReadableToken, - humanReadableVeToken, -} from "../../utils" -import { PositionMetrics } from "../../utils/positionsMetrics" -import { Icon, StatsList } from "../StatsList" -import { GovernanceStatItem } from "./GovernanceStatItem" - -type MetricsRowProps = { - groupStats: PositionMetrics - icon: Icon - title: string - token: string -} - -export const MetricsRow = ({ - groupStats, - icon, - title, - token, -}: MetricsRowProps) => { - const isSubDao = icon === "mobile" || icon === "iot" - const decimals = token === "HNT" ? 8 : 6 - - let hntDescription = `Total, mean, and median of locked up ${token}` - let veDescription = `Total, mean, and median of ${token} positions' ve${token} voting power` - if (isSubDao) { - if (token === "HNT") { - hntDescription += ` delegated to ${icon.toUpperCase()}` - veDescription += ` delegated to ${icon.toUpperCase()}` - } - } else if (title === "Undelegated") { - hntDescription += ` that is undelegated` - veDescription += " that is undelegated" - } else { - veDescription += " for the network" - } - - return ( - -
-
- - -
-
- - -
-
-
- ) -} diff --git a/src/app/stats/components/Governance/index.tsx b/src/app/stats/components/Governance/index.tsx deleted file mode 100644 index b11e527..0000000 --- a/src/app/stats/components/Governance/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { - fetchHntGovernanceStats, - fetchSubDaoGovernanceStats, -} from "../../utils/fetchGovernanceMetrics" -import { GraphWrapper } from "../GraphWrapper" -import { DelegationHistory } from "./DelegationHistory" - -export const Governance = async () => { - const [veHntStats, veIotMetrics, veMobileMetrics] = await Promise.all([ - fetchHntGovernanceStats(), - fetchSubDaoGovernanceStats("iot"), - fetchSubDaoGovernanceStats("mobile"), - ]) - - return ( -
-
-
-

- veHNT Governance -

- - {/* @ts-expect-error Async Server Component */} - - - {/* - - - */} -
- - {/*
- -
- */} -
- ) -} diff --git a/src/app/stats/components/GraphWrapper.tsx b/src/app/stats/components/GraphWrapper.tsx deleted file mode 100644 index 0162e45..0000000 --- a/src/app/stats/components/GraphWrapper.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import clsx from "clsx" -import { PropsWithChildren, ReactNode } from "react" - -export const GraphWrapper = ({ - children, - label, -}: PropsWithChildren<{ label: string | ReactNode }>) => { - return ( -
-

{label}

- {children} -
- ) -} diff --git a/src/app/stats/components/HntEmissions.tsx b/src/app/stats/components/HntEmissions.tsx deleted file mode 100644 index 06367ab..0000000 --- a/src/app/stats/components/HntEmissions.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { fetchHntEmissions } from "../utils/dune/fetchHntEmissions" -import { formatDuneDate } from "../utils/dune/formatDuneDate" -import { GraphWrapper } from "./GraphWrapper" -import { HntEmissionRow, HntEmissionsGraph } from "./HntEmissionsGraph" -import { Tooltip } from "./Tooltip" - -export const HntEmissions = async () => { - const { totalEmissions, subDaoEmissions } = await fetchHntEmissions() - - const hntEmissionsData: { [date: string]: HntEmissionRow } = {} - totalEmissions.forEach(({ block_date, hnt_minted }) => { - hntEmissionsData[block_date] = { - date: block_date, - total: hnt_minted, - iot: 0, - mobile: 0, - } - }) - - subDaoEmissions.result.rows.forEach(({ entity, block_date, hnt_minted }) => { - // required if both queries have yet to execute in latest epoch - if (!hntEmissionsData[block_date]) { - hntEmissionsData[block_date] = { - date: block_date, - total: 0, - iot: 0, - mobile: 0, - } - } - const subDao = entity === "IOT Treasury" ? "iot" : "mobile" - hntEmissionsData[block_date][subDao] = parseInt(hnt_minted, 10) - }) - - const hntEmissionsRows = Object.keys(hntEmissionsData) - .map((date) => hntEmissionsData[date]) - .reverse() - /* - Sometimes one query will run before emissions are actually emitted causing - non-complete rows. Filtering these rows out. When this happens we'll have 28 - instead of 30. - */ - .filter((row) => !!row.iot && !!row.mobile && !!row.total) - - return ( -
- - HNT Emissions History (30 days) - - - } - > - - -
- ) -} diff --git a/src/app/stats/components/HntEmissionsGraph.tsx b/src/app/stats/components/HntEmissionsGraph.tsx deleted file mode 100644 index 35ecd27..0000000 --- a/src/app/stats/components/HntEmissionsGraph.tsx +++ /dev/null @@ -1,125 +0,0 @@ -"use client" - -import { - HELIUM_IOT_COLOR, - HELIUM_MOBILE_COLOR, -} from "@/components/HotspotsMap/utils" -import clsx from "clsx" -import { format } from "date-fns" -import { - Line, - LineChart, - ResponsiveContainer, - Tooltip, - TooltipProps, - XAxis, - YAxis, -} from "recharts" -import { - NameType, - ValueType, -} from "recharts/types/component/DefaultTooltipContent" - -const DATE_FORMAT = "M/dd" -const NAME_TO_COLOR = { - iot: HELIUM_IOT_COLOR, - mobile: HELIUM_MOBILE_COLOR, - total: "#474DFF", -} - -const CustomTooltip = ({ - active, - payload, - label, -}: TooltipProps) => { - if (active && payload) { - return ( -
-

Date: {format(new Date(label), DATE_FORMAT)}

- {payload.map(({ dataKey, name, value }) => { - let valueFormatted = value - let labelFormatted = "" - const labelName = String(name) - if (labelName === "total") { - labelFormatted = "Total" - } else { - labelFormatted = labelName.toUpperCase() + " Treasury" - } - - return ( -
-
-
-

{labelFormatted}:

-
-

{valueFormatted}

-
- ) - })} -
- ) - } - - return null -} - -export type HntEmissionRow = { - date: string - total: number - iot: number - mobile: number -} - -type DelegationHistoryGraphProps = { - data: HntEmissionRow[] -} - -export const HntEmissionsGraph = ({ data }: DelegationHistoryGraphProps) => { - return ( -
- - - } /> - - format(new Date(date), DATE_FORMAT)} - /> - - - - - -
- ) -} diff --git a/src/app/stats/components/HntInfo.tsx b/src/app/stats/components/HntInfo.tsx deleted file mode 100644 index 813735a..0000000 --- a/src/app/stats/components/HntInfo.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import { StatItem } from "@/app/stats/components/StatItem" -import { StatsList } from "@/app/stats/components/StatsList" -import { ONE_DAY_MS, epochFromDate, fetcher } from "@/app/stats/utils" -import { db } from "@/knex/db" -import { SupplyLimit } from "@/knex/supplyLimit" -import { BN } from "@coral-xyz/anchor" -import { currentEpoch } from "@helium/helium-sub-daos-sdk" -import { - HNT_MINT, - amountAsNum, - humanReadable, - humanReadableBigint, - numberWithCommas, -} from "@helium/spl-utils" -import { format } from "date-fns" -import { fetchSubDaoEpochInfo } from "../../stats/utils/fetchSubDaoEpochInfo" -import { fetchUnixTimestap } from "../../stats/utils/fetchUnixTimestamp" -import { - fetchHntBurn, - fetchHntEmissions, -} from "../utils/dune/fetchHntEmissions" -import { HNT_MAX_SUPPLY } from "../utils/emissions" -import { fetchHntGovernanceStats } from "../utils/fetchGovernanceMetrics" -import { fetchMint } from "../utils/fetchMint" -import { getNextHalvening } from "../utils/getNextHalvening" -import { - MAX_DAILY_NET_EMISSIONS, - getRemainingEmissions, -} from "../utils/remainingEmissions" -import { Countdown } from "./Countdown" - -const COINGECKO_HNT_URL = - "https://api.coingecko.com/api/v3/simple/price?ids=helium&vs_currencies=usd" -const DATE_FORMAT = "M/dd HH:mm OOOO" - -export const HntInfo = async () => { - const [ - unixTime, - hntPrice, - hntMint, - governanceStats, - epochInfo, - hntEmissions, - hntBurned, - ] = await Promise.all([ - fetchUnixTimestap(), - fetcher(COINGECKO_HNT_URL), - fetchMint(HNT_MINT), - fetchHntGovernanceStats(), - fetchSubDaoEpochInfo("mobile"), - fetchHntEmissions(), - fetchHntBurn(), - ]) - - const hntStakedTotal = governanceStats.network.total.hnt - const hntStakedPercent = hntStakedTotal - .mul(new BN(10000)) - .div(new BN(hntMint.info?.info.supply)) - - const epoch = currentEpoch(new BN(unixTime)).toNumber() - const lastEpochEnd = amountAsNum(epochInfo.info?.rewardsIssuedAt || 0, 0) - - const isSameDay = - epochFromDate(new Date(hntBurned.execution_started_at)) === - epochFromDate(new Date()) - - const todayHntBurn = isSameDay - ? hntBurned.result.rows.reverse()[0].hnt_burned - : 0 - - const remainingHntEmissions = Math.round( - getRemainingEmissions(new Date(), "hnt") - ) - const supplyLimit = - hntMint.info?.info.supply! + - BigInt(remainingHntEmissions) * BigInt(100000000) + - BigInt( - Math.ceil(Math.min(todayHntBurn * -1, MAX_DAILY_NET_EMISSIONS) * 10000) - ) * - BigInt(10000) - - const supplyLimitDb = new SupplyLimit(db) - const supplyLimitRecord = await supplyLimitDb.latestOrInsert({ - recorded_at: isSameDay - ? new Date(hntBurned.execution_started_at) - : new Date(), - hnt_burned: BigInt(Math.round(todayHntBurn * 10000)) * BigInt(10000), - supply: hntMint.info?.info.supply!, - supply_limit: supplyLimit, - }) - - return ( - - - - - - - - - - - - - - - - - ) -} diff --git a/src/app/stats/components/NetworkUsage.tsx b/src/app/stats/components/NetworkUsage.tsx deleted file mode 100644 index faf5f32..0000000 --- a/src/app/stats/components/NetworkUsage.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { amountAsNum } from "@helium/spl-utils" -import { ONE_DAY_MS, ONE_DAY_UNIX } from "../utils" -import { fetchRecentEpochs } from "../utils/fetchRecentEpochs" -import { GraphWrapper } from "./GraphWrapper" -import { NetworkUsageGraph, NetworkUsageGraphRow } from "./NetworkUsageGraph" - -export const NetworkUsage = async () => { - const { mobileEpochs, iotEpochs } = await fetchRecentEpochs() - - const cleanedData: NetworkUsageGraphRow[] = mobileEpochs - .map((mEpoch, index) => { - const iotInfo = iotEpochs[index].info - const mobileInfo = mEpoch.info - - // need to pass date as a number to client side - const date = amountAsNum(mobileInfo.epoch, 0) * ONE_DAY_MS - - const mobileUsage = amountAsNum(mobileInfo.dcBurned, 5) - const iotUsage = amountAsNum(iotInfo.dcBurned, 5) - - const totalUsage: BN = (mobileInfo.dcBurned as BN) - .clone() - .add(iotInfo.dcBurned) - - let projectedRemaining = 0 - let total = totalUsage - - if (index === 0) { - const now = new Date().valueOf() / 1000 - const timeElapsed = now % ONE_DAY_UNIX - const percent = Math.max(timeElapsed / ONE_DAY_UNIX, 0.0001) - const projectedTotal: BN = totalUsage - .mul(new BN(10000)) - .div(new BN(percent * 10000)) - - total = projectedTotal - projectedRemaining = amountAsNum(projectedTotal.sub(totalUsage), 5) - } - - const rate = amountAsNum(total.clone().div(new BN(24)), 5) - - return { - iotUsage, - mobileUsage, - date, - rate, - projectedRemaining, - } - }) - .reverse() - - return ( -
- - - -
- ) -} diff --git a/src/app/stats/components/NetworkUsageGraph.tsx b/src/app/stats/components/NetworkUsageGraph.tsx deleted file mode 100644 index c32ad05..0000000 --- a/src/app/stats/components/NetworkUsageGraph.tsx +++ /dev/null @@ -1,164 +0,0 @@ -"use client" - -import { - HELIUM_IOT_COLOR, - HELIUM_MOBILE_COLOR, -} from "@/components/HotspotsMap/utils" -import clsx from "clsx" -import { format } from "date-fns" -import { - Bar, - ComposedChart, - Line, - ResponsiveContainer, - Tooltip, - TooltipProps, - XAxis, - YAxis, -} from "recharts" -import { - NameType, - ValueType, -} from "recharts/types/component/DefaultTooltipContent" - -const DATE_FORMAT = "M/dd" -const RATE_COLOR = "#ff7300" - -const CustomTooltip = ({ - active, - payload, - label, -}: TooltipProps) => { - if (active && payload) { - return ( -
-

Date: {format(label, DATE_FORMAT)}

- {payload - .sort((a) => { - // want total / projected remaining first - if (a.name === "projectedRemaining") { - return -1 - } - return 1 - }) - .map(({ dataKey, name, value }) => { - let labelFormatted = "" - let dotColor = "#474DFF" - - if (name === "iotUsage") { - labelFormatted = "IOT usage" - dotColor = HELIUM_IOT_COLOR - } else if (name === "mobileUsage") { - labelFormatted = "MOBILE usage" - dotColor = HELIUM_MOBILE_COLOR - } else if (name === "rate") { - labelFormatted = "USD/hour" - dotColor = RATE_COLOR - } else if (name === "projectedRemaining") { - labelFormatted = value === 0 ? "Daily Total" : "Est Daily Total" - dotColor = "none" - - const targetNames = [ - "iotUsage", - "mobileUsage", - "projectedRemaining", - ] - const total = payload.reduce((acc, current) => { - if (targetNames.includes(current.name as string)) { - return acc + (current.value as number) - } - return acc - }, 0) - value = total - } - let valueFormatted = "$" + (value as number).toFixed(2) - - return ( -
-
-
-

{labelFormatted}:

-
-

{valueFormatted}

-
- ) - })} -
- ) - } - - return null -} - -export type NetworkUsageGraphRow = { - iotUsage: number - mobileUsage: number - date: number -} - -type NetworkUsageGraphProps = { - data: NetworkUsageGraphRow[] -} - -export const NetworkUsageGraph = ({ data }: NetworkUsageGraphProps) => { - return ( -
- - - } /> - "$" + (value as number).toFixed(0)} - yAxisId="USD" - orientation="right" - /> - `$${(value as number).toFixed(0)}/h`} - yAxisId="USD/h" - /> - format(new Date(date), DATE_FORMAT)} - /> - - - - - - -
- ) -} diff --git a/src/app/stats/components/StatItem.tsx b/src/app/stats/components/StatItem.tsx deleted file mode 100644 index dd64c34..0000000 --- a/src/app/stats/components/StatItem.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { numberWithCommas } from "@helium/spl-utils" -import clsx from "clsx" -import { PropsWithChildren } from "react" -import { CountdownRenderProps } from "react-countdown" -import { ToolTipProps, Tooltip } from "./Tooltip" - -export const CountdownRenderer = ({ - days, - formatted: { hours, minutes, seconds }, -}: CountdownRenderProps) => { - let countdown = "" - if (!!days) { - countdown = `${days} days` - if (days < 10) countdown += ` ${hours}:${minutes}:${seconds}` - } else countdown = `${hours}:${minutes}:${seconds}` - return {countdown} -} - -type StatItemProps = { - label: string - value?: string | number - unit?: string - tooltip?: ToolTipProps -} - -export const StatItem = ({ - label, - value, - children, - unit, - tooltip, -}: PropsWithChildren) => { - if (typeof value === "number") value = numberWithCommas(value, 0) - const isValueString = typeof value === "string" - const Value = !isValueString ? ( - children - ) : ( -

- {value} - {!!unit && {unit}} -

- ) - - return ( -
-
-

{label}

- {!!tooltip && } -
- {Value} -
- ) -} diff --git a/src/app/stats/components/StatsList.tsx b/src/app/stats/components/StatsList.tsx deleted file mode 100644 index eb43f1a..0000000 --- a/src/app/stats/components/StatsList.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { HeliumIcon } from "@/components/icons/HeliumIcon" -import { HeliumIotIcon } from "@/components/icons/HeliumIotIcon" -import { HeliumMobileIcon } from "@/components/icons/HeliumMobileIcon" -import clsx from "clsx" -import Link from "next/link" -import { PropsWithChildren } from "react" - -export type Icon = "hnt" | "mobile" | "iot" | "undelegated" - -const IconInfo = { - hnt: { Icon: HeliumIcon, styles: "fill-[#474DFF]" }, - mobile: { Icon: HeliumMobileIcon, styles: "" }, - iot: { Icon: HeliumIotIcon, styles: "" }, - undelegated: { Icon: HeliumIotIcon, styles: "fill-[#474DFF]" }, -} - -type StatsListProps = { - title: string - link?: string - linkText?: string - icon: Icon -} - -export const StatsList = ({ - children, - title, - link, - linkText, - icon, -}: PropsWithChildren) => { - const { Icon, styles } = IconInfo[icon] - - return ( -
-
-
- -

- {title} -

-
- {!!link && !!linkText && ( - - {linkText} - - )} -
-
- <>{children} -
-
- ) -} diff --git a/src/app/stats/components/SubDaoInfo.tsx b/src/app/stats/components/SubDaoInfo.tsx deleted file mode 100644 index 11e45e2..0000000 --- a/src/app/stats/components/SubDaoInfo.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import { StatItem } from "@/app/stats/components/StatItem" -import { Icon, StatsList } from "@/app/stats/components/StatsList" -import { fetcher, humanReadableVeToken } from "@/app/stats/utils" -import { BN } from "@coral-xyz/anchor" -import { - IOT_MINT, - MOBILE_MINT, - humanReadable, - humanReadableBigint, - numberWithCommas, - toNumber, -} from "@helium/spl-utils" -import { PublicKey } from "@solana/web3.js" -import { IOT_MAX_SUPPLY, MOBILE_MAX_SUPPLY } from "../utils/emissions" -import { fetchSubDaoGovernanceStats } from "../utils/fetchGovernanceMetrics" -import { fetchMint } from "../utils/fetchMint" -import { fetchSubDaoEpochInfo } from "../utils/fetchSubDaoEpochInfo" -import { fetchSubDaoTreasuryInfo } from "../utils/fetchSubDaoTreasuryInfo" -import { fetchTokenAccount } from "../utils/fetchTokenAccount" -import { - getLatestSubNetworkEmissions, - getRemainingEmissions, -} from "../utils/remainingEmissions" -import { SubDao } from "../utils/types" - -type SubDaoType = { - title: string - activeUrl: string - link: string - linkText: string - icon: Icon - subDaoMint: PublicKey - maxDescription: string - activeDetails: string - maxSupply: number -} - -const MOBILE_INFO: SubDaoType = { - title: "MOBILE", - activeUrl: "https://mobile-rewards.oracle.helium.io/active-devices", - link: "https://docs.helium.com/tokens/mobile-token/", - linkText: "Learn More About MOBILE", - icon: "mobile", - subDaoMint: MOBILE_MINT, - maxDescription: - "This is an upper limit that will not be reached and does not consider future MOBILE burn. Reason: Daily emissions are currently only 96% of scheduled emissions, as oracles do not currently receive rewards.", - activeDetails: " This exclusively includes active gateways (not radios).", - maxSupply: MOBILE_MAX_SUPPLY, -} - -const IOT_INFO: SubDaoType = { - title: "IOT", - activeUrl: "https://iot-rewards.oracle.helium.io/active-devices", - link: "https://docs.helium.com/tokens/iot-token/", - linkText: "Learn More About IOT", - icon: "iot", - subDaoMint: IOT_MINT, - maxDescription: - "This is an upper limit that will not be reached and does not consider future IOT burn. Reason: Daily emissions are currently only 93% of scheduled emissions, as oracles do not currently receive rewards.", - activeDetails: "", - maxSupply: IOT_MAX_SUPPLY, -} - -export const SubDaoInfo = async ({ subDao }: { subDao: SubDao }) => { - const { - activeUrl, - activeDetails, - link, - linkText, - title, - icon, - subDaoMint, - maxDescription, - maxSupply, - } = subDao === "mobile" ? MOBILE_INFO : IOT_INFO - const [activeCount, mintInfo, epochInfo, treasuryInfo, governanceMetrics] = - await Promise.all([ - fetcher(activeUrl), - fetchMint(subDaoMint), - fetchSubDaoEpochInfo(subDao), - fetchSubDaoTreasuryInfo(subDaoMint), - fetchSubDaoGovernanceStats(subDao), - ]) - - const treasuryTokenAcct = await fetchTokenAccount(treasuryInfo.info?.treasury) - const mintSupplyNum = - toNumber(mintInfo.info?.info.supply, mintInfo?.info?.info || 6) || 0 - const treasuryHntNum = toNumber(treasuryTokenAcct.info?.amount, 8) || 1 - const swap = mintSupplyNum / treasuryHntNum - - const remainingEmissions = Math.round( - getRemainingEmissions(new Date(), subDao) - ) - const supplyLimit = - mintInfo.info?.info.supply! + BigInt(remainingEmissions) * BigInt(1000000) - - const supplyStaked = governanceMetrics.total.hnt - .mul(new BN(10000)) - .div(new BN(mintInfo.info?.info.supply!)) - - return ( - - - - - - - - - - - - - {/* */} - - ) -} diff --git a/src/app/stats/components/Tooltip.tsx b/src/app/stats/components/Tooltip.tsx deleted file mode 100644 index d90a941..0000000 --- a/src/app/stats/components/Tooltip.tsx +++ /dev/null @@ -1,36 +0,0 @@ -"use client" -// broken into separate Client side component since ReactTooltip uses client side only state - -import { InformationCircleIcon } from "@heroicons/react/24/outline" -import { Tooltip as ReactTooltip } from "react-tooltip" - -export type ToolTipProps = { - sourceText?: string - description?: string - cadence?: string - width?: "xs" | "tiny" - id: string -} - -export const Tooltip = ({ - id, - sourceText, - description, - cadence, - width = "xs", -}: ToolTipProps) => { - return ( -
- - - - -
- {!!description &&

{description}

} - {!!sourceText &&

Source: {sourceText}

} - {!!cadence &&

Updated: {cadence}

} -
-
-
- ) -} diff --git a/src/app/stats/page.tsx b/src/app/stats/page.tsx deleted file mode 100644 index 29d5847..0000000 --- a/src/app/stats/page.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { MapCover } from "@/components/MapCover" -import { Governance } from "./components/Governance" -import { HntEmissions } from "./components/HntEmissions" -import { HntInfo } from "./components/HntInfo" -import { NetworkUsage } from "./components/NetworkUsage" -import { SubDaoInfo } from "./components/SubDaoInfo" - -export const revalidate = 300 // revalidate 5 minutes - -export default async function Page() { - return ( - -
- {/* @ts-expect-error Async Server Component */} - - {/* @ts-expect-error Async Server Component */} - - {/* @ts-expect-error Async Server Component */} - - {/* @ts-expect-error Async Server Component */} - - {/* @ts-expect-error Async Server Component */} - - {/* @ts-expect-error Async Server Component */} - -
-
- ) -} diff --git a/src/app/stats/utils.tsx b/src/app/stats/utils.tsx deleted file mode 100644 index bae093d..0000000 --- a/src/app/stats/utils.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { humanReadable, numberWithCommas } from "@helium/spl-utils" - -export const fetcher = async (url: string) => { - return fetch(url).then((response) => response.json()) -} - -export const veTokenWoDecimal = (numberStr: string, decimals: number) => { - return parseInt( - numberStr - .split("") - .slice(0, numberStr.length - decimals) - .join(""), - 0 - ) -} - -export const humanReadableVeToken = (numberStr: string, decimals: number) => { - const numberWODecimal = veTokenWoDecimal(numberStr, decimals) - return numberWithCommas(numberWODecimal, 0) -} - -export const ONE_DAY_UNIX = 60 * 60 * 24 -export const ONE_DAY_MS = ONE_DAY_UNIX * 1000 - -export const humanReadableLockup = (bn: BN) => { - const num = bn.toNumber() - const days = Math.round(num / ONE_DAY_UNIX) - return `${days} days` -} - -export const humanReadableToken = (bn: BN, decimals: number) => { - return humanReadable(bn, decimals).split(".")[0] -} - -export const epochFromDate = (date: Date) => { - return Math.floor(date.valueOf() / ONE_DAY_MS) -} diff --git a/src/app/stats/utils/accountCache.ts b/src/app/stats/utils/accountCache.ts deleted file mode 100644 index 565c1c1..0000000 --- a/src/app/stats/utils/accountCache.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { AccountFetchCache } from "@helium/account-fetch-cache" -import { Connection } from "@solana/web3.js" - -const createAccountCache = () => { - const connection = new Connection(process.env.SOLANA_RPC!) - - return new AccountFetchCache({ - connection, - delay: 50, - commitment: "confirmed", - extendConnection: false, - }) -} - -export const accountCache = createAccountCache() diff --git a/src/app/stats/utils/addPositionsMeta.ts b/src/app/stats/utils/addPositionsMeta.ts deleted file mode 100644 index 0a718ee..0000000 --- a/src/app/stats/utils/addPositionsMeta.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { calcPositionVotingPower } from "./calcPositionVotingPower" -import { fetchRegistrar } from "./fetchRegistrar" -import { fetchUnixTimestap } from "./fetchUnixTimestamp" -import { DelegatedPosition, Position, Registrar } from "./types" - -const IOT_SUBDAO = "39Lw1RH6zt8AJvKn3BTxmUDofzduCM2J3kSaGDZ8L7Sk" - -export enum SubDaos { - MOBILE = "mob", - IOT = "iot", -} - -export interface PositionWithMeta extends Position { - subDao?: SubDaos - delegatedPositionKey?: string - veHnt: BN -} - -export const addPositionsMeta = async ({ - positions, - delegatedPositions, -}: { - positions: Position[] - delegatedPositions: DelegatedPosition[] -}) => { - const [registrar, now] = await Promise.all([ - fetchRegistrar(positions[0].registrar), - fetchUnixTimestap(), - ]) - const nowBN = new BN(now) - - const posKeyToDelegatedPos: { [key: string]: DelegatedPosition } = {} - delegatedPositions.forEach((delegatedPos) => { - const posKey = delegatedPos.position.toString() - posKeyToDelegatedPos[posKey] = delegatedPos - }) - - return positions.map((position): PositionWithMeta => { - const posKey = position.pubkey.toString() - const delegatedPos = posKeyToDelegatedPos[posKey] - const delegatedMeta = !delegatedPos - ? {} - : { - subDao: - delegatedPos.subDao.toString() === IOT_SUBDAO - ? SubDaos.IOT - : SubDaos.MOBILE, - delegatedPositionKey: delegatedPos.pubkey.toString(), - } - - return { - ...delegatedMeta, - ...position, - veHnt: calcPositionVotingPower({ - position: position, - registrar: registrar.info as Registrar, - unixNow: nowBN, - }), - } - }) -} diff --git a/src/app/stats/utils/calcLockupMultiplier.ts b/src/app/stats/utils/calcLockupMultiplier.ts deleted file mode 100644 index 98276c7..0000000 --- a/src/app/stats/utils/calcLockupMultiplier.ts +++ /dev/null @@ -1,23 +0,0 @@ -// ripped from governance-ui - should eventually get moved into helium-program-library - -export const calcMultiplier = ({ - baselineScaledFactor, - maxExtraLockupScaledFactor, - lockupSecs, - lockupSaturationSecs, -}: { - baselineScaledFactor: number - maxExtraLockupScaledFactor: number - lockupSecs: number - lockupSaturationSecs: number -}): number => { - let multiplier = 0 - const base = baselineScaledFactor !== 0 ? baselineScaledFactor : 1e9 - - multiplier = - (Math.min(lockupSecs / lockupSaturationSecs, 1) * - maxExtraLockupScaledFactor) / - base - - return multiplier -} diff --git a/src/app/stats/utils/calcPositionVotingPower.ts b/src/app/stats/utils/calcPositionVotingPower.ts deleted file mode 100644 index 35272bf..0000000 --- a/src/app/stats/utils/calcPositionVotingPower.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { calcMultiplier } from "./calcLockupMultiplier" -import { LockupKind, Position, Registrar, VotingMintConfig } from "./types" - -// ripped from governance-ui - should eventually get moved into helium-program-library -export const calcPositionVotingPower = ({ - position, - registrar, - unixNow, -}: { - position: Position | null - registrar: Registrar | null - unixNow: BN -}) => { - let votingPower: BN = new BN(0) - const mintCfgs = registrar?.votingMints || [] - const mintCfg = position ? mintCfgs[position.votingMintConfigIdx] : undefined - - if (position && mintCfg) { - const { - lockupSaturationSecs, - baselineVoteWeightScaledFactor, - maxExtraLockupVoteWeightScaledFactor, - genesisVotePowerMultiplier = 1, - } = mintCfg as VotingMintConfig - const hasGenesisMultiplier = position.genesisEnd.gt(unixNow) - const lockup = position!.lockup - const lockupKind = Object.keys(lockup.kind as LockupKind)[0] - const currTs = lockupKind === "constant" ? lockup.startTs : unixNow - const lockupSecs = lockup.endTs.sub(currTs).toNumber() - const amountLockedNative = position!.amountDepositedNative - const baselineScaledFactorNum = baselineVoteWeightScaledFactor.toNumber() - const maxExtraLockupVoteWeightScaledFactorNum = - maxExtraLockupVoteWeightScaledFactor.toNumber() - const lockupSaturationSecsNum = lockupSaturationSecs.toNumber() - - const multiplier = - (hasGenesisMultiplier ? genesisVotePowerMultiplier : 1) * - calcMultiplier({ - baselineScaledFactor: baselineScaledFactorNum, - maxExtraLockupScaledFactor: maxExtraLockupVoteWeightScaledFactorNum, - lockupSecs, - lockupSaturationSecs: lockupSaturationSecsNum, - }) - - votingPower = amountLockedNative.muln(multiplier) - } - - return votingPower -} diff --git a/src/app/stats/utils/dune/fetchHntEmissions.ts b/src/app/stats/utils/dune/fetchHntEmissions.ts deleted file mode 100644 index 6e8263e..0000000 --- a/src/app/stats/utils/dune/fetchHntEmissions.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { cache } from "react" - -const DUNE_KEY = process.env.DUNE_KEY || "" -const meta = { - "x-dune-api-key": DUNE_KEY, -} -const header = new Headers(meta) - -const duneQuery = async ( - id: number -): Promise<{ - execution_started_at: string - result: { - rows: ResponseT - } -}> => { - return await fetch(`https://api.dune.com/api/v1/query/${id}/results`, { - headers: header, - }) - .then((res) => res.json()) - .catch(() => []) -} - -type HstEmission = { - block_date: string - hnt_minted: string -} - -type TreasuryHntEmission = { - block_date: string - entity: "IOT Treasury" | "MOBILE Treasury" - hnt_minted: string -} - -type TotalHntEmission = { - block_date: string - hnt_minted: number -} - -export const fetchHntEmissions = cache(async () => { - const [subDaoEmissions, hstEmissions] = await Promise.all([ - duneQuery(2566814), - duneQuery(2571254), - ]) - - const totalEmissionsCombined: { [date: string]: TotalHntEmission } = {} - hstEmissions.result.rows.forEach(({ block_date, hnt_minted }) => { - totalEmissionsCombined[block_date] = { - block_date, - hnt_minted: parseFloat(hnt_minted), - } - }) - subDaoEmissions.result.rows.forEach(({ block_date, hnt_minted }) => { - if (totalEmissionsCombined[block_date]) { - totalEmissionsCombined[block_date].hnt_minted += parseFloat(hnt_minted) - } - }) - - const currentDate = new Date() - const thirtyDaysAgo = new Date() - thirtyDaysAgo.setDate(currentDate.getDate() - 30) - - const totalEmissions = Object.keys(totalEmissionsCombined) - .map((date) => { - const { block_date, hnt_minted } = totalEmissionsCombined[date] - return { - block_date, - hnt_minted: Math.floor(hnt_minted), - } - }) - .filter(({ block_date }) => { - return new Date(block_date) > thirtyDaysAgo - }) - - return { - totalEmissions, - subDaoEmissions, - } -}) - -type HntBurned = { - block_date: string - dc_minted: string - hnt_burned: number - hnt_avg_price: string -} - -export const fetchHntBurn = () => { - return duneQuery(2627250) -} diff --git a/src/app/stats/utils/dune/formatDuneDate.ts b/src/app/stats/utils/dune/formatDuneDate.ts deleted file mode 100644 index fbee2bf..0000000 --- a/src/app/stats/utils/dune/formatDuneDate.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { format } from "date-fns" - -const DATE_FORMAT = "M/dd HH:mm OOOO" - -export const formatDuneDate = (date: string) => { - return format(new Date(date), DATE_FORMAT) -} diff --git a/src/app/stats/utils/emissions.ts b/src/app/stats/utils/emissions.ts deleted file mode 100644 index 37c2e47..0000000 --- a/src/app/stats/utils/emissions.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const HNT_MAX_SUPPLY = 223_000_000 -export const IOT_MAX_SUPPLY = 200_000_000_000 -export const MOBILE_MAX_SUPPLY = 230_000_000_000 diff --git a/src/app/stats/utils/fetchAccount.ts b/src/app/stats/utils/fetchAccount.ts deleted file mode 100644 index c8f3117..0000000 --- a/src/app/stats/utils/fetchAccount.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { accountCache } from "@/app/stats/utils/accountCache" -import { TypedAccountParser } from "@helium/account-fetch-cache" -import { AccountInfo, PublicKey } from "@solana/web3.js" - -export interface ParsedAccountBase { - pubkey: PublicKey - account: AccountInfo - info: T -} - -export interface AccountState { - account?: AccountInfo - info?: T | undefined -} - -/** - * Generic fetch to get a cached, auto updating, deserialized form of any Solana account. Massively saves on RPC usage by using - * the spl-utils accountFetchCache. - * - * @param key - * @param parser - * @param isStatic - * @returns - */ -export async function fetchAccount( - key: null | undefined | PublicKey, - parser: TypedAccountParser, - isStatic = false // Set if the accounts data will never change, optimisation to lower websocket usage. -): Promise> { - const cache = accountCache - - const parsedAccountBaseParser = ( - pubkey: PublicKey, - data: AccountInfo - ): ParsedAccountBase => { - try { - const info = parser(pubkey, data) - return { - pubkey, - account: data, - info, - } - } catch (e) { - console.error(`Error while parsing: ${(e as Error).message}`) - throw e - } - } - - const id = typeof key === "string" ? key : key?.toBase58() - - return await new Promise>((resolve, reject) => { - if (!id || !cache) { - return reject("No pubkey or cache") - } - return cache.search(id, parsedAccountBaseParser, isStatic).then((acc) => { - if (acc) { - try { - const nextInfo = parser && parser(acc.pubkey, acc?.account) - resolve({ - info: nextInfo, - account: acc.account, - }) - } catch (e) { - return reject(`Error while parsing: ${(e as Error).message}`) - } - } else { - return reject("No account") - } - }) - }).then((result) => { - if (!result.info) throw new Error("No info") - return result - }) -} diff --git a/src/app/stats/utils/fetchDelegatedPositions.ts b/src/app/stats/utils/fetchDelegatedPositions.ts deleted file mode 100644 index d23f21e..0000000 --- a/src/app/stats/utils/fetchDelegatedPositions.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { bs58 } from "@coral-xyz/anchor/dist/cjs/utils/bytes" -import { PROGRAM_ID as HELIUM_DAO_ID } from "@helium/helium-sub-daos-sdk" -import { HeliumSubDaos } from "@helium/idls/lib/types/helium_sub_daos" -import { accountCache } from "./accountCache" -import { getIdlParser } from "./getIdlParser" -// @ts-ignore -import { IDL as subDaosIDL } from "@helium/idls/lib/cjs/helium_sub_daos" -import { DelegatedPosition } from "./types" - -const IOT_SUBDAO = "39Lw1RH6zt8AJvKn3BTxmUDofzduCM2J3kSaGDZ8L7Sk" -const MOBILE_SUBDAO = "Gm9xDCJawDEKDrrQW6haw94gABaYzQwCq4ZQU8h8bd22" - -const DELEGATE_POSITION_V0_DESCRIMINATOR = [251, 212, 32, 100, 102, 1, 247, 81] -const DELEGATE_POSITION_V0_DESCRIMINATOR_B58 = bs58.encode( - Buffer.from(DELEGATE_POSITION_V0_DESCRIMINATOR) -) - -const delegatedPositionParser = getIdlParser( - subDaosIDL as HeliumSubDaos, - "delegatedPositionV0" -) - -export const fetchDelegatedPositions = async () => { - const connection = accountCache.connection - - const accounts = await connection.getProgramAccounts(HELIUM_DAO_ID, { - filters: [ - { - dataSize: 196, // number of bytes - }, - { - memcmp: { - offset: 0, // number of bytes - bytes: DELEGATE_POSITION_V0_DESCRIMINATOR_B58, // base58 encoded string - }, - }, - ], - }) - - return accounts.map((account, i) => { - return { - ...account, - info: delegatedPositionParser( - account.pubkey, - account.account - ) as DelegatedPosition, - } - }) -} diff --git a/src/app/stats/utils/fetchGovernanceMetrics.ts b/src/app/stats/utils/fetchGovernanceMetrics.ts deleted file mode 100644 index b86480a..0000000 --- a/src/app/stats/utils/fetchGovernanceMetrics.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { cache } from "react" -import { addPositionsMeta } from "./addPositionsMeta" -import { fetchDelegatedPositions } from "./fetchDelegatedPositions" -import { fetchPositions } from "./fetchPositions" -import { - PositionMetricsByGroup, - getGroupedPositionMetrics, - getPositionMetrics, -} from "./positionsMetrics" -import { SubDao } from "./types" - -// Constant dev stats to avoid lengthy query -const DEV_STATS: PositionMetricsByGroup = { - iot: { - stats: { - avgVehnt: new BN("16504989572469"), - avgHnt: new BN("118766358469"), - avgLockup: new BN("70832890"), - medianVehnt: new BN("591001198238"), - medianHnt: new BN("5000000000"), - medianLockup: new BN("61595855"), - }, - total: { - count: new BN("8028"), - hnt: new BN("953451549365328"), - vehnt: new BN("132501876514036308"), - }, - }, - mobile: { - stats: { - avgVehnt: new BN("20131304531050"), - avgHnt: new BN("212512684786"), - avgLockup: new BN("71358773"), - medianVehnt: new BN("675000000000"), - medianHnt: new BN("5000000000"), - medianLockup: new BN("61615151"), - }, - total: { - count: new BN("3397"), - hnt: new BN("721905090218708"), - vehnt: new BN("68385810657852879"), - }, - }, - network: { - stats: { - avgVehnt: new BN("21076989079226"), - avgHnt: new BN("274595426492"), - avgLockup: new BN("68202917"), - medianVehnt: new BN("527268864466"), - medianHnt: new BN("5000000000"), - medianLockup: new BN("61405008"), - }, - total: { - count: new BN("12931"), - hnt: new BN("3550788683546754"), - vehnt: new BN("272546366009733278"), - }, - }, - undelegated: { - stats: { - avgVehnt: new BN("47582062986392"), - avgHnt: new BN("1245308130121"), - avgLockup: new BN("47114737"), - medianVehnt: new BN("162650183588"), - medianHnt: new BN("2500000000"), - medianLockup: new BN("30003207"), - }, - total: { - count: new BN("1506"), - hnt: new BN("1875432043962718"), - vehnt: new BN("71658467167152029"), - }, - }, -} -const getHntGovernanceMetrics = async () => { - if (process.env.NODE_ENV === "development") return DEV_STATS - - const [positions, delegatedPositions] = await Promise.all([ - fetchPositions("hnt"), - fetchDelegatedPositions(), - ]) - - const positionsWithMeta = await addPositionsMeta({ - positions: positions.map(({ info }) => info), - delegatedPositions: delegatedPositions.map(({ info }) => info), - }) - return await getGroupedPositionMetrics(positionsWithMeta) -} - -export const fetchHntGovernanceStats = cache(getHntGovernanceMetrics) - -const getSubDaoGovernanceMetrics = async (subDao: SubDao) => { - if (process.env.NODE_ENV === "development") return DEV_STATS[subDao] - - const positions = await fetchPositions(subDao) - const positionsWithMeta = await addPositionsMeta({ - positions: positions.map(({ info }) => info), - delegatedPositions: [], - }) - const metrics = await getPositionMetrics(positionsWithMeta) - - return metrics -} - -export const fetchSubDaoGovernanceStats = cache(getSubDaoGovernanceMetrics) diff --git a/src/app/stats/utils/fetchIdlAccount.ts b/src/app/stats/utils/fetchIdlAccount.ts deleted file mode 100644 index d3782d6..0000000 --- a/src/app/stats/utils/fetchIdlAccount.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { BorshAccountsCoder, Idl, IdlAccounts } from "@coral-xyz/anchor" -import { TypedAccountParser } from "@helium/account-fetch-cache" -import { PublicKey } from "@solana/web3.js" -import { AccountState, fetchAccount } from "./fetchAccount" - -export function fetchIdlAccount( - key: PublicKey, - idl: IDL, - type: A -): Promise[A]>> { - const parser: TypedAccountParser[A]> = (pubkey, data) => { - try { - const coder = new BorshAccountsCoder(idl) - const decoded = coder.decode(type, data.data) - decoded.pubkey = pubkey - return decoded - } catch (e: any) { - console.error(e) - } - } - return fetchAccount(key, parser) -} diff --git a/src/app/stats/utils/fetchMint.ts b/src/app/stats/utils/fetchMint.ts deleted file mode 100644 index b1c19cc..0000000 --- a/src/app/stats/utils/fetchMint.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Mint, unpackMint } from "@solana/spl-token" -import { AccountInfo, PublicKey } from "@solana/web3.js" -import { ParsedAccountBase, fetchAccount } from "./fetchAccount" - -export const MintParser = (pubKey: PublicKey, info: AccountInfo) => { - const data = unpackMint(pubKey, info) - - const details = { - pubkey: pubKey, - account: { - ...info, - }, - info: data, - } as ParsedAccountBase - - return details -} - -export function fetchMint(key: PublicKey | undefined | null) { - return fetchAccount>(key, MintParser) -} diff --git a/src/app/stats/utils/fetchPositions.ts b/src/app/stats/utils/fetchPositions.ts deleted file mode 100644 index 0ab0fe1..0000000 --- a/src/app/stats/utils/fetchPositions.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { bs58 } from "@coral-xyz/anchor/dist/cjs/utils/bytes" -import { VoterStakeRegistry } from "@helium/idls/lib/types/voter_stake_registry" -import { PublicKey } from "@solana/web3.js" -import { accountCache } from "./accountCache" -import { getIdlParser } from "./getIdlParser" -import { Position } from "./types" - -// @ts-ignore -import { IDL as vsrRegistryIDL } from "@helium/idls/lib/cjs/voter_stake_registry" -import { HNT_MINT, IOT_MINT, MOBILE_MINT } from "@helium/spl-utils" -import { registrarKey } from "@helium/voter-stake-registry-sdk" - -const getRegistrarFromRealm = ({ - realmName, - mint, -}: { - realmName: string - mint: PublicKey -}) => { - const realm = PublicKey.findProgramAddressSync( - [Buffer.from("governance", "utf-8"), Buffer.from(realmName, "utf-8")], - new PublicKey("hgovkRU6Ghe1Qoyb54HdSLdqN7VtxaifBzRmh9jtd3S") - )[0] - return registrarKey(realm, mint)[0] -} - -const HELIUM_VSR_ID = "hvsrNC3NKbcryqDs2DocYHZ9yPKEVzdSjQG6RVtK1s8" -const POSTION_VO_DESCRIMINATOR = [152, 131, 154, 46, 158, 42, 31, 233] - -const HNT_REGISTRAR = getRegistrarFromRealm({ - realmName: "Helium", - mint: HNT_MINT, -}).toBytes() -const HNT_POSITION_V0_DESCRIMINATOR = [ - ...POSTION_VO_DESCRIMINATOR, - ...HNT_REGISTRAR, -] -const HNT_POSITION_V0_DESCRIMINATOR_B58 = bs58.encode( - Buffer.from(HNT_POSITION_V0_DESCRIMINATOR) -) - -const IOT_REGISTRAR = getRegistrarFromRealm({ - realmName: "Helium IOT", - mint: IOT_MINT, -}).toBytes() -const IOT_POSITION_V0_DESCRIMINATOR = [ - ...POSTION_VO_DESCRIMINATOR, - ...IOT_REGISTRAR, -] -const IOT_POSITION_V0_DESCRIMINATOR_B58 = bs58.encode( - Buffer.from(IOT_POSITION_V0_DESCRIMINATOR) -) - -const MOBILE_REGISTRAR = getRegistrarFromRealm({ - realmName: "Helium MOBILE", - mint: MOBILE_MINT, -}).toBytes() -const MOBILE_POSITION_V0_DESCRIMINATOR = [ - ...POSTION_VO_DESCRIMINATOR, - ...MOBILE_REGISTRAR, -] -const MOBILE_POSITION_V0_DESCRIMINATOR_B58 = bs58.encode( - Buffer.from(MOBILE_POSITION_V0_DESCRIMINATOR) -) - -const positionParser = getIdlParser( - vsrRegistryIDL as VoterStakeRegistry, - "positionV0" -) - -const positionTypeToDescriminiator = { - hnt: HNT_POSITION_V0_DESCRIMINATOR_B58, - iot: IOT_POSITION_V0_DESCRIMINATOR_B58, - mobile: MOBILE_POSITION_V0_DESCRIMINATOR_B58, -} - -type PositionType = "hnt" | "mobile" | "iot" - -export const fetchPositions = async (positionType: PositionType) => { - const descriminator = positionTypeToDescriminiator[positionType] - const connection = accountCache.connection - - const accounts = await connection.getProgramAccounts( - new PublicKey(HELIUM_VSR_ID), - { - filters: [ - { - dataSize: 180, // number of bytes - }, - { - memcmp: { - offset: 0, // number of bytes - bytes: descriminator, // base58 encoded string - }, - }, - ], - } - ) - - return accounts.map((account, i) => { - return { - ...account, - info: positionParser(account.pubkey, account.account) as Position, - } - }) -} diff --git a/src/app/stats/utils/fetchRecentEpochs.ts b/src/app/stats/utils/fetchRecentEpochs.ts deleted file mode 100644 index 694895c..0000000 --- a/src/app/stats/utils/fetchRecentEpochs.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { cache } from "react" -import { fetchSubDaoEpochInfo } from "./fetchSubDaoEpochInfo" - -const getRecentEpochs = async () => { - const mobileEpochQueries: any[] = [] - const iotEpochsQueries: any[] = [] - - for (let offset = 0; offset <= 30; offset++) { - mobileEpochQueries.push(fetchSubDaoEpochInfo("mobile", offset)) - iotEpochsQueries.push(fetchSubDaoEpochInfo("iot", offset)) - } - - const [mobileEpochs, iotEpochs] = await Promise.all([ - Promise.all(mobileEpochQueries), - Promise.all(iotEpochsQueries), - ]) - - return { - mobileEpochs, - iotEpochs, - } -} - -export const fetchRecentEpochs = cache(getRecentEpochs) diff --git a/src/app/stats/utils/fetchRegistrar.ts b/src/app/stats/utils/fetchRegistrar.ts deleted file mode 100644 index 9408b7c..0000000 --- a/src/app/stats/utils/fetchRegistrar.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { VoterStakeRegistry } from "@helium/idls/lib/types/voter_stake_registry" -import { PublicKey } from "@solana/web3.js" -// @ts-ignore -import { IDL as VSRegistryIDL } from "@helium/idls/lib/cjs/voter_stake_registry" -import { fetchIdlAccount } from "./fetchIdlAccount" - -export const fetchRegistrar = (key: PublicKey) => { - return fetchIdlAccount( - key, - VSRegistryIDL as VoterStakeRegistry, - "registrar" - ) -} diff --git a/src/app/stats/utils/fetchSubDaoEpochInfo.ts b/src/app/stats/utils/fetchSubDaoEpochInfo.ts deleted file mode 100644 index 45ed336..0000000 --- a/src/app/stats/utils/fetchSubDaoEpochInfo.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { subDaoEpochInfoKey, subDaoKey } from "@helium/helium-sub-daos-sdk" -import { HeliumSubDaos } from "@helium/idls/lib/types/helium_sub_daos" -import { PublicKey } from "@solana/web3.js" -import { ONE_DAY_UNIX } from "../utils" -// @ts-ignore -import { IDL as subDaosIDL } from "@helium/idls/lib/cjs/helium_sub_daos" -import { IOT_MINT, MOBILE_MINT } from "@helium/spl-utils" -import { cache } from "react" -import { fetchIdlAccount } from "./fetchIdlAccount" -import { SubDao } from "./types" - -const SUBDAO_TO_MINT: { [key in SubDao]: PublicKey } = { - iot: IOT_MINT, - mobile: MOBILE_MINT, -} - -export const getSubDaoEpochInfo = async ( - subDao: SubDao, - offset: number = 1 -) => { - const now = Math.floor(new Date().valueOf() / 1000) - const SUBDAO_KEY = subDaoKey(SUBDAO_TO_MINT[subDao])[0] - const sdeKey = subDaoEpochInfoKey( - SUBDAO_KEY, - BigInt(now) - BigInt(ONE_DAY_UNIX * offset) - )[0] - - return fetchIdlAccount( - sdeKey, - subDaosIDL as HeliumSubDaos, - "subDaoEpochInfoV0" - ) -} - -export const fetchSubDaoEpochInfo = cache(getSubDaoEpochInfo) diff --git a/src/app/stats/utils/fetchSubDaoTreasuryInfo.ts b/src/app/stats/utils/fetchSubDaoTreasuryInfo.ts deleted file mode 100644 index 8c7ff47..0000000 --- a/src/app/stats/utils/fetchSubDaoTreasuryInfo.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TreasuryManagement } from "@helium/idls/lib/types/treasury_management" -import { treasuryManagementKey } from "@helium/treasury-management-sdk" -import { PublicKey } from "@solana/web3.js" -// @ts-ignore -import { IDL as treasuryMgmtIDL } from "@helium/idls/lib/cjs/treasury_management" -import { fetchIdlAccount } from "./fetchIdlAccount" - -export const fetchSubDaoTreasuryInfo = (subDaoMint: PublicKey) => { - const treasuryMgmtKey = treasuryManagementKey(subDaoMint)[0] - return fetchIdlAccount( - treasuryMgmtKey, - treasuryMgmtIDL as TreasuryManagement, - "treasuryManagementV0" - ) -} diff --git a/src/app/stats/utils/fetchTokenAccount.ts b/src/app/stats/utils/fetchTokenAccount.ts deleted file mode 100644 index 6eaf7ad..0000000 --- a/src/app/stats/utils/fetchTokenAccount.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Account, unpackAccount } from "@solana/spl-token" -import { AccountInfo, PublicKey } from "@solana/web3.js" -import { AccountState, fetchAccount } from "./fetchAccount" - -const parser = ( - pubkey: PublicKey, - acct: AccountInfo -): Account | undefined => { - return unpackAccount(pubkey, acct) -} - -export function fetchTokenAccount( - address: PublicKey | undefined | null -): Promise> { - return fetchAccount(address, parser) -} diff --git a/src/app/stats/utils/fetchUnixTimestamp.ts b/src/app/stats/utils/fetchUnixTimestamp.ts deleted file mode 100644 index 733baef..0000000 --- a/src/app/stats/utils/fetchUnixTimestamp.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { SYSVAR_CLOCK_PUBKEY } from "@solana/web3.js" -import { cache } from "react" -import { accountCache } from "./accountCache" - -async function getUnixTimestamp(): Promise { - const clock = await accountCache.connection.getAccountInfo( - SYSVAR_CLOCK_PUBKEY - ) - const unixTime = clock!.data.readBigInt64LE(8 * 4) - return unixTime -} - -export const fetchUnixTimestap = cache(getUnixTimestamp) diff --git a/src/app/stats/utils/getIdlParser.ts b/src/app/stats/utils/getIdlParser.ts deleted file mode 100644 index 8fdac26..0000000 --- a/src/app/stats/utils/getIdlParser.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { BorshAccountsCoder, Idl, IdlAccounts } from "@coral-xyz/anchor" -import { TypedAccountParser } from "@helium/account-fetch-cache" - -export function getIdlParser( - idl: IDL, - type: A -) { - const parser: TypedAccountParser[A]> = (pubkey, data) => { - try { - const coder = new BorshAccountsCoder(idl) - const decoded = coder.decode(type, data.data) - decoded.pubkey = pubkey - return decoded - } catch (e: any) { - console.error(e) - } - } - return parser -} diff --git a/src/app/stats/utils/getNextHalvening.test.ts b/src/app/stats/utils/getNextHalvening.test.ts deleted file mode 100644 index bfd2a70..0000000 --- a/src/app/stats/utils/getNextHalvening.test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { add, sub } from "date-fns" -import { getNextHalvening } from "./getNextHalvening" - -describe("getNextHalvening", () => { - it("returns the right halvenings", () => { - const HALVENING_2023 = 1690848000 * 1000 - const before2023 = sub(new Date(1690848000 * 1000), { days: 1 }) - const after2023 = add(new Date(1690848000 * 1000), { days: 1 }) - const after2025 = add(new Date(1690848000 * 1000), { years: 2, days: 1 }) - const after2027 = add(new Date(1690848000 * 1000), { years: 4, days: 1 }) - const after2029 = add(new Date(1690848000 * 1000), { years: 6, days: 1 }) - - expect(getNextHalvening(before2023)).toEqual(HALVENING_2023) - expect(getNextHalvening(after2023)).toEqual( - add(HALVENING_2023, { years: 2 }).valueOf() - ) - expect(getNextHalvening(after2025)).toEqual( - add(HALVENING_2023, { years: 4 }).valueOf() - ) - expect(getNextHalvening(after2027)).toEqual( - add(HALVENING_2023, { years: 6 }).valueOf() - ) - expect(getNextHalvening(after2029)).toEqual( - add(HALVENING_2023, { years: 8 }).valueOf() - ) - }) -}) diff --git a/src/app/stats/utils/getNextHalvening.ts b/src/app/stats/utils/getNextHalvening.ts deleted file mode 100644 index bcd65ad..0000000 --- a/src/app/stats/utils/getNextHalvening.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { add, isAfter } from "date-fns" - -const HALVENING_2023 = 1690848000 * 1000 - -export const getNextHalvening = (date: Date = new Date()) => { - let nextHalvening = new Date(HALVENING_2023) - while (isAfter(date, nextHalvening)) { - nextHalvening = add(nextHalvening, { years: 2 }) - } - return nextHalvening.valueOf() -} diff --git a/src/app/stats/utils/positionsMetrics.ts b/src/app/stats/utils/positionsMetrics.ts deleted file mode 100644 index ba9c45d..0000000 --- a/src/app/stats/utils/positionsMetrics.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { BN } from "@coral-xyz/anchor" -import { PositionWithMeta, SubDaos } from "./addPositionsMeta" -import { fetchUnixTimestap } from "./fetchUnixTimestamp" -import { LockupKind } from "./types" - -export type PositionMetrics = { - stats: { - avgVehnt: BN - avgHnt: BN - avgLockup: BN - medianVehnt: BN - medianHnt: BN - medianLockup: BN - } - total: { - count: BN - hnt: BN - vehnt: BN - } -} - -export type PositionMetricsByGroup = { - iot: PositionMetrics - mobile: PositionMetrics - network: PositionMetrics - undelegated: PositionMetrics -} - -const getMobilePositions = (positions: PositionWithMeta[]) => { - return positions.filter((position) => position.subDao == SubDaos.MOBILE) -} - -const getIotPositions = (positions: PositionWithMeta[]) => { - return positions.filter((position) => position.subDao == SubDaos.IOT) -} - -const getMean = (nums: BN[]): BN => { - return getSum(nums).div(new BN(nums.length)) -} - -const getMedian = (nums: BN[]): BN => { - nums.sort((a, b) => a.cmp(b)) - const count = nums.length - return nums.length % 2 === 1 - ? nums[Math.floor(count / 2)] - : nums[count / 2] - .clone() - .add(nums[count / 2 - 1]) - .divRound(new BN(2)) -} - -const getPositionLockups = async (positions: PositionWithMeta[]) => { - const now = await fetchUnixTimestap() - const nowBN = new BN(now) - - return positions.map((position) => { - const lockup = position!.lockup - const lockupKind = Object.keys(lockup.kind as LockupKind)[0] - const currTs = lockupKind === "constant" ? lockup.startTs : nowBN - const lockupSecs = lockup.endTs.sub(currTs) - return lockupSecs - }) -} - -const getSum = (nums: BN[]) => { - return nums.reduce((acc, currentNum) => { - return acc.add(currentNum) - }, nums[0].clone()) -} - -export const getPositionMetrics = async (positions: PositionWithMeta[]) => { - const now = await fetchUnixTimestap() - const nowBN = new BN(now) - - const activePositions = positions.filter((position) => { - const expiredCliff = - Object.keys(position.lockup.kind as LockupKind)[0] === "cliff" && - position.lockup.endTs.lt(nowBN) - - // constant positions and non expired cliffs are still active - return !expiredCliff - }) - - const vehnt = activePositions.map(({ veHnt }) => veHnt) - const hnt = activePositions.map((position) => position.amountDepositedNative) - const lockups = await getPositionLockups(activePositions) - const positonMetrics: PositionMetrics = { - stats: { - avgVehnt: getMean(vehnt), - avgHnt: getMean(hnt), - avgLockup: getMean(lockups), - medianVehnt: getMedian(vehnt), - medianHnt: getMedian(hnt), - medianLockup: getMedian(lockups), - }, - total: { - count: new BN(activePositions.length) as BN, - hnt: getSum(hnt), - vehnt: getSum(vehnt), - }, - } - - return positonMetrics -} - -export const getGroupedPositionMetrics = async ( - positions: PositionWithMeta[] -) => { - const iotPositions = getIotPositions(positions) - const mobilePositions = getMobilePositions(positions) - const undelegatedPositions = positions.filter((position) => !position.subDao) - const [iot, mobile, network, undelegated] = await Promise.all([ - getPositionMetrics(iotPositions), - getPositionMetrics(mobilePositions), - getPositionMetrics(positions), - getPositionMetrics(undelegatedPositions), - ]) - return { - iot, - mobile, - network, - undelegated, - } -} diff --git a/src/app/stats/utils/remainingEmissions.test.ts b/src/app/stats/utils/remainingEmissions.test.ts deleted file mode 100644 index 2f42bc9..0000000 --- a/src/app/stats/utils/remainingEmissions.test.ts +++ /dev/null @@ -1,269 +0,0 @@ -import { add, sub } from "date-fns" -import { - AUG_1_2023, - getDailyEmisisons, - getLatestSubNetworkEmissions, - getRemainingEmissions, -} from "./remainingEmissions" -import subNetworkEmissions from "./subNetworkEmissions.json" - -describe("getRemaingEmissions", () => { - describe("hnt", () => { - const HNT_YEARLY = 15000000 - const HNT_EMISSIONS_REMAING = HNT_YEARLY * 4 - - it("returns remaining emissions on Aug 1st, 2024", () => { - const dayOf = add(AUG_1_2023, { hours: 1 }) - expect(getRemainingEmissions(dayOf, "hnt")).toEqual(HNT_EMISSIONS_REMAING) - }) - - it("adds emissions when before Aug 1st, 2024", () => { - const twoDaysBefore = sub(AUG_1_2023, { days: 1, hours: 6 }) - expect(getRemainingEmissions(twoDaysBefore, "hnt")).toEqual( - HNT_EMISSIONS_REMAING + ((HNT_YEARLY * 2) / 365) * 2 - ) - }) - - describe("when after after Aug 1st, 2024", () => { - it("subtracts emissions in a leap year", () => { - const nextDay = add(AUG_1_2023, { days: 1, hours: 1 }) - expect(getRemainingEmissions(nextDay, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - HNT_YEARLY / 366 - ) - - const almostYear = add(AUG_1_2023, { days: 365, hours: 1 }) - expect(getRemainingEmissions(almostYear, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - (HNT_YEARLY / 366) * 365 - ) - }) - - it("subtracts emissions in a none leap year", () => { - const postLeapYear = add(AUG_1_2023, { years: 1, days: 1, hours: 1 }) - expect(getRemainingEmissions(postLeapYear, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - HNT_YEARLY - HNT_YEARLY / 365 - ) - }) - - it("returns remaining emissions from 2025 halvening", () => { - const atHalvening2025 = add(AUG_1_2023, { years: 2, hours: 1 }) - expect(getRemainingEmissions(atHalvening2025, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - HNT_YEARLY * 2 - ) - }) - - it("subtracts emissions after next halvening", () => { - const dayAfterHalvening2025 = add(AUG_1_2023, { - years: 2, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2025, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - HNT_YEARLY * 2 - HNT_YEARLY / 2 / 365 - ) - }) - - it("subtracts emissions for the following leap year", () => { - const dayAfterHalvening2027 = add(AUG_1_2023, { - years: 4, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2027, "hnt")).toEqual( - HNT_EMISSIONS_REMAING - - HNT_YEARLY * 2 - // 2023 + 2024 - (HNT_YEARLY / 2) * 2 - // 2025 + 2026 - HNT_YEARLY / 4 / 366 // one day into next leap year - ) - }) - }) - }) - - describe("mobile", () => { - it("has the same behavior for mobile", () => { - const MOBILE_YEARLY = 30000000000 - const MOBILE_EMISSIONS_REMAINING = MOBILE_YEARLY * 4 - const dayOf = add(AUG_1_2023, { hours: 1 }) - expect(getRemainingEmissions(dayOf, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - ) - const twoDaysBefore = sub(AUG_1_2023, { days: 1, hours: 6 }) - expect(getRemainingEmissions(twoDaysBefore, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING + ((MOBILE_YEARLY * 2) / 365) * 2 - ) - - const nextDay = add(AUG_1_2023, { days: 1, hours: 1 }) - expect(getRemainingEmissions(nextDay, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - MOBILE_YEARLY / 366 - ) - - const almostYear = add(AUG_1_2023, { days: 365, hours: 1 }) - expect(getRemainingEmissions(almostYear, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - (MOBILE_YEARLY / 366) * 365 - ) - - const postLeapYear = add(AUG_1_2023, { years: 1, days: 1, hours: 1 }) - expect(getRemainingEmissions(postLeapYear, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - MOBILE_YEARLY - MOBILE_YEARLY / 365 - ) - - const atHalvening2026 = add(AUG_1_2023, { years: 2, hours: 1 }) - expect(getRemainingEmissions(atHalvening2026, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - MOBILE_YEARLY * 2 - ) - - const dayAfterHalvening2025 = add(AUG_1_2023, { - years: 2, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2025, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - MOBILE_YEARLY * 2 - MOBILE_YEARLY / 2 / 365 - ) - - const dayAfterHalvening2027 = add(AUG_1_2023, { - years: 4, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2027, "mobile")).toEqual( - MOBILE_EMISSIONS_REMAINING - - MOBILE_YEARLY * 2 - // 2023 + 2024 - (MOBILE_YEARLY / 2) * 2 - // 2025 + 2026 - MOBILE_YEARLY / 4 / 366 // one day into next leap year - ) - }) - }) - - describe("iot", () => { - it("has the same behavior for iot", () => { - const IOT_YEARLY = 32500000000 - const IOT_EMISSIONS_REMAINING = IOT_YEARLY * 4 - const dayOf = add(AUG_1_2023, { hours: 1 }) - expect(getRemainingEmissions(dayOf, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - ) - const twoDaysBefore = sub(AUG_1_2023, { days: 1, hours: 6 }) - expect(getRemainingEmissions(twoDaysBefore, "iot")).toEqual( - IOT_EMISSIONS_REMAINING + ((IOT_YEARLY * 2) / 365) * 2 - ) - - const nextDay = add(AUG_1_2023, { days: 1, hours: 1 }) - expect(getRemainingEmissions(nextDay, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - IOT_YEARLY / 366 - ) - - const almostYear = add(AUG_1_2023, { days: 365, hours: 1 }) - expect(getRemainingEmissions(almostYear, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - (IOT_YEARLY / 366) * 365 - ) - - const postLeapYear = add(AUG_1_2023, { years: 1, days: 1, hours: 1 }) - expect(getRemainingEmissions(postLeapYear, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - IOT_YEARLY - IOT_YEARLY / 365 - ) - - const atHalvening2026 = add(AUG_1_2023, { years: 2, hours: 1 }) - expect(getRemainingEmissions(atHalvening2026, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - IOT_YEARLY * 2 - ) - - const dayAfterHalvening2025 = add(AUG_1_2023, { - years: 2, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2025, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - IOT_YEARLY * 2 - IOT_YEARLY / 2 / 365 - ) - - const dayAfterHalvening2027 = add(AUG_1_2023, { - years: 4, - days: 1, - hours: 1, - }) - expect(getRemainingEmissions(dayAfterHalvening2027, "iot")).toEqual( - IOT_EMISSIONS_REMAINING - - IOT_YEARLY * 2 - // 2023 + 2024 - (IOT_YEARLY / 2) * 2 - // 2025 + 2026 - IOT_YEARLY / 4 / 366 // one day into next leap year - ) - }) - }) - - describe("getDailyEmissions helper", () => { - const after2023 = add(AUG_1_2023, { days: 1 }) // leap year - const after2024 = add(AUG_1_2023, { days: 1, years: 1 }) // non-leap - const after2025 = add(AUG_1_2023, { days: 1, years: 2 }) - - it("returns the correct values for HNT", () => { - const yearlyEmissions = 15000000 - - expect(getDailyEmisisons(after2023, "hnt")).toBe(yearlyEmissions / 366) - expect(getDailyEmisisons(after2024, "hnt")).toBe(yearlyEmissions / 365) - expect(getDailyEmisisons(after2025, "hnt")).toBe( - yearlyEmissions / 365 / 2 - ) - }) - - it("returns the correct values for IOT", () => { - const yearlyEmissions = 32500000000 - - expect(getDailyEmisisons(after2023, "iot")).toBe(yearlyEmissions / 366) - expect(getDailyEmisisons(after2024, "iot")).toBe(yearlyEmissions / 365) - expect(getDailyEmisisons(after2025, "iot")).toBe( - yearlyEmissions / 365 / 2 - ) - }) - - it("returns the correct values for MOBILE", () => { - const yearlyEmissions = 30000000000 - - expect(getDailyEmisisons(after2023, "mobile")).toBe(yearlyEmissions / 366) - expect(getDailyEmisisons(after2024, "mobile")).toBe(yearlyEmissions / 365) - expect(getDailyEmisisons(after2025, "mobile")).toBe( - yearlyEmissions / 365 / 2 - ) - }) - }) - - describe("getLatestSubNetworkEmissions", () => { - it("returns the correct values for IOT", () => { - const before2023 = sub(AUG_1_2023, { days: 1 }) - const after2023 = add(AUG_1_2023, { days: 1, hours: 1 }) // leap year - const after2024 = add(AUG_1_2023, { days: 1, years: 1, hours: 1 }) // non-leap - expect(getLatestSubNetworkEmissions(before2023, "iot")).toBe( - subNetworkEmissions.iot[0].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(after2023, "iot")).toBe( - subNetworkEmissions.iot[1].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(after2024, "iot")).toBe( - subNetworkEmissions.iot[2].emissionsPerEpoch - ) - }) - - it("returns the correct values for MOBILE", () => { - const weekBefore2023 = sub(AUG_1_2023, { days: 7 }) - const catchupDay = sub(AUG_1_2023, { days: 2, hours: 23 }) - const before2023 = sub(AUG_1_2023, { days: 1 }) - const after2023 = add(AUG_1_2023, { days: 1, hours: 1 }) // leap year - const after2024 = add(AUG_1_2023, { days: 1, years: 1, hours: 1 }) // non-leap - - expect(getLatestSubNetworkEmissions(weekBefore2023, "mobile")).toBe( - subNetworkEmissions.mobile[0].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(catchupDay, "mobile")).toBe( - subNetworkEmissions.mobile[1].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(before2023, "mobile")).toBe( - subNetworkEmissions.mobile[2].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(after2023, "mobile")).toBe( - subNetworkEmissions.mobile[3].emissionsPerEpoch - ) - expect(getLatestSubNetworkEmissions(after2024, "mobile")).toBe( - subNetworkEmissions.mobile[4].emissionsPerEpoch - ) - }) - }) -}) diff --git a/src/app/stats/utils/remainingEmissions.ts b/src/app/stats/utils/remainingEmissions.ts deleted file mode 100644 index da47611..0000000 --- a/src/app/stats/utils/remainingEmissions.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { - add, - differenceInDays, - differenceInYears, - isAfter, - isBefore, -} from "date-fns" -import subNetworkEmissions from "./subNetworkEmissions.json" -import { SubDao } from "./types" - -export const AUG_1_2023 = new Date(1690848000 * 1000) -const YEARLY_EMISSIONS = { - hnt: 15000000, - iot: 32500000000, - mobile: 30000000000, -} - -export const MAX_DAILY_NET_EMISSIONS = 1643.835616 - -type Token = "hnt" | "mobile" | "iot" -export const getRemainingEmissions = (date: Date, token: Token) => { - const yearlyEmissions = YEARLY_EMISSIONS[token] - const REMAINING_AUG_1_2023 = yearlyEmissions * 4 - let daysDelta = Math.abs(differenceInDays(AUG_1_2023, date)) - if (isBefore(date, AUG_1_2023)) { - const dailyEmissionsRemaining = daysDelta + 1 - return ( - REMAINING_AUG_1_2023 + - ((yearlyEmissions * 2) / 365) * dailyEmissionsRemaining - ) - } - - let remainingEmissions = REMAINING_AUG_1_2023 - const yearsDeltaAug23 = differenceInYears(date, AUG_1_2023) - if (yearsDeltaAug23 >= 1) { - let yearsDelta = yearsDeltaAug23 - daysDelta = Math.abs( - differenceInDays(add(AUG_1_2023, { years: yearsDelta }), date) - ) - - while (!!yearsDelta) { - const halvenings = Math.floor((yearsDelta - 1) / 2) - remainingEmissions -= yearlyEmissions / Math.pow(2, halvenings) - - yearsDelta-- - } - } - - return remainingEmissions - daysDelta * getDailyEmisisons(date, token) -} - -export const getDailyEmisisons = (date: Date, token: Token) => { - const yearlyEmissions = YEARLY_EMISSIONS[token] - const yearsDeltaAug23 = differenceInYears(date, AUG_1_2023) - const isLeapYear = yearsDeltaAug23 % 4 === 0 - const numDays = isLeapYear ? 366 : 365 - const halvenings = Math.floor(yearsDeltaAug23 / 2) - const adjustedYearlyEmissions = yearlyEmissions / Math.pow(2, halvenings) - - return adjustedYearlyEmissions / numDays -} - -// emissions schedule taken from https://github.com/helium/helium-program-library/tree/master/packages/helium-admin-cli/emissions -export const getLatestSubNetworkEmissions = (date: Date, token: SubDao) => { - const emissions = subNetworkEmissions[token] - let currentEmissions = emissions[0].emissionsPerEpoch - let index = 1 - while ( - index < emissions.length && - isAfter(date, new Date(emissions[index].startTime)) - ) { - currentEmissions = emissions[index].emissionsPerEpoch - index++ - } - return currentEmissions -} diff --git a/src/app/stats/utils/subNetworkEmissions.json b/src/app/stats/utils/subNetworkEmissions.json deleted file mode 100644 index 04f3377..0000000 --- a/src/app/stats/utils/subNetworkEmissions.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "mobile": [ - { - "startTime": "2023-04-18T00:00:00Z", - "emissionsPerEpoch": 108493151 - }, - { - "startTime": "2023-07-28T00:00:00Z", - "emissionsPerEpoch": 174246575 - }, - { - "startTime": "2023-07-29T00:00:01Z", - "emissionsPerEpoch": 141369863 - }, - { - "startTime": "2023-08-01T00:00:00Z", - "emissionsPerEpoch": 70684932 - }, - { - "startTime": "2023-08-01T00:00:01Z", - "emissionsPerEpoch": 70491803 - }, - { - "startTime": "2024-08-01T00:00:01Z", - "emissionsPerEpoch": 82191780 - }, - { - "startTime": "2025-08-01T00:00:01Z", - "emissionsPerEpoch": 41095890 - }, - { - "startTime": "2027-08-01T00:00:01Z", - "emissionsPerEpoch": 20491803 - } - ], - "iot": [ - { - "startTime": "2023-04-18T00:00:00Z", - "emissionsPerEpoch": 165616438 - }, - { - "startTime": "2023-08-01T00:00:00Z", - "emissionsPerEpoch": 82581967 - }, - { - "startTime": "2024-08-01T00:00:01Z", - "emissionsPerEpoch": 89041095 - }, - { - "startTime": "2025-08-01T00:00:01Z", - "emissionsPerEpoch": 44520547 - }, - { - "startTime": "2027-08-01T00:00:01Z", - "emissionsPerEpoch": 22199453 - } - ] -} diff --git a/src/app/stats/utils/types.ts b/src/app/stats/utils/types.ts deleted file mode 100644 index b619e29..0000000 --- a/src/app/stats/utils/types.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IdlAccounts, IdlTypes } from "@coral-xyz/anchor" -import { HeliumSubDaos } from "@helium/idls/lib/types/helium_sub_daos" -import { VoterStakeRegistry as HeliumVoterStakeRegistry } from "@helium/idls/lib/types/voter_stake_registry" -import { PublicKey } from "@solana/web3.js" - -export type SubDao = "iot" | "mobile" -// ripped from governance-ui - should eventually get moved into helium-program-library -export type VotingMintConfig = - IdlTypes["VotingMintConfigV0"] -type RegistrarV0 = IdlAccounts["registrar"] -export type Lockup = IdlTypes["Lockup"] - -export type PositionV0 = IdlAccounts["positionV0"] -export interface Position extends Omit { - lockup: Lockup - pubkey: PublicKey -} - -export type DelegatedPositionV0 = - IdlAccounts["delegatedPositionV0"] -export interface DelegatedPosition extends DelegatedPositionV0 { - pubkey: PublicKey -} - -export interface Registrar extends RegistrarV0 { - votingMints: VotingMintConfig[] -} - -export type LockupKind = IdlTypes["LockupKind"] diff --git a/src/components/Container.tsx b/src/components/Container.tsx deleted file mode 100644 index b9110a6..0000000 --- a/src/components/Container.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import clsx from "clsx" -import { ForwardedRef, forwardRef } from "react" - -const OuterContainer = forwardRef(function OuterContainer( - { className, children, ...props }: { className?: string; children: any }, - ref: ForwardedRef -) { - return ( -
-
{children}
-
- ) -}) - -const InnerContainer = forwardRef(function InnerContainer( - { className, children, ...props }: { className?: string; children: any }, - ref: ForwardedRef -) { - return ( -
-
{children}
-
- ) -}) - -export const Container = forwardRef(function Container( - { children, ...props }: { className?: string; children: any }, - ref: ForwardedRef -) { - return ( - - {children} - - ) -}) diff --git a/src/components/GAScript.tsx b/src/components/GAScript.tsx deleted file mode 100644 index 4bf04cc..0000000 --- a/src/components/GAScript.tsx +++ /dev/null @@ -1,35 +0,0 @@ -"use client" - -/* eslint-disable @next/next/no-before-interactive-script-outside-document */ -import Script from "next/script" - -export const GA_ID = process.env.NEXT_PUBLIC_GA_ID -export const IS_PROD = process.env.NODE_ENV === "production" - -export const GAScript = () => { - if (!GA_ID || !IS_PROD) return null - - return ( -
-