From 32e523d2e1fb4b21b5905059c53b84847d0298fb Mon Sep 17 00:00:00 2001 From: Keyrxng <106303466+Keyrxng@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:25:35 +0000 Subject: [PATCH] Merge branch 'ubiquity:development' into improve-page-load --- .cspell.json | 39 +- .eslintrc | 108 + .github/pull_request_template.md | 6 + .github/workflows/cloudflare-deploy.yml | 31 + .github/workflows/conventional-commits.yml | 12 + .github/workflows/cspell.yml | 24 + .gitignore | 6 + .husky/commit-msg | 4 + .husky/pre-commit | 4 + .prettierrc | 12 +- build/esbuild-build.ts | 36 +- build/esbuild-config.ts | 27 - build/esbuild-server.ts | 17 +- build/index.ts | 4 + build/plugins/invert-colors.ts | 4 +- globals.d.ts | 6 +- package.json | 92 +- scripts/typescript/generate-permit2-url.ts | 6 +- static/audit.html | 2 +- static/fonts/ubiquity-nova-standard.eot | Bin 0 -> 56807 bytes static/fonts/ubiquity-nova-standard.ttf | Bin 0 -> 187128 bytes static/fonts/ubiquity-nova-standard.woff | Bin 0 -> 77756 bytes static/index.html | 2 +- static/keygen.html | 2 +- static/main.ts | 10 + static/onboarding.html | 2 +- static/scripts/audit-report/audit.ts | 728 +-- static/scripts/audit-report/constants.ts | 5 +- static/scripts/audit-report/helpers.ts | 80 +- static/scripts/audit-report/types/audit.d.ts | 2 +- .../scripts/audit-report/types/transaction.ts | 2 +- .../scripts/audit-report/utils/blockInfo.ts | 14 +- .../audit-report/utils/getTransaction.ts | 14 +- static/scripts/key-generator/keygen.ts | 63 +- static/scripts/onboarding/onboarding.ts | 363 +- static/scripts/rewards/abis/nftRewardAbi.ts | 1 + static/scripts/rewards/abis/permit2Abi.ts | 1 + static/scripts/rewards/cirip/ens-lookup.ts | 16 +- static/scripts/rewards/cirip/fetch-ens.ts | 4 +- static/scripts/rewards/cirip/query-graph.ts | 2 +- .../rewards/cirip/query-reverse-ens.ts | 4 +- static/scripts/rewards/helpers.ts | 21 +- static/scripts/rewards/index.ts | 4 +- .../scripts/rewards/invalidate-component.ts | 4 +- .../rewards/render-transaction/index.ts | 3 +- .../render-transaction/insert-table-data.ts | 8 +- .../render-transaction/render-token-symbol.ts | 4 +- .../render-transaction/render-transaction.ts | 53 +- .../rewards/render-transaction/tx-type.ts | 66 +- static/scripts/rewards/the-grid.ts | 22 +- static/scripts/rewards/toaster.ts | 8 +- static/scripts/rewards/web3/erc20-permit.ts | 47 +- static/scripts/rewards/web3/erc721-permit.ts | 19 +- static/scripts/rewards/web3/wallet.ts | 38 +- static/style.css | 16 + static/styles/fa.css | 40 +- static/styles/proxima.css | 20 +- static/styles/rewards/pay.css | 13 +- tsconfig.json | 94 +- yarn.lock | 4748 ++++++++++++++--- 60 files changed, 5563 insertions(+), 1420 deletions(-) create mode 100644 .eslintrc create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/cloudflare-deploy.yml create mode 100644 .github/workflows/conventional-commits.yml create mode 100644 .github/workflows/cspell.yml create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit delete mode 100644 build/esbuild-config.ts create mode 100644 build/index.ts create mode 100644 static/fonts/ubiquity-nova-standard.eot create mode 100644 static/fonts/ubiquity-nova-standard.ttf create mode 100644 static/fonts/ubiquity-nova-standard.woff create mode 100644 static/main.ts create mode 100644 static/style.css diff --git a/.cspell.json b/.cspell.json index d0b404cf..220cabe4 100644 --- a/.cspell.json +++ b/.cspell.json @@ -1,3 +1,40 @@ { - "words": ["WXDAI"] + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "version": "0.2", + "ignorePaths": ["**/*.json", "**/*.css", "node_modules", "**/*.log"], + "useGitignore": true, + "language": "en", + "words": [ + "binkey", + "binsec", + "cirip", + "dataurl", + "devpool", + "ethersproject", + "fract", + "gnosisscan", + "godb", + "greyscale", + "IERC", + "keccak", + "keypair", + "libsodium", + "Numberish", + "outdir", + "Rpcs", + "scalarmult", + "servedir", + "sonarjs", + "typebox", + "TYPEHASH", + "ubiquibot", + "UBIQUIBOT", + "URLSAFE", + "WXDAI", + "XDAI", + "xmark" + ], + "dictionaries": ["typescript", "node", "software-terms", "html"], + "import": ["@cspell/dict-typescript/cspell-ext.json", "@cspell/dict-node/cspell-ext.json", "@cspell/dict-software-terms"], + "ignoreRegExpList": ["[0-9a-fA-F]{6}"] } diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..22340c8a --- /dev/null +++ b/.eslintrc @@ -0,0 +1,108 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": ["./tsconfig.json"] + }, + "plugins": ["@typescript-eslint", "sonarjs"], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:sonarjs/recommended"], + "ignorePatterns": ["**/*.js"], + "rules": { + "prefer-arrow-callback": [ + "warn", + { + "allowNamedFunctions": true + } + ], + "func-style": [ + "warn", + "declaration", + { + "allowArrowFunctions": false + } + ], + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "constructor-super": "error", + "no-invalid-this": "off", + "@typescript-eslint/no-invalid-this": ["error"], + "no-restricted-syntax": ["error", "ForInStatement"], + "use-isnan": "error", + "@typescript-eslint/no-unused-vars": [ + "error", + { + "args": "after-used", + "ignoreRestSiblings": true, + "vars": "all", + "varsIgnorePattern": "^_", + "argsIgnorePattern": "^_" + } + ], + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "sonarjs/no-all-duplicated-branches": "error", + "sonarjs/no-collection-size-mischeck": "error", + "sonarjs/no-duplicated-branches": "error", + "sonarjs/no-element-overwrite": "error", + "sonarjs/no-identical-conditions": "error", + "sonarjs/no-identical-expressions": "error", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "interface", + "format": ["PascalCase"], + "custom": { + "regex": "^I[A-Z]", + "match": false + } + }, + { + "selector": "memberLike", + "modifiers": ["private"], + "format": ["camelCase"], + "leadingUnderscore": "require" + }, + { + "selector": "typeLike", + "format": ["PascalCase"] + }, + { + "selector": "typeParameter", + "format": ["PascalCase"], + "prefix": ["T"] + }, + { + "selector": "variable", + "format": ["camelCase", "UPPER_CASE"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": "variable", + "format": ["camelCase"], + "leadingUnderscore": "allow", + "trailingUnderscore": "allow" + }, + { + "selector": "variable", + "modifiers": ["destructured"], + "format": null + }, + { + "selector": "variable", + "types": ["boolean"], + "format": ["PascalCase"], + "prefix": ["is", "should", "has", "can", "did", "will", "does"] + }, + { + "selector": "variableLike", + "format": ["camelCase"] + }, + { + "selector": ["function", "variable"], + "format": ["camelCase"] + } + ] + } +} diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..cde98436 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,6 @@ +Resolves # + + diff --git a/.github/workflows/cloudflare-deploy.yml b/.github/workflows/cloudflare-deploy.yml new file mode 100644 index 00000000..9301cefa --- /dev/null +++ b/.github/workflows/cloudflare-deploy.yml @@ -0,0 +1,31 @@ +name: Deploy to Cloudflare Pages + +on: + push: + +jobs: + deploy-to-cloudflare: + name: Deploy to Cloudflare Pages + runs-on: ubuntu-22.04 + permissions: + contents: read + + steps: + - name: Check Cloudflare API Token + run: | + if [[ -z "${{ secrets.CLOUDFLARE_API_TOKEN }}" ]]; then + echo "CLOUDFLARE_API_TOKEN secret must be set" >&2 + exit 1 + fi + - name: Deploy to Cloudflare + uses: ubiquity/cloudflare-deploy-action@main + with: + cloudflare_api_token: ${{ secrets.CLOUDFLARE_API_TOKEN }} + repository: ${{ github.repository }} + production_branch: ${{ github.event.repository.default_branch }} + output_directory: "static" + is_production: ${{ github.event_name == 'push' && github.ref == 'refs/heads/${{ github.event.repository.default_branch }}' }} + # env: + # Add any environment variables you need to pass along here + # SUPABASE_URL: ${{ secrets.SUPABASE_URL }} + # SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }} diff --git a/.github/workflows/conventional-commits.yml b/.github/workflows/conventional-commits.yml new file mode 100644 index 00000000..6b3066e5 --- /dev/null +++ b/.github/workflows/conventional-commits.yml @@ -0,0 +1,12 @@ +name: Conventional Commits + +on: + push: + +jobs: + conventional-commits: + name: Conventional Commits + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: ubiquity/action-conventional-commits@master diff --git a/.github/workflows/cspell.yml b/.github/workflows/cspell.yml new file mode 100644 index 00000000..c81c97a0 --- /dev/null +++ b/.github/workflows/cspell.yml @@ -0,0 +1,24 @@ +name: Spell Check + +on: + push: + +jobs: + spellcheck: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "20.10.0" + + - name: Install cspell + run: yarn add cspell + + - name: Run cspell + run: yarn format:cspell diff --git a/.gitignore b/.gitignore index 22c821ee..d01f79ae 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,9 @@ out .yarn .DS_Store commit.txt +# macOS +# node +# yarn2 +.pnp.cjs +.pnp.loader.mjs +static/dist \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 00000000..b78bacbd --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn commitlint --edit "$1" \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..5a182ef1 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn lint-staged diff --git a/.prettierrc b/.prettierrc index 9bdce37f..816d7f8c 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,12 +1,10 @@ { - "useTabs": false, + "trailingComma": "es5", + "tabWidth": 2, "semi": true, - "trailingComma": "all", - "bracketSpacing": true, - "arrowParens": "avoid", + "singleQuote": false, "printWidth": 160, - "proseWrap": "preserve", - "tabWidth": 2, "htmlWhitespaceSensitivity": "strict", - "singleQuote": false + "plugins": [], + "useTabs": false } diff --git a/build/esbuild-build.ts b/build/esbuild-build.ts index bd358a93..7453b667 100644 --- a/build/esbuild-build.ts +++ b/build/esbuild-build.ts @@ -1,3 +1,35 @@ import esbuild from "esbuild"; -import { esBuildContext } from "./esbuild-config"; -esbuild.build(esBuildContext); +const typescriptEntries = [ + "static/scripts/rewards/index.ts", + "static/scripts/audit-report/audit.ts", + "static/scripts/onboarding/onboarding.ts", + "static/scripts/key-generator/keygen.ts", +]; +const cssEntries = ["static/styles/rewards/rewards.css", "static/styles/audit-report/audit.css", "static/styles/onboarding/onboarding.css"]; +export const entries = [...typescriptEntries, ...cssEntries]; + +export const esBuildContext: esbuild.BuildOptions = { + sourcemap: true, + entryPoints: entries, + bundle: true, + minify: false, + loader: { + ".png": "dataurl", + ".woff": "dataurl", + ".woff2": "dataurl", + ".eot": "dataurl", + ".ttf": "dataurl", + ".svg": "dataurl", + }, + outdir: "static/out", +}; + +esbuild + .build(esBuildContext) + .then(() => { + console.log("\tesbuild complete"); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); diff --git a/build/esbuild-config.ts b/build/esbuild-config.ts deleted file mode 100644 index 6c60cd65..00000000 --- a/build/esbuild-config.ts +++ /dev/null @@ -1,27 +0,0 @@ -import esbuild from "esbuild"; -import { invertColors } from "./plugins/invert-colors"; -const typescriptEntries = [ - "static/scripts/rewards/index.ts", - "static/scripts/audit-report/audit.ts", - "static/scripts/onboarding/onboarding.ts", - "static/scripts/key-generator/keygen.ts", -]; -const CSSEntries = ["static/styles/rewards/rewards.css", "static/styles/audit-report/audit.css", "static/styles/onboarding/onboarding.css"]; -export const entries = [...typescriptEntries, ...CSSEntries]; - -export let esBuildContext = { - sourcemap: true, - entryPoints: entries, - //plugins: [invertColors], - bundle: true, - minify: true, - loader: { - ".png": "dataurl", - ".woff": "dataurl", - ".woff2": "dataurl", - ".eot": "dataurl", - ".ttf": "dataurl", - ".svg": "dataurl", - }, - outdir: "static/out", -} as esbuild.BuildOptions; diff --git a/build/esbuild-server.ts b/build/esbuild-server.ts index fd7654e9..bb992aee 100644 --- a/build/esbuild-server.ts +++ b/build/esbuild-server.ts @@ -1,11 +1,18 @@ import esbuild from "esbuild"; -import { esBuildContext } from "./esbuild-config"; +import { esBuildContext } from "./esbuild-build"; -async function server() { - const ctx = await esbuild.context(esBuildContext); - const { host, port } = await ctx.serve({ +(async () => { + await server(); +})().catch((error) => { + console.error("Unhandled error:", error); + process.exit(1); +}); + +export async function server() { + const _context = await esbuild.context(esBuildContext); + const { port } = await _context.serve({ servedir: "static", port: 8080, }); + console.log(`http://localhost:${port}`); } -server(); diff --git a/build/index.ts b/build/index.ts new file mode 100644 index 00000000..e1cf0b87 --- /dev/null +++ b/build/index.ts @@ -0,0 +1,4 @@ +import * as dotenv from "dotenv"; +// load environment variables (if you have them) +dotenv.config(); +console.log("Welcome to ts-template"); diff --git a/build/plugins/invert-colors.ts b/build/plugins/invert-colors.ts index 9270c27e..88af8b76 100644 --- a/build/plugins/invert-colors.ts +++ b/build/plugins/invert-colors.ts @@ -5,10 +5,10 @@ import path, { basename, dirname } from "path"; export const invertColors: esbuild.Plugin = { name: "invert-colors", setup(build) { - build.onEnd(async result => { + build.onEnd(async (result) => { console.log(result); }); - build.onLoad({ filter: /\.css$/ }, async args => { + build.onLoad({ filter: /\.css$/ }, async (args) => { const contents = await fs.promises.readFile(args.path, "utf8"); const updatedContents = contents.replace(/prefers-color-scheme: dark/g, "prefers-color-scheme: light"); diff --git a/globals.d.ts b/globals.d.ts index 2f29226d..4ab599ac 100644 --- a/globals.d.ts +++ b/globals.d.ts @@ -4,10 +4,10 @@ export interface EthereumIsh { isMetaMask?: boolean; isStatus?: boolean; networkVersion: string; - selectedAddress: any; + selectedAddress: string; - on(event: "close" | "accountsChanged" | "chainChanged" | "networkChanged", callback: (payload: any) => void): void; - once(event: "close" | "accountsChanged" | "chainChanged" | "networkChanged", callback: (payload: any) => void): void; + on(event: "close" | "accountsChanged" | "chainChanged" | "networkChanged", callback: (payload: unknown) => void): void; + once(event: "close" | "accountsChanged" | "chainChanged" | "networkChanged", callback: (payload: unknown) => void): void; } declare global { diff --git a/package.json b/package.json index 991069d6..cd83b821 100644 --- a/package.json +++ b/package.json @@ -1,39 +1,89 @@ { + "name": "pay.ubq.fi", + "version": "1.0.0", + "description": "Claim your DevPool rewards.", + "main": "build/index.ts", + "author": "Ubiquity DAO", "license": "MIT", + "engines": { + "node": ">=20.10.0" + }, "scripts": { "start": "run-s utils:hash start:sign start:ui", - "format": "prettier --write .", + "format": "run-s format:lint format:prettier format:cspell", "build": "run-s utils:hash utils:build", "start:ui": "tsx build/esbuild-server.ts", "start:sign": "tsx scripts/typescript/generate-permit2-url.ts", "utils:build": "tsx build/esbuild-build.ts", "utils:hash": "git rev-parse --short HEAD > static/commit.txt", - "utils:get-invalidate-params": "forge script --via-ir scripts/solidity/GetInvalidateNonceParams.s.sol" + "utils:get-invalidate-params": "forge script --via-ir scripts/solidity/GetInvalidateNonceParams.s.sol", + "format:lint": "eslint --fix .", + "format:prettier": "prettier --write .", + "format:cspell": "cspell **/*", + "prepare": "husky install" }, + "keywords": [ + "typescript", + "template", + "dao", + "ubiquity", + "open-source" + ], "dependencies": { "@ethersproject/providers": "^5.7.2", - "@octokit/core": "^4.2.0", - "@octokit/plugin-create-or-update-text-file": "^2.0.4", - "@octokit/plugin-throttling": "^5.1.0", - "@octokit/rest": "^19.0.7", - "@sinclair/typebox": "^0.31.28", - "@types/libsodium-wrappers": "^0.7.10", - "@types/node": "^18.15.11", + "@octokit/core": "^5.1.0", + "@octokit/plugin-create-or-update-text-file": "^4.0.1", + "@octokit/plugin-throttling": "^8.1.3", + "@octokit/rest": "^20.0.2", + "@sinclair/typebox": "^0.32.14", + "@types/libsodium-wrappers": "^0.7.13", "@uniswap/permit2-sdk": "^1.2.0", - "axios": "^1.3.5", - "dotenv": "^16.0.3", - "esbuild": "^0.17.15", + "axios": "^1.6.7", + "dotenv": "^16.4.4", "ethers": "^5.7.2", "godb": "^0.6.2", - "libsodium-wrappers": "^0.7.11", + "libsodium-wrappers": "^0.7.13", "npm-run-all": "^4.1.5", - "prettier": "^2.8.7", - "retry-axios": "^3.0.0", - "tsx": "^3.12.6", - "typescript": "^5.1.6", - "yaml": "^2.2.2" + "retry-axios": "^3.1.3", + "yaml": "^2.3.4" }, - "engines": { - "node": ">=20.10.0" + "devDependencies": { + "@commitlint/cli": "^18.6.1", + "@commitlint/config-conventional": "^18.6.2", + "@cspell/dict-node": "^4.0.3", + "@cspell/dict-software-terms": "^3.3.18", + "@cspell/dict-typescript": "^3.1.2", + "@types/node": "^20.11.19", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", + "cspell": "^8.3.2", + "cspell-dict-html": "^1.2.5", + "esbuild": "^0.20.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-sonarjs": "^0.24.0", + "husky": "^9.0.11", + "knip": "^5.0.1", + "lint-staged": "^15.2.2", + "npm-run-all": "^4.1.5", + "prettier": "^3.2.5", + "tsx": "^4.7.1", + "typescript": "^5.3.3", + "yarn-upgrade-all": "^0.7.2" + }, + "lint-staged": { + "*.ts": [ + "yarn prettier --write", + "eslint --fix" + ], + "src/**.{ts,json}": [ + "cspell" + ] + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] } -} \ No newline at end of file +} diff --git a/scripts/typescript/generate-permit2-url.ts b/scripts/typescript/generate-permit2-url.ts index 81f7a3ff..7abf435d 100644 --- a/scripts/typescript/generate-permit2-url.ts +++ b/scripts/typescript/generate-permit2-url.ts @@ -2,12 +2,12 @@ import { MaxUint256, PermitTransferFrom, SignatureTransfer } from "@uniswap/perm import { randomBytes } from "crypto"; import * as dotenv from "dotenv"; import { BigNumber, ethers } from "ethers"; -import { verifyEnvironmentVariables, log, colorizeText } from "./utils"; +import { log, verifyEnvironmentVariables } from "./utils"; dotenv.config(); const PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3"; // same on all chains -generate().catch(error => { +generate().catch((error) => { console.error(error); verifyEnvironmentVariables(); process.exitCode = 1; @@ -34,7 +34,7 @@ async function generate() { const { domain, types, values } = SignatureTransfer.getPermitData( permitTransferFromData, PERMIT2_ADDRESS, - process.env.CHAIN_ID ? Number(process.env.CHAIN_ID) : 1, + process.env.CHAIN_ID ? Number(process.env.CHAIN_ID) : 1 ); const signature = await myWallet._signTypedData(domain, types, values); const txData = [ diff --git a/static/audit.html b/static/audit.html index 192f814e..bf505dc1 100644 --- a/static/audit.html +++ b/static/audit.html @@ -1,4 +1,4 @@ - + Audit report diff --git a/static/fonts/ubiquity-nova-standard.eot b/static/fonts/ubiquity-nova-standard.eot new file mode 100644 index 0000000000000000000000000000000000000000..1e46099c15e2689320d5364ce9efe044a746c4d2 GIT binary patch literal 56807 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

+B!4@fPXK=MbH20b9;y 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 literal 0 HcmV?d00001 diff --git a/static/fonts/ubiquity-nova-standard.ttf b/static/fonts/ubiquity-nova-standard.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d95348697ee4708a002df1f2d5f7651779a32347 GIT binary patch literal 187128 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�o)%n5Ro>)+X{RQp&#yU;IxEBgJqng`uq=ux+O zJU9OXo$K6rzb#f6iC7iBA^jfYyT({F-<=Xc8n|9S-?duHhE^JrNZ|`)+ zF}(X9plb=Bd|KPRNoaK*=1*lCU8$d#s5@?lCZvCP-- z>1PBjN*ZlQ)2G!U(kwjLrCPV);o@Gh;@L+L{VRAh2_;)eiv$|4;8R=}#aQkp5YRcN zwbwFd!OC+vz}c`fNdD=0@(>?7d;9jY^EXKvYWqLZH}YRPUunPNzyTJ*;O&wAN&AV<)84Ikx^BOn7HR)adgb-_T+15sJ?-D7 ze^o&7^b;EAR6ESnvhG*1M2~X^dFy1HFVOypg8Lq#McN-@oK!$~y6%4)EyB~gPHeWG zVeRYfT?_DBvqO(_|5q2~azFhZ1|A2#3_J(?7*O2qRD&pP_jY>T3OH{OuU5LNowF26 zB2~8+7F?8``;~X={^ndT)9~+C7a;rqKll{z1n@NQJn$31@bBdZG5os*{>=#hIl_GI zjFFvC7qbC>#&G4TvkjYex7!k1YuK||`)66Rx`6Oey=F&FJS%HSL2%3ZOhEXqw3j+} z#i#&D``n2+>wd+jJ)F>d8awMdSYtB|H5&h2^&mA5>ctc>K~RYIg+tC zWH_EdF1L zmi+#Qt^ZThU+dC8E@~IqdI)|e>sC0vw7*xZu1nhSXmD<`KIgVu0sWlhrq=ZqkLY@f zan>&bmg{VOXI?LH1v{)Hi^k^lLH1?G0JHCkqnXFi%;TsMafC@6%{-1~9!E2eqnXFi z%q97sE+P_E8IWse(IuAr+KR^O-$$Y%G%J$kek_hw9Hasnd%+-1(G+P!y>3RWYDT?o zM!jxEy>3RmZU!6!-2$J^Y`#lwJX#aFPN+Jjok_6)ekZKqXAQE%so4@qDMyc71?iiMB4xY~MVzr?Y-TUv^58wWrVSsN2vpzE-X!VS861|McjC ziFUgyvaVe+x0i?O<1?uv=Sb%E`r6jDsoT$$OO?ER-8CKgv)b*dwfj5lN2;pH<9>2{ z{#F4#i)_&Ne8l>e!RI;2dG58}VQ*0~K;yZ{4Bh`OyHn}vx?StqFBRzI-}H3yLj2bK ze&XrmG8Q_yHSFo+dOWR@FYR}i{og#DT=&yD`OBV8uE#rK{gbDYXVA$tJ!|@OpZ^Yf z?zmgO{0q+0$hHY5v%rQ!SDabk3^-`@>0RlATpRq1w}msnL|5 zbjL_S`APNvDF2=X>;?7%*8}eY?gk9yC!u^P2djOY2W1S2B^bnpFepnb#=t?0frA(W z2iZXlVhkL_7&wSAa1dkQAjZH!^pQaZTpS0G&5pYJX`LWv5#;<9Ak|uJc#jHX5szI)kQ9tuD%V#E>CVFP%gv93j32{9ELk^{<+Y+p1ZMe|kcu}Q7E*uW=$BpWw#9r9BvwO?s6O)&3>E5+d;g#sMy=p(XLE+UM z*1sxwBJD#O57E*^ui51F*X?)8DWBhtzAH5uMBn{eMsoYB+5={se^LGM#RYHu_B-LY zGS1TW!+tyZapJ^`s$sC*xqbmXAqbI+4Kjx^FK03fsNF#o0-;#-FZOgsGJAGe>s^KG zw8F_?Ut(60OqB^B3v34V09OJBfJ4Ahz%chwnENPO~A#27|m z3>%5z?o~|EZi_d++xi=+VRe6ZUvGdkfs}rEVE;s>NTRPtJDoaLe z8f|xa-SeOXbSkw#gib%H=(LdT#Gb|9V$Tvj0Nusl15#(A%DPq@Xk`FX79w;gJoj7#Ky&h%l*e&tO!6!ggh``_a*(Qk&wQd+bE| zr(3uFG@XA29-^L2@s>MTCE+2P6>o|0j`Ga%jvwQJU$I@@QSm^2uipJTng_C{e52-F zXw5SIS(*o`cG*+%x7t&FVoCqQ#uiZ6U+*cOE*eKv!_S(gk zr~BWA`s1F@NS%%@`)_nz1j$7$nP68T%jAmc9O7TvJ0teJFia*4lL^CQ!pvA0CKI-< z1P%a)fTO_uz{9}fz?XsNfFA?KzPJ1!#=aNEz9%jz#~{`Yvwf80YCRrzGD6&!>P5~u zabZUBg48!YIvIAAlpaZwo*WuKvqB5eQP{?`W@)x-PZ9Uyp%nr#xrH9QvK(o9*oz1huyjRz&J1moCjPD1mEJSnMLSkT!MXs^v%tZA}|2I zkynsn3Yf=1iSAs?F(=UZ#D zRI%CQ*R+ZDnEgi$8sb;d=hWvPmy$M%%iLruN1E;Mn(9bg*=rSFk-dUm*SqYXKDSfr zr~PIWpR;w{bG@$G<^^Z6N*A>cgEwk~CGFsi^n))RvG5`^cq911`I*8PcN|b4@Or~v ze?#FPryKP5+Yj3#MeT}@8XN4Q{=Ao*j<7c>@PE8o?U{%Yrv0F8splz!-_y?X9EQgU zU*~)7tJ^i7{)?h^;nRAYL)LrMIJl=d4f^@5|E>COQ{(vUcUm7VY8M$xKc43f3yqlj z8XpR$)Vh~;UE^Bn_sI$PW0HeRdrA8>uI1ER&gC5KS#er<5yUl8;=iQ!mSmLEbwUa= z^A>q~o3J~dKzx2IbRSSMM$Z4-<7*M;4bQ3|n>sJtyda6e{MnBdRrI?)HYO$gvavg# zogE)PE6@C>dN|IfnK#L`Drag>>3QZH<1yz>(_ZS_zK^d@(*H2B$Zx;R8|PN*Hw)U` z@k^aUmllrm2537FFb(sYMp>9fS(rvyn6|D24giOM zqk!3wOryU{qgcBfwq2xiVRAd4p&I$!Ej_x8{4OX@>+eu}e_T;$9PvlP+ZH)*weyC; zN%a-ZK)ip8YXv^7P&tjdDOdidxM2$IBE?=K1@`yCHByjw3i+Qx z{-==tDdc|&`JZx+4VNFp92=&X#T3F%pWtNNx<(mpp5f*hZjPTRuou`5To1epxEpu? z_!RI2@HFr|@DsqCSuQ__xp{`0b4$@XTniXc;fS39$F+kmu5je3B3`KoRqE)tIob>^ zSMtaxDBtlaAGv3r%T+)!+RFRALP#E6f5)TWck})}T|ey6>5=PP`kj+HT3-JlZD|1O(tmG^#m@B4$+KUf<$=e_;BANbz~vflSR--&GF<_gu7FHeK&C4o(-n{@ zN733Iu>x&l1rK?QjdZ!<(2{q^vNov6=w@8S(_(v;Otb$Tb_2o3pLa!I}2#d9k^v z^n82!j+;KTErKuX*i41N<$xZ~TM&{)eqUD(Zh5bK6_YUHL*{<2O6~&{onKb1D}wMakyIr7ZEo)FCe7ClL@mk!8o52c1sh={jlc zq*Xk!5?o7LFQ4*vAD?|GCFF;pv|%W17)l!k%ZH(~VJK}FN*jjKhM_dEfni#`kBf%@ zU&tqfpb`ZH)g}$6OndITTpBf?$V<~~#gu{nm*|QqdEhJ5A>c8q(_D#v+@p|>VE|n) zfG$?23kJ{y1L%SQbin|+U;te(fG!w7m&*XUU;tf;OG$F~luMo|$P*PnlV=L@OwlU^ zd8Q!G6y%wLJX4To3i3=ro+$=AxjQJrdog)t2=3K23C$VSi;HXp&5glR*0U=#8W0$? zq`ciZi>urDc>Epk{@v{UmeP;NXu*4tSw{@s&q-}Vul)||`$|S@x)K?!``=}KLCI*^ zoht&Am_+&ty$SvPHaJ@<{S+NBo}ypz<&^jv{rfwtf0uDjd>0x0V!`kA_sHn)Y8kEW z8=z>E8Q=Z=U3Rj7PV;hKc5fTZ`0#_bX&J45pVhxdI=jC=f-dnJ9-WJfm*+x8A5b#- zZ6c%fJBy5#??gub4=tnLre(AqyMPV@V~P4JQs zK8af$>IReLMEN@}&`^eVk?@rPuGTBQB7Q^xEsLqsPG^ZW%>tW&J;0T~0pJjD6fhj3 z91c;guv|uv40-MFpmkh#BI^^}aX<+?X-V^~d~W4aV!*d~lDk9L2*Dkmpe_>SG3gO2 z=uvcXu&IoL0#AQ1pu$>Ve=NQZEjwag1toyvPJnyXgyt6#-EYCa3^Um_T zvpnxC&pXTW&hosoJnyVxK%I+O%Zg&=BU!H{%RoT^G*KZsb+MwL-LR;5CK-B`Fr&u3 z>oO<-`J0?bAJx%zMB8I~N6$JxY){)YNPJZzZE@AP(Zww4vh-SAI!)^f@$U8gA9pnZ zm!1PRiB4}D+k#D^bZALp)I;h_Ukw>oP>mpuLY+= zkg)h#9AkH=$9TjVgFJmVlA?qP#unu7+>5AjNQiGp6W_?M#@V8Tm9@E4a9WlA#6{v! zEGve4^g)+>OkE#z*#}+rL6?2dWgm3e2VM3-mspAPexMJ!6z?SMeRlF-vXd0o^p6zd zi;ooR(>upnPhNC0lA8#rGsM3vI76H+>Djn1bCN=wZT%%Z>c9}xHgZYh{9)_&T%7mX zk07sv2DCkMasNA)_9w1V`3u|MRQ|%d_?^!GG={yinQS7r=xibqhamDmdqkopaxJd? z@+m$j5_uqXZOIRAT4Q{QX}6LO1&g9!Q4}nSf<;lVC<+!u!J;Tw z6a|YUg*^)S{aic@$SJoZ%;<2j`Lu#0#U*8l0_i7w_e?$~uMYa*59c;*Iz@%hcc#xd zCw=^d#q8R{uNM`s6?_mp(msvwT4#mfwck;AhXGdO9qpp$h(Q+p=1qKf?XsskY<;k( zzut=-EovA1m2u?0aCCnhZ~Q}|KY8t957zg+Z9na1k0v!vQ`Ut2oLItjHQ)s{_p2aq zkptp?nC42Iz_!9uTVchmu;Nx&aVxC2)w&Wm02~620`~(C1CIk=2A%_c444zxE`>4IZ!@rglRz>@0bM35cV0#?QLLt8>YTCOr33*I@>UHwqfdQ!_?X4nmU&s#F#pD!XTLrNs+1) zDRCbhLG=;c2$r#uiw2+z7z4Hd`+%!}8-T;WJ-}l3!A085$&PAYx#H`H@F>p~7t$XSs#-U_Cq)IuPF~(NSEwnUh+)h4}97wV)^2YiT;T%X-Y)Yprl( z&!*dtSij-X!G&fICF9E;>?XAbQ};RXHKAMc{XKl|(#xT*d3!9ruUB*`Wog{;@3JWe z;68sKtG_=Xdnot*?=X8P-oxzigwEaXpM6Af-@AobKp5On^MZZ6P@%PNn=0)FMu=slv+T8&i@2Jjw z&3#k6_m9lHYn#@&X1%0c_%VMAKmIj7)H+JL@K;?7%*8}eY?gosKGR|_0DCimaE zqVc*m$F^;!I@(O-p4OkSY_4;8|F+tu%2e2n)U0Wa{-2kA<}$kIhxi=W|Ag)vw_euS z6U5V6vL}dw*g!xe^}JCRC6|JDSWCr3Q7ap)RSLBvR#&nig!ydYQ;u%^tO%wQhksyi ze6D<4^MmJ%_G(J8DwBy6W`|z6y*N9cdG>z7fq6vHctw40ReEp}=L`MA_n3;iIll<+rcJrubHX>dMR)DOTD)OVGkI+I58fK~*8|$m<9#R)rSJ;BUHmZk zTk$1{+|xOsk5Z50R5_vjsq?iXlM_0ps^@awG430IPbQp$T$bAJ#a8XmS1YLuMTFZP)J;c9a5L&5cd<;OCiE4>1bdny%)nh#q}mAs=8Aq zY_Y7sdBFD-Fv#pj1M5^>awaLKAHRCB!GVJE%wKR1({sjDKVfP$yJzNtXGQ~b-scu? z29LhP`d5m+X4d}*4TA4od^{@pooWwaS8i1L-CE*?sZ$Ld?4^gu=W(S!twlZ` z8~!HW+o~qC(1)u1%OWbv*0Rgv8-#Qe>CYv{d1+)C3hwk%&q7qR)b6AXu@YR#&Ltj$8nI%4< zt2ev+MDekM@D|}?=c{+vkpBUEfcS3b{Q-FcTJ^i}BBLfQ`@PD}qWcR!oRR*jr^H{2 z_O0WuYiVC??H66Fj3%Lz!uV^yE?rUlwRv~-W+iN*-1uwvYL(Zv+FZf$P2@FfKDg@A z+$ERfF12H$1YJL$oywBouxV8Ab_`of)7z39DtKLNq-HQsycD^piftU0HZd{ih^#g3f)cSQ}qf(qa9J8H6J092IVK>>Oc`rk4WKbd`H9**x{WPHHs`~EYO)_(olFfRH)b} zJDo2a!7+gKb~i;8vmDl2rg3 zoSXxlnWiK!sh*9iT+0XI!68oC&@7mW2`xn~R3fslkL639j?Mv_bUhB_` z?yGztIM7s2!?)_(Qq|0ka0s8WALY~#9XST1!2vf@4JlT&-B(V`66$}6lidvL0j>lN z0Ed91fLb^)5j+IQK?nO!Rq-90>VqK8F+f>`WEa{9bOYnS9B>|RHE<(v1o!|T4l}aB zlY9+=1Z$L%Q^_|{kWR|v!X(rck!z+%-JplRMwjs=iqU2Kh9Zelh|psA?sYd+y=SA$ z?yaxTl1~<1-`|tj9f@*~P~8^+84w+t@plZA{U` ziLVRI6@2f}#@Bt@ScS2T$?v`KZ9K)?=L~4u*gYr2Hs(I>&7N({rBSiXx!@5Tj<7O=Sk?hBluDCeOPNHmhoi-y=M3P9ph0W^!J^XtmZ~!<290iO_ z*^ErttdxNiBk%Hfe344hBRWb?fzndsi|RYD$fG;ViXh%=;elF>i;ng%=`>eT^!`!a z5B;YCMLmn)$ilp{2#zd*Ba7hROVM{e%7yeqK8h1d7BP}VjATihL0H>WT-ZhvnsHHk zh96L3^rD$EzMtVoGyG_VAI(@L5-7Kliw2+z7z4Hd`+!mg68D^(OJ_NxNe;5hp_b)P z%W|k?In=ToYFQ4oEQeY~P`Fmha;RlF?z-58b-+n33AaX> z{wE!smrkZ;hvL+&Pi^dXX{Ucvx^?BsSbAgc=$@(8Ieb&5v~S9e`tHd@Vye5ozI!T> znC!0qYTI;wQ!F~zk!b2k*VU$bnq6Xw_M~fS(mm0|UaKvMjhU8~%*I4wRz7DH{p3z; zaYD+jeu<(JiPaU^Ao}?=hTaYfWszM=+9zq>M0>)ylS|dA`=hsy+W#v1C^iIsyQ)EN z#`#k<&Sk2<+s-(bN`G3Hv>*1{(evXcW>hWvjn3~ZKx<{913`l`qBpCnF+-Q&)Gs=t zvXFY4_Kp!r(}co@z!TvitfCR<2F8Io;5^`J;6~sG@Bu({rd~ch51T=l#2`#!5CRy4 z0}P^g4#Fe`VG@Hdi9wizBp=~z@8jYjKorj@^Bmg4X4YdDCbrd=LPi7h&u5D~Y$k=F zOll9CwP=~Y0*RX^A>Ia;cu%X6kjyfAl+q58jCQ7(p2Gfy$|P=#c(ESq0!QY+gh_-U- zkm+yEB$%l{g#1sm%i&W4-O6MBTQ`_*n0{+`8WSSRz)x zrn!AhLw9UVu4(YBzP9!0Xnk9vtzLcqu4uNap}Z~{8gA|$jzwGRs#`LBO&Mj4^tM^7`O)zH;s%sMH-ewlfvbsFobNnSm zKdZ0{wmSR4$Ztq}>@rkJc~6O&2tK7hC0Rv1f6H!PKC8X=FLJ9ng~ym!9m&<8Mi=KT z%9rxu;`0^)#NSP9u#(PJ5@bkjT{$?T+=+HoZUko=!P%dwto^sx%*>LdShWDheGZsa344Jc8 zZ8Nk!qHKnjE8Sofyi4X1-qj(zi`G-O%iJqpFzG2gZC?4^!qbfH(X~~+UX7#M#a6}N zVyn7BkMH+CY`sUmk?%!EQsZb_)g49cVyn{Q9J*%FIHo=5ycgdBe;n}z)BSG~6Q|<6 zo1Hq&54!D}7T712p&+c#bvTOplPK^H(15Xr?a4RRJ zR_b&K7c?S4UbhO|r~)^tz>O+!qYB)p0ynC_jVf@X3fvGWz?9t2#lwK8+ja0;8O?Qd zU5pV+(r(mAb`JY}i;<$P+2L4TnMqoQ`igKO9qO&uMv<1@`EdRQcg=-=iM>#8L2MhJ zR`x=@<|+YS;Zzb%Dp;mQ zqJKG#0spA?cs83q_~Vsoe82rLIW3m9Yrgq>QM>R>e$RUy!skk8BET8X^J3#cE=&7C z3ulC)_EP8YTlm^*m)s1}ztp+)y25sM9Bf6BI)nb33ngh}&~1ds}fyvxVHuW4TvtrcKwmI5PvPoP+A!TX-}aYzaud-a;cN z-vw)ym_DyMuqIK{9UYInp?Xi(>|nDPL9_eTwZ$fPrBn0q=G{Z@xp%4YvuU`zp?vL{ zL~Xh|(Y}4pr6XgP%qBZGoIf&r{)W!(^w8Oz>++kUL+d-*X9lAZ&D^nmD5}<9+iE_9 z3tgvu0a3WDz2tLAu>LDp{}q_KOIR7vEYr^ zBk=ABygLH#mTY%=g*7Hn7Qr~sh|bu?J;c2x>6sOZ(ry*`)tI&Q?F|0W(=kzntx~n3 zE6tUzq|EaMS=ca;1V(|gfW5$e;CkR)z}#pqm-#O5occF zX4yoQ2J7nU?eU>=qPbjTPbR%%ytQ?F$HtC{uDZIeiH`mqwY59S`?~Wd0%xBfV7h(g z;>pR2H?(hT9>UnYX{fnB_DpO*(|Hi09&!Fn&UH9H8UoX=RrIghAA|n+TlCO34HdLY z|HIaYiu!++_FI{hu_fdDn>Ws(w-=7{5#+&bSDU*k{0b5u{ziJ6T8okZU+w3`qE?L_ zz+POR;=H=O_(%D{qrj8ESAiFRmjQE%v-}{U2MEIXwH6K5_+>6l`XFCFHGZvrLt)sr z;wonE1S*OHS1Fq@*@($j3DrnfSbTNa=wGW!WXGV$N_A94>aH3u8;WtiaLX>%geh9L z{d-Gv%bHC7xuJdEOTC>4-{a3LQ7vz{!Ab1Szu@DHIwO3y^_P;te$pF1W8Mo5>Fw7G#l1P1c%YR8i}sAR0YT{HF6~9RZ)#Zp9p+jiV|Ot@kj~IH4HDlSEBuwBFP2W zrRsZ7*#%_pU%{1VuI<64H4=aOE8EVqFR?$I|AO6<|FS)p|IJT+Qjlu)zS&RC+FumZ zlK0ckulSe!7U4&BUbW}YcaA#?yxAM*DEiBH)LO|ocUtp1yIJus6f?&0+wZjg(QW79 zQ{?GQQx|+vva%<62OS5CBRKz?)8$`$c3#TNA+wZ`^EBgNB}ayg@rX6f0#AG5)WpFS zEwC>=i>&k+*~w?Ll|G9Q{S~m%zZP+@8PM|=76+^S|Gk=u=PWVHk6*T>tAEF}YjfAN zuWQ^r*groWkB`sy51tcV-+uX~lbPfPa#u{Pzj|BGx}o-t-q^&>bZX~Bysy1IJ!MSs zi*Ww1kMmx;(2i_cpdEZQgwL&m&-E$Vxs%L(BDLT6B25s2R4ey-=I564Dxy}h}y_$NkOe&mcPe)LAek6u=DDtzimqksK_np1*5nQPrH zd|QG+;rHijy~*!?Cr5Cy28I2#j5}P^F8lFYkv2>F%Noo0!XLj>_&nZy552DNz8~@0 zZ#$cIW;BPsCi0`je!I4z>yuF8Ie0X~AAiv`vL#JNrDtd~`vD&Ppv#dsM8VT77$U(Mb>RgHHiZ08azY13v+jS{mdc3?zY3;4EM- zupcnNpG~a2_%jvexht%k=qYlJ(=h&Ny>MuM%7py=*^c8U|-iJSn(e@V)!{ zLr-eGOO0#vF8RH8U%S%B)qvKk4zWn?_ebDcqF3qn@M*&R{tm0~eGuzl|CbeQyxG$Q zvQ#8YSYphPdeZl+`-zT_b!0E2+Ygh^PWWPq{M=cp1-R|+C*IrDDYA;@b$^$S$~c#* z@qcac_>6NYx`y~2GXnF(_cFffuixYUQ_or0E;OviQR5qae2`Wt@%B}Tx&qGuiLG+I zO9P6B$_8ioI*7t$Uv(WspS+Bxr{8c&6|t7L)O=ZdJ|&C#tFDAdaS1o7s<0BG{r&u> z=5x7udv1Q~*7^LWUV6#?Q2GM?OXsh!r!N-wLctAWmevCgbLJ|1@vQ~zGN=5lWM8RT z<8g4c2|i5>)VTD18{aa{iNB@2O|7N0z^DIqNVR{Szy3_&if%vjdENd4+Fw@V9R5M! zIP5{}Rmwhk>-P)VC6S=@2MUMuICo6wasHbAJ&xKx|FzejnT!z|^^ZI~8P4@-xSZ06 znWNS?BnGh1=!|M|9#ikJNyGC_v23R}e)**pmqk>2yslu=irwS`OLnWP=9lbHWz)*! zvW8z_E~_2kUwV#@d_~Q%^3(XVBm7Rc-_`t}!jW0xjQ&XRM`;(?Ii>j{bh?h-N$c&} z7gv42TS zkvQh}Qy-B%B703U4*m5w2h}*HU5z8VLNyNYF+aeLspDe=!%clccgI&4A5&DH(8miu z#8To!+$w~H^$AOtsZTgcluVtePe^3PzWGZou~+9G*!QE1ZT)|vTSgzB{YJ*TztgYg z>!2M_^L3*;FQ)xYq^DrLX=fh$&HF#0-oLQFtSf&rk4LQE=T|CTL-lX4ULu4O&M5T; z8;62McpAUK_qsKDM^SvA z;gsyPbck6McQ$Fb#2oqROhd*T=@%;G2t*}k7e^L-wJ1T)$f8PxZ|=`UJJ*bKWT*2B z^SkYt9ns9}WAXO!aC~j1(*CpjIZh&fp?&Z1$NM+*)fw5eU*YOaYK{-uYdl%GU-3oV zemj}Nm8^tD3i}_%p5eF4xrpw6tMynxyU1MKeuyl2et*CHz1BY$w2Pjq``?C>n%`e= zLAM{lw`d5qD6(}wGPemT8MJ?0SBjGQg;FU>XX_EK=+)x3;U<-0{}O;ylemS>;L*Va zxgYp_aVn~yc8>GYPrY`P45f0WU&%1z;b9Tl8LOm!OxZ8{_5OmBcVm_GF||ly`v;kz zE`-pG@~bT5XISe{UO`vU)F^rCiiH6kPNCu{>|9?iR=csccc3eG)lARUSk1=X{&aWl zs`Uf8Y_z56MCv`+6XB6)DmM}>udQjCOulKu^wrz@YS%<2l5bX*v+>Ctsr1fh{=VjC zE}62=uc(Yq>=gc^aRS_OHZQ^HIl&bVhwiXz72ntW|ITZ_%X;y|$IUpuqw3oV&WUyM z32+X6ZhzFef$z%%_lmyf%&zPP#qZR(fh}fS|Mz#1+s(u2z*Pm`e-08CKKJKJ{}q37 zpVs8}&>G+0Vb@~=)Mt6OIG2IB6ZYpNc0&Bf#9G(JRdLP1pCxGF7&^u;wcOy(p~T?H z=wkupAq{h<)XnH~RW$#bUh6RPBjsrpIOgqsNc)TID(Ggsxhgp}rfEm2*kOL0it zL`P&ztxHwWY;Hj4DLRrX@7sR$w9wP|U}bWRTMDpqrY@H2k!D3(Vse6{QmGx2s$PfS z^DQDPoE=N(YH@oZkH5u%u1xm0OHLQVWn`CP;b7$|k0wD4()5Q8GZhN|)#MA`)B~Vceo!&hPql7O~nQ zcD;zzib36H#tUfmrI^M9*`!7+dnX=L(2gtvvRUKmOtb%qOUjvAJ&SU#xitXeb+(R3 z@Tvd?WBb=r<|Uat>x#AO_s5itLd^Z?{BM;fhsIh`+XUUVrPf~2aQS%FMY`<*(BNc)Rgr?kES7c8~j>FSiG{Z8v(VLN_)FTz3$B*Jh8J*T8?T7t#wNIO2oFQx0IlO@Jd^NsM!g)8M zP-_d?1Z|QTTX{hJ;!hYltO+?`kXV8!Mq5e9r;hNKuS9esosIw>0Kk4B6-l<4LA+#; zEg2#RGDHw$tSf;7z#-r$U`QoH1Oc@haA{i0WXRpg@&*B(<*7D(qPX-GC@v<$TM=VE z#bL#?j4`bbE7t#N99B$2a%UD&@Q5V|=+dH;iF0w9BX9EC$r`NWq5U|E~zY%!$I{`hUtW zjIcOq{XgTCjKxZMBtQ1Hw>@b8@t+{-NR(`q{+BbmvvVLvArVB*Ht& zGvjm2M)p;-t9O)lml5RMA5!|F_~vyO-j!Fp>o+tHRPAE#3bKn@+%9`EJ829IU$uiKA^=aOol6Fl?U@31Y;Z~1-By;j2BEcGW{{OjOK zux>%JBcOZ<-{^o}gz#6cX6Gc~r%GDa;-^&W`YF}2L#V~)trnlRT72GW@p-Go=dBi_ zR4oFt7J*p{)2@YS*W#yCi=R?0eoD3YDb>1uO3M!-eo8SOqRW$##v$$$cvzH1%~vtc zJk5*Pn4(H}OS-js4EnOQr@)Fhs#7*4%Y}F)m$tVT}(nK3RxIf-gxp?Fr>wqsNhR@gFMN*l(%+2klJ??@T-W53|U^Klz^L*X?2h z)BSISLkXTP9p{ksMb$2TPtE4No>Ai*RO9&V5-TF(7q)A@eS1;6@NN3>wui3K_U|Ne zy>JM>rzzo zQddPUWm-$&IHhnL$@VF!z{H(g%;lwUoKiSWDH`9SvPjI1oC`|q#TrhA%H4|hr&%FG z&XgMEEhNay4>PM`_%gn#!?%L;4j$zP3$E>!=9-#jfiE=G)HXF?v~w=hpYGpHJn_#m zf5}YvqaU6BUFMGo{2AuG_;+?0>s4x{WSV&~C_TOp;Snd1p>9c|KR2bR-jG z5{qUg{N=NEW-i%snbUX8HS#3-S$gboM>LYZ)hj6!AS>b8oL8EvN8*kw^^cfU_WEKF zFp;15s!ML}73P-W#8OTQ%9%Ll1m%odjy0kj2ZC}O2+DCFD93@IoRgq(w7YVAbj!)S zR?ay}IabMXBxN~X2<3Pol)GLC%MW6_5Ok#!@j|G9!Q+-(*Dj%nDjI1dQ(O9#rdUJ$ zn%d_6!E{qB99CCOPqZ!C-9MQ#A9^mP>}#DjFnbluqHSI&Jy^{NFJDZh)9#$T+I|uH z5^_aXs_|B-brE{9l_|`GrH+Q}OIj|-W-n;%Y}nl2cUHL5`L*s;syh}>CfZ_Zjmn%} z>q@x%YKxhc=p{jDwIvQfZvmIy0?G#1O~W`a2b>374crJE0X_hTACr(kg|lQ|{rkD60a*{D*WIjGF;T1PYMQWE~F>W@<5@v`pms-}+G+K#5G@$SZWys@FJ z&1oI)rXdvKi|+AcdqZPeTVq4J!UgNZjP*akgoxdfNt=KZOeM6<^XjLcFVws%fgj`bo%1iCO{;FFlJ-~{u7^sd)C-Z z3xeKYwAp7?fKwG9b_IxC0b*Bx*cBjl1&Cb%Vpo9J6(Dv6h+P3TgU&O$tK2!0=e--qD$A^3d=ejkG0hv4@i_ubYi zqsH{g{IZUoER{8LS8;_}yA>>ulBNFI$(ofYS(*utW`dVpmJw;niXlw(nCr+J`oIbC z=DclzmQ`Sfv6}|ri7M~8PbGo z3cLWk448yD%X*y<$CKLM@Yvk6#|>iN?cm3AS9*5UH(;-PV0peWYrz-nJW2 zcnqI$b|CU@VVIN3!X2(GlzgFo5RgoocZxV!MR)Vg6}+=x(2Tru1@BzJJ6G_|6})o= z?_9w@>TslVs>d!70_LkC-`$TGG1|PJr(v-+|0s_qThUB4 zhY{8D_CxuPI3L=2{NoJi-j^Pw`1}|;JH>d~PmQtcjBN+vWp?>~yCVOYC+$0(4;{b4 znazt%_VXH-c{20BJn6irs7FqNnkRxu&G$E{zbAN(fR$mN`=oO}S7EEy-XUC*X6zVA z@VbmS6wlotW_zREoW8;Tw9dvvm3YMJ_e7dGBlB0%KN1t|P-{-`1hkF@)>Qc+oK_|t z_r#1b#B6?A^|C;AwA6rCK~{T=CtY`Olb-G|yrZ|?v^SmJd(&3;bL{-}?d|K&9~--1 zeOuf53+(jPt@+1>FS>c_)|)RHc0adv&s{z-@%k;@-CJHiF>(1^w^?8757qikdh5MK z{XNaXsvP`6M_}`M7n{u#`g2-H9cou$@&RMomM~W+OG)r}AkYq$J3Zh0<|PWvo!R3H zg5@rreNEk$$N+ z;Ou$>UTgsm$_>#T3>Pqaty9dKk;lxN4kQ3Uc~G3OiQbG?JIVY_XA?BB>-fjjtaHR9fPxvVqXM)JwXtVlkYRqAH&pt|@-O_E88+rRZa`%U@&=by9x zG5@>v-u#c4mGYl%-74!7<315}U;JA5TlnqO>TfJEOaffi`4P|2NYA8QBRLC*)KdJR z(QsSMDI#itM5&UzG2%H_aYoU;GD1{W=8U6d#nH0jU{4$^D~^^GN6U(%WyR4y;%HfM z_sB5L!A6{I7>mUS9XyM0l5TJHO#Z=>t=^-=A<8UvJmt=(WFd^wCRQH#MqW)E0K{+< z<+BqVBt9|_kPXG?NTyClX9w$QhKbb8W;<)^!_}pw_SIY7y0f=;=Uca&z2&XDdV6=h zb;~!ezvi0jkAMH|*IxVfnH4>oFCHJec(!-N#*Hg_XD=Qbzj$-ciWz(R&a2AuHSKZD4_tsWl#FV-h)eMmCx5KpJpCS0&KtCa-S^C1UOQb(hlPnnk@ z3xYo{#x>DzFhO2^gU>G{m`{vWLZjjeDJg?0ASjuudNoH0or8k;knm+?_$6Z5zT)=Z zIs5Y0oqg$L=iGMtJ6FB$t#&B?AA7D`MJ!)`+5U6w%KQ)C{+`wEWMsiZkyrh8y(CNP zQ?d$W11CN4WwvOM#J*C)SYJt1XrbbuF!Iw*epk!*x`2b&V(OkfhH_P_b~1XG=~vM! zqRyho-(ERp?v-O^mx+mmtp*UXje%fFe@%vf|z22(Z%e-wEX>sy{^0oca6pm{UAP_j>gtrFg10-+E_HbHvWUH zU578*a^t?i!F@Mw89aMawsz~*l|38Cp?cX|Z|~e?U zrrxH+@bkiAtxC8K5(&sovZN~q32MFbM;9;#YytKGR{=Kwhk<(lRU}W_59MFZvy6w` zh(6XDU9q@$urs-`c6BOK+PF8H+A$s@Jwtl%oanZ2c-5->w-!|iUga^VAwFo>&*P6VUR8!5iu1S{EguXo@G4T4%aQ*ji6AcM5;(w0!x}A`LAC zHNnQEVO%@vaO@(|j`tg98QG?3rC;_l0X8uKtR4ZZ9s#T#0jwSYtR4ZZ9s#T#Vt9qs z%I4=`KybE`F_gcJDE&H3ltG0C{%imh8bE~xP@w@-XaE%&K!pZSp#fCD_NU%!wN

eJmE~9t?-G1Ff;qZGGc=n|?diw|O#_YN^^-8SQIn?rRCvP&4}YZ#uV3oRf_- z^l$9x$R@%iPJPeX-tJ9WairP3Z^0vOUX=2AdG~{5KSAbdn!IT-@h+Dm5#57 z47AtgBB>2skGyOCp4+bPk6(QCb%UK3UipU18k$YR%hK?&G`uVgFH6JA((tl0yi8o4z>E91cnA=;Gx2^- ztM^~cIZv$_QTv0^^+9eW+5ZgkugRWuFH4M6j zLDw+o8U|f)no;WUnbul2hxlX!LAx`o&t#yiZNUUs>5R%ci#1Trf7Uv7eC+&n@f~YB z20+W+b$iJoyEQ#D-ZHp$X6;~0YWZwczj$5CRJx@l#pYM?GrVX&XaAcuVmB_J4Qk9#SkMO+ z^nnF^U_l>P&<7UufdzeFK_6Jq2Nsyp)%S7n5Fl7k#k%(?EU1G2wL%&0o~$U4!e6-s zcv&g;5>#Bpr!WMpVyv8a=7KyQ z@$OBz3@^oUrXYh93@-)4OTq9`FuW8DF9pL(!SGTVvG3>NVZcFMbREJ+_2xw<4|O%g z49cTY8pSt5%(-^?@b2-J=AOa2x`9Mvd~(;|hRfQL(^s?%cT&${xaAFRh>dnPY@f+q z)YjQ?U3pz%xTU2xTImF;qdiTn>3DTd`@q`OwbAOjmfBU*D{ETo69e&Bx}z72mi4;a z{w#Z#4jXRX2_Lfb3AP1oLF-z+SkRUQZCTKk1#MZ-mIZBD(3S;lSf*J(u;YPCXb=4@T635%pk1Js43BM%055^?Lg5tJ!wV9u=i2rDR=owd#}8fTkdNoFu1GuOsyzqP4l z>axwr-uX9e%74ecdCP%w2AYTG`ZrF6>vmN~({)v?6T63}uDfhc=Z5i~^Dnz*Ldqa? zrz2CHktwE9V&b-_8b*Kj!F(ku^PzwAY&*^Qu11Eaf4MO3jfe7Vmx-S&)k`kOW47 zvw*$8e&BlGUBKOdQFCgcdVJ3y4GCgA^DJbpqU+l=N8>Gl8aPHUJ`k{5rp}*=M)}A6 zq&`56lm8p1HaXGVJ&~++>~&6UVxl~I@y%Pdyz}C0_TqPL*>dy6*^LRZ&5c~Jq0{N_ z+;HCT@Oc|hRTLh+Xng}+rP6wnoNI_V(6{j$L!pmb{_IKRL^EGy%vTxnRmOakF<)iO zR~hqF#(b4AUuDb}wf?kPSjK#nF<`uX9kueo)leBBVdY0|c#rq9b7zWSr3G9|HY3 zZ`0@>0{ugve+cvsf&L-TKLq-RK>rZv9|HY}>jwSBmM^2}bC~-2a7{Z_+?r$p9#R@i zua1?cx77c~?mzg$U7wFtv^ADBtaN_Aq{QwUIlf@uo`0MD{9J2YNr~nOP6uldx4y;B z5!^2aWCv-3*ET#s*Eka&1Tmgb6CR$>gdQnztLQx*)*IWhzi!J_gYq5si&CeV4T7?$ zNd72A8mAc%D}EKatX~|`mQ!PvUy|*KgCf>Fb0uhis}f3${ChN)o6OYpbhfN^@nUs4 zy)v>h)tg%Vi1VTRXQzhC>zb-aqH8c^psPL8T>Jm#ap<+0N1-#>$5dLo#UG~(xh#7^ z@u~@VxMofld|WHa+v_t8eG+D?_0I${HSP}O@1NXtZ!FVMn`=sM?51?()qR&=&5q=j zn{U80>FY3AdzYM{X&$veNNpMERP}BoVD&Sq(nC+{OiXkbwzi6nD%g$4xw4F?C5+Ut zHg}MH$uPRpu;vr;1dRX{#?hUI(Vd3Torck!hS8md(Vd3Tord8PoVYP>W8S=(Ks29Y z`O_p0&;LJrZvrRTRTg~Lt?GU6uBxuCuC=??uCCsyySjRt-e&8bo|!C@WR@(Gkad!v zKqSc!*`kmHjl60IiGqeDkwhVYB$;FsMHWF&f)x|G=h>gz8hoT9?@I$}qOs?((evQEMXJ5_S3E%p%2W6j-u zS7?Z%XY%Rb;^|R}M z=!>U)p-iZKr87D{u(;XCLjiv$^Z`1r_&;Z*HK;SmRNVyk0{GYJx>eIc@gub{i**cM z`;kOOl4)qw(o$u14f%Jl(wSYu52}U7MxLM#4G<}#0g$M`7BQ}4N|2%_Qu@St$B#D7 zbr;UH-cdeC+5gq@LEA=zO%Q>>Di9V<52ZersQ~!dj1VR@X?d&gwdgsb$XE z(?aE3i*7`gZbX)DM3!zumTp9rZbTOH)#cQ!CK`P}7VsE@#aSy&RaRPMs?e?xM{5%D zv9RgN?dinQ{^`{{;X>c0bY@dN5SiLOyt*9l?e305+Y+mn%}-ylB{QBJ9f*btTe4%@ z#sbxpLffYj&;{9Z19~<6TC4T50#XwgM$k+n2n+$Uz&fxWI0PI9?gH)ybX>O35y1xg z81WwTFF8<9uZ-d=QIxPK+H4eUHi|YIMVpPH%|_8?qiC~HwArX8un*FB46r?=&T1MR z)>%#C@K$oF=&-VyN0bj#&bk*B=WGu%u#bmPRwRgeZ*L=W+IV~rR751&9H^(lXTe&0<9bX!dgZiSAE9|d+ z>_ShmCSKQ@_1Oc}dPI#avl@pR7^9B*7sG-OULokB%PWzy9lq8MUu%c2wZqri;cM;i zwRZSgJAADjzDC@j)-H4`pcoOlU@6)lDjd#G@XEm?*4T9M5$l29tvZy%T7aT|!5m1! zj~SEXt9YOpA=j666mSNurCXfx)h`-l_Ca8$as2k@yk@#}*U#5G}<35tu ze&hPa`ipzzdBU+-uKlFZMkeVzhhyv zdoFtMVs^{aV4d|uYRjdi)apdkQ@*=yU}9O}V;eT3uPS-yVjEk`0Gu(OPWpDnY?MPT z=)fZh1g$<(zFw49kHmg@yw)A}+_UG&M=!YRt_vQ0>WI}{{+6|uQ`XDnKPW#;m((6v zbH821NSHIw?HGw>{;VV2n!$F_8zg4r^f3}OArUo0dl3hS**iuTag=`N{7Z?K5Tlwb zsYXhWzj&I+iQTuqe&h0e8~d)Mq1Cf}~Pt?9j5 zu6W-4eQ_vwy(^$t9NLDawQ*=I zp-4ap*beLkt_5xZ?f~8j7+M=ghlnc{H)1x0m`p22V=CLW?VKnQzhnFqhQ_$R-(T1^ zoGcB68=FEyrDT3vp}#ObJsj(bjYJ|N(XNfIs5D|-(R^uq;@{=m*#6v9C^VJp7e;j6 zFJ?!xH!KJPl9OX^yUlJb+`u1n{v9YtT;4JAxW7IEH;^b-(KC)e&vl=^PDC?NosvUo zuK!Zi^*QId>w{I-=k;}0K*f2g=l{MuXQk@-@2a|gL&8GQZvwpc&-Hb=-~Fg0Q1ITr z1CcsBtM0U%v`HS{8;*b5b%gt+|A*9di5KI#>jUb#=t=WDC*%G)j#hcn`_=Q6Z^m4I zox1)ZbzRw-&Glbb*B>|6vHj`({6L-pUa9^(3oq{^?=9_q!*{B$e~jxR>N$UX{A%?a zej)Zb;gjb1;wWfvf4u6tJ~M@hKIyv5+h5n4tLlDj|JCDqyWB5&pwSDzub*#u)pI_@ zzn1GNchU7xu9Md%$p@0`D0IfnP9d{TsGFpYVU{C|{VMOyId}1spA zkL&ZAw@Xbr;q5wFV@34*7M?-9JuOYPz|~ve>Md~f7Pxu~T)hRZ-U3%|fvdN`)yYzU ztBWDHj@YQD=o4u%YDdc%v|Vd~CO8+xBScws5KoSd0EG1nEx}MUyuEe%TE~z9PiVv?xS?5hIX)kjqZXG3&_wu7& z=8#h8z&fxWI0PI9?gH)yWDaG%u+l>JLKXgQght0=Vgi>Pa&I_9mm+{XK?iP%cU^+f zbp%ciEmG6`15QfmK)07KDsbL9UVi736T7Fw;o|N>`T0GMF08LF5V-zF@zVOx(0VD3 z;qkrYZL_o6m>ZdkO1!-JPP{yMxA%dHZfb+R!Tkht)ybd^Np?%C!ca+=YDIaG1(Z*H zHkJ1Ih+o6;?HGB*8L@M~vs7)BA<3!>%MmHsuZC7y^pv~6XjQ}B`A((WCUly ztNED_Q*C5cS}B6JC@y(J!V~I zZ7P4lnp5!6@;j~kXt_LE{({h%2=uLob1O^M#kzJ-8*8U1L>t)MW@C37*xd$pw}IVl zV0RnX-3E5If!%FjcN^H<26jKC?wM3{VTk<_wBsn*QG79bB}g;Kok5-!% zY;>H#7#E@lE>Yy7D3*vQmWU{ph$xnbD3*vQmI%?6pW-y$ZdLG8t0K-3rYFYqNM?_n z0dB&1tiJrNm5Hv2=#7i#><^AEr|-OTU_Rd;%+C$HeCKHTwsR-;uB5}cNfpkMT)m{N zJDLp?Glk7_v5|1cj`q+{B%F(Mo;Q`BuZrWzE@X4tCL^E{>n{6%_}v0iuKp7L!( zxPQ;xOa_ea*uUEQ^k&a2ng8G5_fl8pgX-){8Ao-#0=2W;5}%KKNYf(8Ns&ld$Vp`c zHMGZ3jhFy&BO7WAKl6sQfZhL-^BXF8HPEFK@(c`}Qhz6Q+5UYc&fnaBr~4u7$y4g@aps{CkI(u_ zJxJp5k;~p>>r*wkFlLaaS~p!YR-)3x(`dHR8G6XXTp>?VZc)7pn81=X>Ge(`8~$o; zTTh~AB_v9Utsb&*~^z*@JRo zt}s5Y@`*~XWDmksRZFx?;jCW6Sp}~H6}&c{0cSyt!Ns}Ygvgpf8l>nIL>ECq*`>}X z7*e`Lwu4$|ueL@p{segpD%_+vdG|RxbLYnQ>=`(Be17k2c#rkXUAx*^t%+k-Tk+%5h^VbYWI$|1au%TBO{2oWbkpI+jH~6o*zB0Mg#JRe01V? zknOAsn!%gmUq;s3RVIF=1fyXTPPE;KoXy$KgnGE z9^ve%Sfxb`j?SbeITX}Y1N0c>O)%fA+7q5R((jTKBQG2 z(y9b}iHxcYoV{TVyAKpXA=-U=Ao zVhGz}h|xg!>0ruUwG=vraj-Vg=mWCA46p|51Fi#Z1?~jy1N5q4mlQufqK30pCpelh zPP(ty{>r_RbvN(Xb4%m&MX%Vh<5l~{$M?Nz2l>K@#PY><-f-La1+Uy%CM~f1w<|9_ zH-GxXVf-O1q!+r_%_{yCREzbKoFJiI5@XOH-x(e}5L*%P2PPY?gTG7mnn=?D(G8`v z>*)(7-pt?L2;2)8n^6FpkwmR)gOF3aq=qv(>t^<2%@GNPBq-TOScY_zvkMh_Zl!}> zuAygpO{lY$_^qN8Cqlj%`_SOhcqBHnYZQI^jgMI4@1NhXW8UiWgvYmyjP59gk!zaE z-?Pp?j!9*^$TgyyNY3Se>uov)&ciGXG9!{z*@nEQ&n1)j(Wy$hE`OU#pZ@N|z?qIa zSX^T~7!Wowpfg@10ZL42x`dc4@7jQoybaaqu=}>g^MNUdK{z%7sRdd3RVTVd^6UU=QMB!Z8+Gkt&j;Q=P zvAvK6WmIjO2PN2pqH|leELTy!tE3g9hPw|a(avb&RdS2b%B>5un5X0xHIKdcw4Rl+ z5VkE-GR4H#FND9*Aex8Sl^rT6%04}>XBhh=p57==lBlnN3WutZWK6`9v)LWngduFz zN6ewafz7hnrK3WMh06q(O_^6D1+kzT)zp@ZRe=H7^=$ft9}CPI_k4V8eX_s5uw$(J zPf~Q?AE!5Oo<1sk!HSjtHafL6li4~IwF>3G*s(k{x$;lW{$4Zt`+Lfks%uEZK~|xA zLD#QotGdLxiB<4HrVA!N30+gR7G;~l`=)GDZ({V=*p9zm*`iuq zw^U=5Sjcsy6dS*UAJVt~0uDF^HG>0A-oukn1{tcyS?L4{U_!0yzwY^_(e|!>Ed`xT z9UKp0l4~#P!MX@f603p}mn{@T_z}IO)m-UijeVq=~0SJq@o2yC1~vwN-r|=kFg=ah1E&ckvTG zufAg$WG2M#)&}l*$#Z2Dh${yTWk=7@5>XC@@dynm`ek&rdhV!)GEy1{SO@k4hk(Pt zUBLZ-5=Y+11Mda+CBaQJdI2d2J`HRGE&{FrZU&lkl3*tSjQrv$EZOz08HM6Wm_G@K zp#3N>*CFpSEP|8dnh=JbsM7l;<-%l@L)@twAhgwZy!~7hZ1{ zlBo;HRI;C#1@X4xJEdnwT$8Mx#1klP+Japgqya&Otf`^3 zt*t4V>FcO#isp(je=6LKk9~6L(yc?H-@{6+e)_dr7DCJ2QkrAXH*|aX9NvEFU2XEtn5f*%yNPxoE>=-_9c?Gj=K)H z`W4;@xz$m55Ov-y2W+=hs#zqnmJ*n9mvyW)?uS5azipV}WOkta3&NN4UG3xY@} z5?gbkKT>)l{>TzGrW5>;J>8)|Ph-qFcV?sf>l?q*oanb=A6@kHWVcNJTlwH0;*Pv_ z>$!gGpiQsb^@?7d?|dgdLHv<#kukft&fIk{$R`<}@khcxSjr#ck95XT6K{07P%1}$ zt5GS8(!m|tIZ)$|^it{;LXUgio5(1CWMjvdo;mpR#?uGC^ySOnH@GqQKC9`gU;N@1 zzVOxZ_rEgu#1n&GVQ7pE+llpgm3P~IlxzfXGnic$fG(R9W%1($fgxZPSO@k4hk(Pt zUBLZ-NURg=ic)1)3<{+jtfG|FyP`*tZCj&1yJR3ODy#F%L<4X_eTW9-SgH#FoWg1N!um^-sliL9S9bLcmEt$vC^Z0j zQ&Z8aH)RH2vO00z{6H{0>i19N!qM6D+lG_l@qy8FZ_L}Ysl^xdcSn4!i=&BL_rQ28 zl#6tG+#QkOXml#=*J~tu_piXeX4jjKoW@^hM={nxm+FuroG8Z{-=TwIsg9m|l3PT0kjfox zim-Q7u-}Nt&Wyik(7kegR#RSe!HKogVL7@=ssttIme5+A`G$KT;bC~<+v~Qz`S$Q{ zZCrWJuU%!`R(^wmXUo4~T~jtbXd9_K5r;B zuAC?_*KocXidTbIj_x21LRoGpH>v8eQ-=kC*}t*zBmQqa`>9WrBVYcq#u*jIRh7qM zkKsk?!P#rns8-97pMQK8tMhnd1|*Ni&f6L2wtnqL8`iIB9$1bDo)e?orTSLkEf#qp z$jax^c?;s`vTg&PsCp~j3(X;IJBxXjgD2G!rX4N910_6Ms@^K+3W-DS`eo~?yG_QB z>^0Bv1(BzC=XJc(vQ&mn)O5Q(>2-#ALGpJohGB7w`4Ywfy&)`H?^vZ@lLCdz9c zR;eKOitkw23D2;ukUVQrYw8Q|lLbwZ<&8mL2$%)df&IWC;4p9(a6cdbv#!K9}9nx8dKCOD~W1_Y(n=-4fXFZ?(V9hx4(nu2?>t z*wop%$*Q-%4yv!;$`4uAak8MK4w58I<%i10E%ROKB5e*Awvtg*2#>`7cYL(`ODBBQ z`!D0D8*n<3^$;oP-wK`lOZK+kb*GLckeD8cC9o}lgoMx|F_Y?iLS1f83LN-U z&YW0Ds$&Uikhz9$I0CZlI$(?iO4WY1#<1kB_w~A4cHD>0--dAIxah9%z zeAe*Y6C(|TmfDG!I?_O`Znyhm$L`qp%*JO}+lals);mB!je{OH^J3x*be%4Vy=-O} zLQ$n$>#5@mWCV^3Q?s@;oi)){diTR8#@f1gpm2X(HR`7kV<4k!P6`<{FEXflDr%-9>;uV&mjp5UVr zPas9HW%Yz3+wla=s0*T${J#`W;H;~OCvYw}yP8#yP`GN7syOmGRmXG)fy{}-7wd{1 zSmy)wj7YuCdnwsHLLh6B3>!hD01$KO5*S3qAzWeXZ7jE4>J|5n) zI(=X%kytv=HlEC{?q6Toe&K39IiA^a$@KK4TQai#*lM3oOsfi14 z=H572oC}V+VD`nyt5Y2pU{>d>;sVU-oK;)^0y^Z%v8|pQ7hwI()YSlUe2OgR zR1_W(d)H8vtDr{COlW6wsHZy0<-PuHl?`Oa+IO2W z#yXH;Qh2xjzV_tERA}Rz9otePf&TV^z~D$%c&M*8mx{G+Y}vB$c6Z=aosqtdjdRLB zzqYHVXSTg(Xw-UXJlEeMHF?Uv?GB7zaKX5-EBzMd$VfcHA24SP9?9U6dJNBt-VJU4 z^P`|}GeU*%awoFa*12m$Y6mwZpP>PSmLH1H4q|F*eMW_x^lSy?8KU2b>KKG;1mPM% zxJD4J5rk_5;Tl1>Mi8zMw7G^pT*+Nk`;U1hv_axS&_<+CsVemspWZLzeZN#c7$4uY zb#L=`pKsc`edh$Ezb&)n(rI1!AisLy_LcShLi&YXU~}{2pcnl(w>~DjK*xd!hKrY7 z&XEf%`MdtCW5L8m2Kt<=zdIzpU$#YmRb4H|)2=lfsTnSw>uS56mr2!5b}{_g7CuKN zGN!(iEf^V_--oClgSa@CI&O@A)~At>azkPRbR;Bg3jFtq{HSCkHD4xHL9k1Et3-O# z`N^UWgew>)x>FsqDb5Q?r3>hJ3}Xo~#%Z}b2n+$Uz&fxWI0PI9?gH)yWCM!z(TP^m_TH{DU7^ z+dq_|Hkp|0J{8DJMyUQ7`0|&(d~Ys3Fw8ueJ^Q@bvwtRgR_d;CooN)>OdYmYsqe~; zB{pMa$HHdJF$c1@H;&(~Y{V)yo$5DS64~9h12|{AYA?E@F&d+)gKafb+1dPTSCPC= z$Vy>GbR~&;vA(HzKSXRi``>yulkhIv7!Xm1#T#Fn`wBMuY5n@L8?;|vT8>?^rl-{% z(|&!$42@s^-VLj9qx=Kw+1LCr^SHGbqFH!fs{rH0U-9B#cxRS_%SCf}k;H-~5*8e){T0&-!y3I#jTbOMLaXAW8Xm;(S zrL2QXklH1rg(akgC8UKVq=hA!l%1&~YS;1AdSD}U z0{K4&R#87fz7Si4sV%CEY+Fbl^B@K1-b_(V(C&o(G?!|_T~M#^TXlnfn03UU?CNWPIvbeBmJvWQft=w zQvX7vJsi&jQ|XTWq#&xt6*~SOoQG6k`c_=$xZQ$>l0ziew_1gVO&qIn)_AxI9q8CnNAK7u}GEoL!8FFLFd#6OBF~3(Np(z&_wQ;8x&H;6C6zz!Bh+ zz?Xr40=^HZJ~h$k1G2yjumgC%a`R-Jpe`c`!$Ak0zfo!KQ)s>i7>F{<1hGISGNOGhj z(iuTXO8EN;XdVGoQ$a1_dyA}&hMe~thV5mDV?DG|K zqYKvU{;|H6-u}2R8XFaSm!y7|dlnrfL@ear+my+u9N&^>*kN(>=EgavVwQ*IUBB{^}v%HO4Yp!ksFz5svetNcZ5 zxKesbB=Inx5)3(6N^q_&=Qk>tY@8&1VX`ryz{|(CHvR0v;->4nZ&t_}g7k*}8 z)216bU%L5cyI#Jq=Vw-b=CQ{fEB@)!x^t;sqUh$M$yYEAovid%r(^VAQ(!?y=wIzp=Z=-o}4pci*k%EOGoP z_rJJb1IfC?`mLjg5>m!RDD45(IjUMxmAy~3FhY^~Dw?_+x*=88AqTJG(whKtV&P9# zzw%*z@Fegl;48p4fFA(nl*ZFP1QIpCL@%;w7U{(zWP1^^y$IP}glsQDwih8^i;(R_ z!s`~{#fu!~xyWIji>~K@7XbB^1{%FU8kh#Q0T%(+0Ol~yMGo^^lz~ac!~yO;z}*M9 z`v7+z;O+z5eSlXU;FSk>-N{H?%u$3a@#f21<4J&T zNDGDnibyL#>q1%@QGB3)T?W2l`o+7aYunld{VB0zj`KV*_|JsFizTW=WloU*$fmF^ z-|}-8j<3G-f9>A>b9+Xjg~eEI%x(2wFurY1cJ;zM6t8{DtYw9KovDGq(2nbt*M8w8 zbHh8YU!1;psAufZa{mambR%`$!9;I*c|0_|ZT!NUR?mC$jf;hgZd#q+Hy@pdH>3&& z)~BexHyU3of2Y2+zQ4aGw{2?EbvtwOSKhvD;kuo}(f+kItC~i%T zFUfwccg2uL{{VT^3&R>_g4R8qN8wp=R)oyZR$6lAq113~LPn65L@-a#QY-f2p`mZ& z=6jW06(oL;h8-d*Cr3!-Rw*>1TioynuX+kF@v0H{eFT0Vp<59)PXvA+f!{~qjuE(H z1b#2(6V;Cr4=RBUp~jn=Xm)X zFQ4P(bG&?xm(TI?IbJ@;%jbCc950{a<#W7zj+f8z@;UqEr+|bT91^<7g|?WF3-#5`SR;} z(;TxsGC~1?yG(PYvp;2B5*%JgBsPr%gCm;~iG|@{`Q4J1+II3~>o8QZ1v5a(c)4PE zQCJ?;N%SGTQ8uQWFc4*9M%kEAHfEHK8D(Qe*_cr_W)!_omo)hlpI-sK0sH_kEbsIW z5o8}?ygo&fIK)e})W{2ryuio{jJ&|e3yi$L$P0|Tz{m@Xyuio{u)zXsu)xR*jJ&|e z3--uQ{}40s0wXWjBcEa9Gxo@582JpHn_=WLjC_WX&oJ^CMn1#HXBhbmBcFlU&%o?w z82Jn%pJC)P_Q+5F5ILS$%u`z{v@9odDCcs7HzV^p7qW6kw#uMrysb*aO@M9l3YChq zw24>_fLK8)V?qhiVgs*$hAW`q3LAKZ4ZOkzUSR{Tuz^?Dz$l4gy0aHNp*`;&!8q>%FaQ-$&qCtdgrcly;7?#X0| z#qxhDeYUq>0@kl*2_!(~v$|LOFz*G(p3qbs4SQ zsu@ojD|}udiswlLLC%x*o^oe%IiyMeIreo# zk{_LP(b_t>Wy@rN3eA6J8ikYYNSNzFUyx5c7gWn9LSO3Mc4`^LmQ1Rp6%5&6xu!HN z?3Di&xkU>RnlOnFA+7%zLWCOSPeuwKf&xAcd;)j|cn)|0_%B-w#4fTMQ3)EVg~XqX zhCa*>o&-Jxd7#7|Pi|RX-!jsd z33YUYGJSt~>E9nd{Oo0e<0>sE{aC+&DHv zo+}pr<*_i>#pZK zjqV1|n(F}HyZQbZ^?e-!q~*#UUv>SR`ysg4W(l;FY*^ zG4+exnoMm1Er>8x;ceNcUiZ2Wd#)-SYbmL*t-3y~-mzUGYMZbRiQQ5n9~=+231&Xk zyCk|<-XrNY@xH+X>~dI$(N$&mac(2!k1b`Pm)<<0Uy&&%`tIoXh4H)6EJ z1+Ig_WM-1O$C6(y-qoV2?F?(v3B$ePgh6=|h1j2~5&uODMN!2k)U&?dRqJ_f zWqpsU@8_xY9kkwH70~m#T?Zs;kP}tZ95nK&qXxyAk#uwBho=HP-|#Z?N8Q6N&LtnZ=uK zTFgvMWtVPJYZS1yyS`2TT3zU#Vztuyz)f$&cP71SuJp=uf?ny+KjK2vJ>p-hV>2`$ zdwT&NT%y8}-@T{rBx{(6tZ*RXd2t`DjAQe8*(c#B{Kiz#?- z@l2^KA($bb;*yf8ZHTqErF!U}%#JnWylp=#~y>j4}#hTXgK}8O5X=aTR%ooV2>Y z=K}q2puMZI^M+-k4Oc~mnh95GDYXh!V1sn9%Qb8|s9PL6O6M>FXp>L@ZCM%Ngs>H` z<`l5z6j1pKSaS-s9ZfU}0G(9`Gb856s?9Fyet_n&t*5o>MR*619nm82eoui|Kp9el^NfpuJ7>0v;LK_zU*WuJ8aG8R()MF z6NysF*Y1yWPJ~8Aa2NhTsvl|J-TrG1#tQ*R{K7QT%-6P`%K9q z&B!9n@T_KJk!EC(W@M3OWRYfMk!EC(W@Higjh024kwxUVQ=7Iq;Y)(~ri|7ZB`84N z<>)?Yj>+kKHwEJH0MMfTr6qAWjKO`g8biR9ur3lB*T`E%ua#O&Pylj-PFw^SBOWn>1deqnB>Os~ z?aUItPy7;LugxT_BGOg5-iAxgba` z2$Bnei#dv43GvRiZmQZRe`^{)4`AG%!+YYVf~E>Jkw2o5&dHqb_Jun`<= z1P2?z!A5Yf5gcp;2OGh`MsTo^{@HuFChNtdQ-FJtG-Nh;C!_9U)SZmFlTmjv>P|-8 z$*4OSbtj{iq#^qA5RJzH88zr7IYXrej>Ofw{rzK!RA1Ut*WwRF1Hp9P=()jI*Hq9Q z4)n%lE!>Rr7hLaGcoVfQ|7qZjR6g{$bR}@FK55U(jCt)D^D<*zX3Wcsd6_XUGv;N+ zyv&%F8S^q@Qa(^>Ff>7{CEHwLjHHf1yux{Fu&^fayZSh%p9WgWDI;Nffx;|Mm<0;6 zKw%ar%mRg3pfC#*W`V*ikOX+E1q!o35*mIYT6*opa#qX6&a_@NcT=5SHtXl@ZD0Pa zv2**PUB#f~jz9@y3DKR*8lpR0s@7D|0%FcQ;04&*4hAahl}ML%I8r+tsU42g4o7N- zBelbk+Tlp;aHMuPk~t#pK^l(%4o9ldDNV}0!d@xnul8&UlheZFv@kg>Oil}v)57Gm zFgYzuP79MGC9Txtv@kgc(}KO8Nl&AVxUi`Ux-RRAnSFZH`kQk6}w#$Kl<|3Mm$0nXUXP#xvTAy;PHLX*$vlttDz!70vFOz&6cJNCBP<9^6`UAa-Q zws>5PvFG>;)}!bS3D=l)wP?k5ZHu5iTG1oU=+q@8gT$GqIP(-|p5n|?oOy~fPjTic z&OF7Lr?@>&apoz`JUs290R*Zy=BGIeDm#`9%`MFC2p5ts zT^n7S3`K?u!;y~mY(O*CC%cCN1kA<;GNE*7BsD!&>dVc>)6==ZfmB~xsO7Khg%^B| zk;iwGy*x<$>fh8ns1JM=owb>8&$E%G6~~Uje+YopKGqogCkFqC!GB`#pBVfn2LFk{ ze`4^T82l&3!b=<^KT>9rG;5ug>dJz1d7eg?lzv*Cr{#HCo~Pw`TArund0L*Q<#}43 zr{&et26>)DRcdY9$&@v@gATnhoD6y+EYPfJ8#J{IJZpodwn0e|4OpUG59fU9XuharmcgO$LgtV z2o!YYOB$F4wgDFb*8n#IZv^fI%+nfqnuv*VES!Ft!k#lab=a03V?sb;RS_~7xd2w^ zGa56lnCf(lwU%rzUidH#`C_ps@HkG1Y&t@~K(K1LueV6^ZU^agFVs?3?@3l6qus#^e4~F_9JzRpBvFcl5<$NceJ zIyN>m=1Yv0uQ22Xe1LdNTW_-l!5bg=`;jBA9M*v_kb_E#&90HPMK;oFdq#4RTG2Di z{F9Q+gQ^PjaD`*k1aF!JhlLthddM`7&|8#~TWHJ^pycH#S>)Mdr_v`E&iMnm_8dRisFvfoG)yIioz)plXJ2 zsvg_x`%!Br{p)e1ti#y+SX(cUW_`s*=sFASL%Rg}+4;ISqf_4V?5KgglZ_3+kqv5s zVvOkJ$YPEmo1ux>!lc(acbF&{=YkQ>dn$*#ntEC4g3f|Avg{dVK_|pKEY33W(hA1B z1P>_HUYZ^iP1J1}ohJ2wd{24gdpH&drre#Q=LFGg`Yd$QSSEGCH}>+Z^(WT3YORx& z7i$jd+^E<0jBrsb6QW(Fz?FV*r5`(T9qAhS9CuEG(p13<#rHz-y-<8F6yFQQ_d@Z# zP<$^G-wVYTWfejoA!?5Sk{2L$^mJucJ63qJaDzg%2esK)jPXiy5?Xymm4PL%M4NP# z?(e9RjkbnaF$Y-Zjt$DJyPG`BdT%iOz=`$&_kLv{U=d^$;;e$$3yOWpUXW2VVa)od z>p`^+pVj_A@zW@Y`i!{aY4^jANB?T%K6_j~B_5BRG+ielsiu*C;`%)`AHOF#?c%R8 z^U(nAG=MvD0%ila(*W)?fIAJ~P6N2p0PZx{xYGdcNGTaPB9gRT*m&*C7(1jON;6Dd zOvOs|lnkC`n0hlzy&0z73{!80sW-#an_=qBFm*99%d@p*Mh#XQgTW2Tn##!v)2Uz} z7WR9Z+#YZwG3wr*${>J+Evv8C6$?tqL$Qllf8u&SyX_ zwi>)Y$qZIO^D4al|K_;FzV~|TTxG|s&`qf!BXrM}frJvO9ehSHu}TIy!_!D5JiABn z*k15R9~9%zO~*89=%!Q4@d!rgv$dB}U09psPqLX}jMrBjN_rChJa7_OIMJ+{G)7iU zL$m*bY{^mAl6AlJZrs$Zcu(X=Yl*1Q?63hQD{kf{<~)@lCp3^y|602rcwpm!2fnKQ zUHZ@mKJXy{p*3!tHzz(%QtGOoCt(rIvWAHgrLxJLCs8Q<7^*O7<5|esF`lTm8`c?lmm#(BH42P#vizoW+ z&#kVi{`?nzBmJv+6?&nSaKPSIa-}T&l zj;Lbk|0$m1sjq$x_sMf!tKPrh`Y`t0VKC`D#}|3#REjZ(0Z|;Y%vF`@`G~DtKCjFT z@i=o~-c4U#ug17w#pw$*IQae&=6B6?hZVOjL)hE@6tjT%HoOvoeg96tVd5dFDs}(FF85NO?ibzI9B%>mdQ4z_gh-6em zGAbe&6>Z6=h-6gcb-HhJ^ktB~ELEgyQvk=&q-s(k9Y4C^BaYQX9x4VNsm>(@B{d5g z=Ot1xXP)Z>1W;y!n7u$zA6q6HO$$sJzntiRChkvoC9sc*Sr%u*1t`sGb?$madLnZ1 zLV9C987u7?*|c;;su11CWp*y40+Z*?Z93{39PLkzN7~Du_73Fxr?<4$&kipQOgBE? z(m%8~npqi-crLlLVJy8Vo^JR`YdF6;F}OONs@re*`;z_Mrf2H{@sxGGKi1pR_?fyH z`i^1x_~X_W+&_n*W|Z^C*N!qI`)tir)mpbAD@qKJXerfeEi!?uwS1bj&a&27d#$sq zwU`OBtaX;P&a&27);h~tXIbkkYn@eVEl(KMYdywVkFnNcto0acJ;qv(vDRa(^%!eC z##)crYdywVlNx2#dWyctT07^Jo3(ZnT(j2B1ycaPv8L86z6p-g&VIG{4J^JyTj|Bm z^VU4tAjd$P6O9N6eK7=}ymF$11(Y-0?B)O4<(I^AeY+{mO z)v5UY%NE|XFkBihmpl3szFe`jek3v9Khp5=Cja1MIzBzr@7cViJ{vEEV)gH9?oE}3 zRxWN@`kQpR?XkvbYoII8-QMs(J=G=TES|SnpK}*o5zLlf(K@k2z{u>^GYYBxE^FLE zThKhDG~PD8NqGWUX$i`V+7VJwRw~L$MOmpRD-~s>qO4Sum5Q=bQC3RADU_}oWu+t# zL%(655*=VFTR8J?tQO9N>evcp#;9H)yDpw|Q6e&>E>fUo-*sz)gFhj4Z>WI%qp^+Y zNMw3rY<^~~zu=#WEe#d=*JkElyLn+@b92M+>P3YKYGXF6Z?7MXk47SO<+~eZMh8af z_gfcjyRyT&vEwByw#?^`n9sMW`TXGj9rNjkyhmj^SVN)LQjS6w`jVB@wl3J(*-g~m zhP*vdJJwE^sL{Fu*51lQ$vnN=J?_2%1Q?Q&w#BY0cqew%Q{i2>f_GBz!p6H8r(dne zkYeCn47`hhcQNoT2HwTMyBK&E1Mgzsoj7C^-o?N>aph>dOIGl%#yDmW(V-00Xr}Pa znOco$c+rq0>rXL>4!S|zyE{BqarW|UnasA!XXlnLk1zGE4h?PbEe{@Co_jnru{k3J zXj+9siGMmf5R_03t=LRg*XLq`%)ZZj@47-BT*OsB{%QjtKhORHOl*`cdW$5}c zbbT4Rz6@PohORF|*OwJtUuIJdLNCOfw(O#!4l$Q0o+~ZeUSTTNIQ)1)tX&J*>!~Jw zN-j)QU5LsB$WO&gxmhl3))fh|JYVW(9C2;t?QB!5c5?ol6p&^t57Uq@#un0pEu;r7 z)PpUg2VtlOTSyPKkREIyJ=j8eu!Tsxkj5WfvqnZUrE0dzXy9#(=7?*GcPIyl7`{*K z0BI1Mw7nm6puXY~QC}Qa$Ws*b*U!Z|F{v?37k$Ln+CjYz@Jf|_l!$VDG-#EJ&A4O5 z%a-t7-x2EVNNzfBbnBt;=JqY4k;!bJt1sMs@2fm@BeB*{M_+Pa&_6KQn)I)Z4-O~O z;r@kqba`u2N;^N=&Lm+HE;UK=-O!OdA4 zH)p}kS#Wb!{coLr_XCH3!@ym@{eZ0JEbAqdM$WjHRVTd4y6TpVo5rHx5QU;3TCoZh zN94kYT#zh-2I6If-UblL#Urg_fnDSoSlpyzoWu~(We4(h(Ivj<;#pn%rVCu`0vEf$ z#V&BM3ta317rVg4E^x7nK;AC8*F_+27lFK81oCzf$lGP-cAx$slG`1lgOcuW#5F=U zur&%v6&Gay$N*BBWIM1IxE8ntxC3}Aph&7@R6Gud>2atsC<&NcfEs!!L~R$K!9=JN zJgZPuas*C;sU6$BBztd8m-YwdJ4yqin+LsjTwmW93pBTLdTY2lkZ&36UPy-q!|^^} zA=p1X)!uTQ)z!Z#omj{R$A;svf!RWGJ~G}G?1)Zw)-|^__q3O~dt2IDdfKJ~bMfwY z7t27MN%tXQoqApGmfEnbPzYPLtz(_!yPU$SYgBbt_=Uj)hf0|!M(2XVFQl-huAU{; zDBa+K{RYq1^cyrLNDRJ|hN|aN%0h{jE;^J{3bklUou7ds#k~cHh4JzaM*$01T|fNc z51)DViqC%bif6w>^Hs$grmS7%KeMLGzdvfa*o|SpW5lU;N^SK6dd3-gogw9)0@hr(Zt4ea!0o z;SbB-8QVVoay3q=4fJ;MVP;*&DBejl`N}h+O0O_B7B)I8K4Ag2lfKj0=EEn0B;4%OtnI}TA^I1vCO|DMoD^x z1dEE=6X&zQ=OCY1-Z5qi3}dXlXqk}87pt9dD>vN<+y|(*y#^nXt=M!G$y4hyRh*i# z*GKtMgk?|q-|qJO=-Ywow@zFTSWexzF?q>)vAs0vc8^ZC7uPSD+IVSVDR}BkcYyyL;C~1B-vR!2Fb5sXL5ISB zvA7CJv&mV&3s#myVv%9XsHKFpCwR%0^G7=`TZxSLQa$nHbW84+e&dpNSiimHGuzJV z@@)!?=l^g^`3kkydyn5`9Y(h3b=@vC2RUjNl#seG&PkGHd|;GAiDm2k9~(~Z#^hqG zdwnsG_YQP~6UpZA^|x%?V(p&2W8<8To`s&N^s8sfA7nUmKjd1b-s7djC6!!%b;LD; zq%;J~Fe1scYSupMA!HmAfYnSR2+03L(pd-g1BZaaz+J%ofRG<4B_Bf8((aE*Tk4u* z_9o%slW0(rXi$@AP?Km-lW0)7-sio18Vza^4Qf(t8qpmc+e(eXWMT!>v?swLZ7P)W z9Y?_@ER=W-NvG4)kcFi|?6Daz^bY&Z^D%{kerpgS|UPcExt&avRZeM$hTxK5oa5mfMK!9NFmY z+Y%mM92{623x~%R2L>0%3DI_yuzCJ6HqQ~}W5M;2qjb0t!>aMijxt-L%+@G>9c8vg znXOS~Yn0gpG9+dw^{)}gq_Ac$jFtHoj*#(8D?Qc1CgSbzc=&!G0o#9vnHPPZZw^v0BQB1m2Y4)-d56`ZQ zoO8osefw}nB;p(HABit@2HwzV_yAPBW4Nm`+z}XVO~ziA+g^-Z-4X75Q%9sLoj$yK z`OwZ>YN)P#ZdZ6D(c4}AImHs-=7qYJhHchbVNb-m&6Akj^^K;sI_qr>O>U75NtkuF zBL{c8UN1t=iE^+OTqJu|1emsp6nwh8ZKeLy!J)Mvh=YR%Izq2D9E#Ok3%UBlD$Nxn zVN?lz-H0XXe`ke z3zJnB3~}hH*fF-r9ot-7kSawDuvZa%Voa<^Oh;VX=n+Nom`1Hd8jD6H7)vT%zK8;N z=}O}Xs-y=NA(BrY3oXg;A$ljOi41c_mA%v_k>^DU5Ir#u>gVZM9%hwC+R7ts<&n1X zNLzWNtvu3}L@#66c!O}Nq-X^7iS9#-R^TtzXj$-EM)#8)9fJk`XxE@` zbZE|Z3S&pzsBfTKY8J{~`V01w)EZ8}DTb^&w3V|9+!QOPjhk!>)=q>X*<11{)^!Q# z@~Xc`)nqSMCBjU!!7x)qRa2MPI^;gd3Y0K@`-WDOdmAlX6+xstG3ZA46i1PyU+5TEbL#p*=Q@+f znd_dbxGuX&s)3GD&UeaMu=#q;?A2iKk9X}lqSR4#%IQ&hh$%W1N(*8NDhtXAD$9K# zJ_Qvc=KHBpTJ99nfc!EI(mH4?S8`m*pMco5xj;}|JD(k-ALs6g%H7hZ0#_!@744gp zyVZthOo$GufDKVnAX=CLi!$u>Qj(n;yfmdKd&a$U^_{B+w%&A2Xk*jnOBUa^vUT~r zOP6d}+8Mg`m0QZ$EBf!T-h6rRo)6vGf5CHu+sf}vZvV(!#Mv-aTjt=w^0#ik{q{e) zp0260bll&-KGn{?`K6<1HO-)=a6GXQ*y=+wv{9~c8W$)bTu{(8Qt{{42y-36L_4aI z9%|^AQw3D`pQQbZ6xTsZBs(Ta&UvN02_Hm$c*s+$a`@-s8e{}cy`t>(|;^rIH zckF(2-TH;{AMM=0`1ZbQU+PZ3^xF47vU6t{s~h+}cKj9Y8NqALU%B-dQJvOBGAyw9 znDuFNa;b4!axGimJ1UM+{wL#?p z4{_h)z$X9#RT?Rp7Ii%bya0GEUE#n(8ofXomH`m$0?_bG0Gt}0}g zv`}fO;s2kmIXeutEmSDB6L)G<2ZKw>c9K9o6$7Z0`?G}cf~-=?RpLUPgnC(EnQZ&% zrvdbZlM8W4(G1(aGf8pgM#a5U+%1Jz0~tXlk-rNeV~6TmaTbHEFL zdFAOJVqUqzZjj=@Hp`n4+BPFc1{m}+4k^ca`XUHweq!VUrL#%C@36vCkp>Vfb>-s( zgiu(n7^M=(`3dCw1af`?IX{7%pFqw}Q297P<>LgEj}ufrPEh$cLFMCw9$X`h0FVJn zz;<9Sa4nz)cQcJQ0#Y}<$jdo@Ui`E6(eK75wt%T|0aN1wqh7$&xPYl~0aN1wip&D0 z#sy4`3;4uDC|JNJwt!D;0iW0cKCuPelO`H{Ko*z*)_{G$b$~8zb7Ga_nqBA|nSPQF zRup^p*QYOg_1gB=TsA#@*=x41z5250*u+JzSXp_+MHBYtgQ4{?Ib3OAX6NwOdVkQj zni$jusKMll&)Qx6V|iHhZ+XV~@j*80=;-d*cp}!tosXJkRa_*M< zg6bWLA=>Ov;;dK(Ax;0o_Ns8q5*(9b6g0<_6BkPm=Mo&V1jj7FF-vgF5~x>#W0v5U zB{*gYj#+|Zmf)BrIA#fsS<)EQOd|*k0kgn5upc-CNFmHIX#D(7!ZJ>=BR8?8Bmez7 zvXddqeN7CCbqGX1j!|W#G8CE?Qj;$1tJsumjn{0qv0FZ4g$r+5w$Xd}rV9(dK~!V# zWvRCWM-skNA^ozKr3=n}uzx8xR{ikaP%hH-KI<)A(cy49|4xa-Lze8e{>XY4vQ`^n z%?FQ)`$1W7bq%xzh56(=bE{O!Yvyll2ozd1?XAd?MwfDQVkh;`ELBbPs8K?klsS{V zWm4w&8OH;;VfY>-atbLZK}M^|5~(BpUonAMMZ|KX%t;Ki9IvQ!R=;(}M$<-kczJoa z{K@d*ebyhzDMw#>;DN9G$)Eg5Kf7PX-Dy2xJ>h-_<1Sba$ax$ssGzdXDIQ^@X)#dL z&cJ}00maLHvRu}Oc;w^2CxB;w=YSUg!^=+p5W~yb;boM+kX_h7KYIZ(++m-2*k>O0 znTLJmVV`;ULLQEtuNaX&LHiltIp77ryz=x9F|W+?N=#5}NzsX>D(h^F@D3aO@e4mB zoOj6OtaDl}q~(Iddsx`r^r^)@SECYI>p(=^YBsHtRym`h$|X`%bPZKZ4ZoOnixJ^d zXZ@zV`u~|9jtqD7v?lzKeqS^h^^GJ-p`Jk2A5z~OyqJ$AeO>-`Z*O;JS4&ezALsVP zy&+#$duMZVr^s{ajBo2HbdQKDXWfcD2n*E!AX2W_DcXn}BR5_+@gpG8Q-E@OHq!_K zL%=Ms4(taG0f&LRfcpXQIt?gAN}|5%K}(4tV;AuJA$CBnaz(1-4;(!2SFYc*>H1$ePd?w=GIDt9_S;5U z>aBmMv$oWKxTATzv}t;2y>#$(>+7#OSd!1?FL$(z7E5C-9e>auj!C-XI{vR#*8M0L zLjDdO5#>jgF_9-DP5?>D8K3YIbMwvlZ~ELHJ+|q;^1E(o_RN2C-u);)!)Iabvfd7F zk|12eM@%v*oCd1k@lgEOYaP7fj>U&(-^0y;@;9vA;vu$5tBbk*4Sy@3gUZ+Sog7?434y@0|W2B2r1fj2xTSEow6+%E8e(71EMXAue^IEtjmX)^)`S zsaU4Jt0&;?347b?X6m|Q6RB7>*xhZexbGRcaC0`CE9AoA$!)pDk&9Nd;o*s4`8Ld2 z?LPjmt~V&W@QWQvXS^tk5ELQ09HY?gl8q4Vs{0#VDd!iO;)&f~Z1fFJ^8|@sv7g{k zPbrmr)BX)Mq$@$e@x8OpiD zmX;hyIhpiZy|aJ($FqNImA?4Jsn33PN}g|(tY@qnYH-O5E=8;-tu^wGhT{TTTUX6hC3AmpPwF22{}%bz8hT6WE%&6~@|HB; z>4l8<@7xQ#rxOd{E35Lhg!?owXOiL!tNQ z$){`Sgj1$mP;A=(*TA{@EFJlRK-Hm#()*E0_!!B@Upqao^GP#hyv{+9Le z57}Sb9a0O!*WdpyQ&YbqO+e>;=^Qkj2d38Z0PDGhj!6|4H=iDaPl>RRGC|B!G3BqX zm#Ht`VI8)nieFuN;&C~^x#qVzCr}frI`!L9F_kLHZ*MK%X+3#h@$n~?zDn8?bNYGK z_*0CzksWEMjiJgu+0Yd4rVBPLmSWq|kpaI9UV5?}M7XC|{D{GYi0e|uu*eLaXFtst z5O|t-ype&`<0bS_ihoL+7AVU?h-HDoHV`5y87xAEIKD*aElCU%Fd#>MDg*RD>fv=#K$Hk8g3PkA*GoC_t#hNp7j`M%&h&HU6*Xd!Uwt5!#MS5I$GNBewtcTb?Fz2kd) z52)|@I`hM#bd#gCK`c_hHE@)Tr0dp0#n`C)U8WYc3t9^8qB6dCDMWr``yerPiyp3u zu2WNfagmzxd|pKbdG|%8l>D)WRfTnn^BZ06$B-8!qS36R2|RMNU&nExxtElgz&qlB zyc3LUSuel+H+%l#wf{0-e!<$lsc=sDqwZbDu2yvY5%*2j^DILNA^p2LPD3;eiPI1V zalMXe8-^+l+Z28nLOl$Hm%}}Wq42{{_+cpgFcf|m#2ALc;~Rm(ODXK2irkmv*Py~E zIUPh=n%r<2sEz^Iiki6<`FtyC=2q0qt*Dt>Q8TxqW^P5z+=`mHRVxe+(s&Gz@KCAC zw=Vh8GnHAFP(z7h)4_%<3_^q`@mfo$UY5@+101EjDwNHx2Q3~{9fhkZ;&VCE;o&%T zRW%QJKkBI$(M8T-l|$5?7@AA<^rYs7f+NXrOG`AF@6XQ5mHBLcJ{fIk2`5Lax{2xO z34byiXlx9GljX8M5$SDe>Ww7)P}D~vWAoAI!f2#Nr~me-@AG4o@5QBwiDjv-?a#)1 zmTts-%M;@(;FsiTJx^TFd!SvTRzIdJ1{DXyq*b+YaaJyFuUwqfh_iBWRxZxU#aX#H zD;H6OcIV~&-}v2r<9F2~B{Sh*Z4 zmt*B}tehkYLpUC!@faX0*GoU0T6qovi~q2pN(aHKr9)am?6eS=8Uj~CU~34KGK5MQ zLZu9$QilGY=FS7Yj^cRyTO>U_S-m~!$tq91+A5Z0NtSWL*v1B9gRv;4nPP)&urUM@ z2sMBqjSxyg2q{2-6o*g~YCt8M%oj^K`=-Xqx_4`txS+K7qJ-)`;}#8z9hfSutl`5JO$4U+mwyc$GPI)n4Z6t$UcO=gr%?2RO(H5L&+b z%e;MHomjx5MyF1!bZ|12sP=pxR%Mn+mCdm>=eL(!l6T1^$De-M>3SDF)c&sj8t#?- z&-6bn?P=Hn`?q?W`yN|rntXiE6$zr!f=q z78{t?2U~>=%KJmVGs)q3EdB7Acp@Vn8PjLtvJ5H_CY}f-O@xUj!o(9{;)yWvM3{IY zOgs@Lo(LW%!o(9{;)yWvM3{JDoQaQ}iOdY;11syT{K6v?9*Gwoq3{TWM<_f(;Smat zPWb|)GqP6gMywu}z$~g_UF_y!EeNM$K z&uMNfEvc_BDQz?jQ9n3Z*d&je3QHOrOG+C8U3Q(Gs(a0usM99sSw0Px5hyfRMp0Ns zBz~C>iydHNoZF494;`vh4QOT~G!xw@>ahX_jla{VjA)LO00kxgD)NtUAEc*&fz2Qm z1k*sL?kS?j{4F)p5hCU5w{J{|xC2{GAnWq@_r@I-JmxK7+oxIJ-);)3ss@pGA>d~C5Wc#tVuGsO3-_0O!SK?T+B^iA}fPRMSr z6yBIyTANqdo;|TFIw`Mk(yq~o6?xx^Hl?RGMPm&OdUi!_Bt2SF$X{9{r?a#?zo4ok zHQG?}Xi0ANdxeAqKT+5Q|dRcY-5gV41;PP9rEFRQN1gPP?uc9M!?v zde?n9bf0`B@R!nyl__LL=xPKf#z~@R+6lKO?oiyZxHE7U;I6>kfV&6x1a32K3ohuY zu`>y}%0EHXonjrxM(mQ1pC96gDc|ao6#^oM=RG>1qk}c9X=!c8cjtD-O51DlcH5zR za<)EVM*E~0McLoWiB{`tE{~3nH1t;QvS&$zokdkGZN4vUo=uw<`fV=bNm@>9xNRMGJA6Q4!h-7x0jZ6=60X& zI-z(%d%K?96e-zrm+Ibz$oS~x{kv30bH0~dG-Fb`Ofg*B9|A3lB78lG>YVm1!d27u zzC7vU8#6zarxsR6 z3#tm!wVqng&|6hLr70S1+MzPNehSAVM+$DvtQ?<{U0i{ku~t*`Y`w_g@k|VA1ygZi z)$4Nw(Je?T`X@8RcS=izy89nLa%Dy%QzlXWNPqiO&>i9?qbx5^7u1v$x1@Jsx4nl55UDZ@_I zK(3mcOncm+w(|#F3qw{e#>@JK^ig ztEH{Vg0_-@=@VHY8BzDSHr{qa8&M{D`Tn{l+VZYwX~BfluA;I?Q)+j2V($3z?8=7Z z^zQ1$33~R!#g#Oz4|R7_C?|7Vd0~E4OWSh;{d^{)n10R;`dQYvjo#0)`>5ztu#|N5 z&-;{q#+*?XR7*#9ceA2;N|T;_Z+)5cbazv3tfv_Q?vLA5v}F!7a|fShMyQE2fIn`L zk3Z+RTu57t)xi<}-%?hg6N8j>5JzOrX9CLl{||LQMFU;+(FSqj{;DbUkx2cNs%rmU z-P+O7+5%Ob8f}_V?vn%m-aNClWyXw_)|pP%EIf_=VJtp4Fm9eVXJGhHD%KBiJWr=> zjA+5pIm6A}i1e8%3L^+p-jwd#j8;;oU%87%5w*~Z4mBZUC!b%8307}A>kE_OY;AZ2N;10nZgZl>V zd|V*Q4(={gMHzLY@(lEn!Yvs4f(tZ-&t*dp`4B`t1d$Ix@3Qu$jTp|mz6ax zCAXrqu1oqZtf#7b&EtrXclr1rTiJ;`=*v8U7lY>y4jnVJjAIbQBaTc%h4_iuUfL}y z&SA4?w=CK%i+0PR-Lh!6EZQxLcFUsOvS_y~+AWKA%c9+~XtyldEsJ)`inrU?nFQ^Y zMNhLL-*MRL_I6p6AfL7>{23Oe6Y$uxQO~w_PoJKdF)k}HAvqzXSWm63zOP})l7>67 z@7naWbH@2NHI93qWqA$~XxOjYb3Bu}0yQd4| zJ6;f0L%jW6T0SZVVU5IF>cT<;Vbz2!b7>itLA)4gXS#T3EP}8);_dC?VI~xW4W?y@ zUJw@5%hd(;7|wWk6H?vj-XlWTc`od&fw1xVQe9;y67N4l!j`HP`gOwI9tbPYD|DY- zOV~RDVcBL6_H90uuy+T-V)`d)l}r2HV3>E9K1e6}ZR)M@+m!onIHA`CaVUY_0c>OMdQOr;014Lrrb3B6`}x3u#1hPyIh+G^y}$H1eo*ky z4HG9eRAfZ5l9RI{8IQJ~J$KI89hoJQr%bP|o<5~3(Dg;A*Lm@J$#)x(WE}4eGhYn$ zbPnT@)f08NF5FyPA8rNiINVvdi*SSIiUsozS1)%A*x+Hq=QTH!$7@yI(A+V1Lq}$D zSG-o49cR;CoDu7-&{Zf(3Yc{MWcZv)K1f@UTA&+A0o}-Vimhb+6Af*AW-3~IN9_w~ z<3gx?A=JJQYF`MoFNE3`LhTEo0fkWe!Z@`rWKLD+=2TL`c;RkNiA=+YuqUTj38|BU z6a^|w27;!Cc(}#S?7io^?WiuAdAc*U0D@;NCtj_4$ePgnV@`=PtG;axe7v z|EvN}t3URYBy zVXB?nl~|HrQI&jRQf9Qaq-}@9jw{9&C7+a7`9xts@-a3><7+y(1hv9^dI~vDKJxqX z8R6@}4!>e&B1jG`<1leOotC+V^tpZPj{c*!i*W<^fRHjt?*qxtdV$2U6}A)KdhRtWiGAoT|X>F+LUqYdKunIv9U zXll&+5MC-LMAYa`U*dM(A+CbDxXn&{-Qd{EwT>g=S-6XEaw4Ma)b7jO@y`kWt$Z!x zd{Dj~x|DaX(Z%uamJ~gGFx@dfLK??WrMcnVLn%7fR)ibZEYF>9$RrkEA zlCH*Rw6UwC)V~WZFvU{pH~Kp=Q<2G)Ki`UDK_E|Kyvk>&EIyaFWv!c0aYVbGv18Th z{v#zl%QcaQWDaw**bgWB(cqDi#{CGGPXA84wZ(bZOvGd?@HG_Sg>G`+Z~q@<^N zN|`J?)$AMnA+j8M^XlooeTkSTOqcgb19vf_@o_f|97%)hr$P49Ap2>M{WQpa8e~5W z+)V>_<=8`6;GGuO%FAhLac-0eG-@(L2%fV&6x1a32K3ogLiu`>xU*FRrU z);l&(2{D!y9Cpg?xMet>l*&Wx`K@lw$UlCE$=PaRKcM&AZFa}}+_K!>ipG{HjpVohsWdXDb=tzLXlX`zd2!CFw&~SH)rG~?W!0s+RTo#3##$<)m0hj*Wsx+i z(+Vnt2G!7+`-9ghH2<=p_ElniD7?{d7Y(EQpD{r9f|EYoqB2o6_}hO-oMcv!kTG;f zkO3ZKfCm}iK?Zn`0UpTtw{eOnVuhTsoEKo0 zFD6tByvsV3vemT#ozXO=b7TfA~L?Y@lhT&3D|NS3RL?%s{SYFfTJ z-tr={v*87<3pW?nhg*R=4kz~Y7vTn5zJr#J^CEwrU*Ra7qqe+olzi9nFB=k4swrc| zQd+2>q#|d0YgPV~j_Tq`S&X~NXnuKq>Ip^7m3gr)cCKQnU^KTrJFl>=y(lXsKYLtO zjGbBQN}@S6rJQ#s6GP-Vz)Z(~CX1P@n5+9{>tdwkTfZg`wCYf9AoibFfFicFRj?ad zEbm7%FaNtP*ZZ~9i~L_lzwb@Imtq&TgZ|MUR5!fIUzskmPmz~}oFgbvj*}m|>7;Ht zxtqCLH*>dc=5F20-MX2(b<=j;%-y;{0g&f1JlEmmt8*rKbi2A{`gqk0UNy(@su{d$ zrq5*`+-C5q8N6x+ubRQDX7H*RylN&>84h5q%SX=S;=`N!?;)ft!N*?ku@`*o z1s{9C$KE(Tj-5$>kG-^M?+ASCh;KcGy_w8N^7Cb}xL6`M`?H7~H;~R;MOItry$kCn zmy~wa7fz|Go*b>86pc=*k4~OYl;W3KQL8syh*TsB0VSjD0Y>BD^bFrPlmrw{Y#!~A$3 zj-5%+hxzm&MT%Z?$m$>Y!tH4JRMQ?YB>b&aC^2Qx%0+PZ?eLmN5NNPrJ z_4wB6fS{Pv2nTaPP;|CWQDpDC$+5ybp(wTO#hH1vnXwk1o>Z6l^hD-kbkr8+B{fbD z%9ff53Hqn>UMNB70_nye&a=bfB9)ttP>rL(03K9F)b}%;x!Vw3ss2B>3}3i8E2+K$Df)%|v-?ImHdsmib^H zabhtehX1kvWT+8;RivtlU0HQnYX4?kn5xqrJ>@TdKKXpfYY8h_-!u*6RV%w#`t$t3 zwDJ6d`6lcCL8VYmPEA(D-&`KLBvlvoZ%*w;r7QVOq;7MD*DauELEYp8BjF_2g+onY zc1RAfnnXP@wf|k6N@lyAa{kGGc6sed-QJ4V4HR+T3#4wmA!*}v3-Wh$)1B6`bVjd^ zS1x#AmtTkXnpt2LlfgK6fV88(PKL>LBw|+fKOkYmi44R+fA8WXqRfhHni9(tIOu~x?kBUcSk^?-W2S7qlPs9i_p4&|gO-&Oe%Z3vrMabse95r`>bdn* zKc2VQtkC@f@#5vjbX)%e=I}xjarvoM>}O9ia`NLq`GcH;kM3fjJ;YeRoHlXcs@|zb zESxxT;Sp1NS1p{Vi--QlQ$Jrt`CH6QXkFxV>QKP&rsmuHJ(&ZoZ|Ldx&bk5Z}xBm^^qKS4o%(YWUfv3sP;{=?@=W&`WCR+wdOb9;a zxcEf+4-Zh*!IqV?x26Aup8B!fER)u@v8-5=>FMh4(DzHTn^3>lmeAWt&$ z)q(;s)+Sl@AkD#R_D|k=mwtcu3CBEofBl8m^zRqcbIK2kpX&eW`!zS~ovE?lmQoe^ zJySq61XtoX$QfS|w&4D_;-im04*E*%ZE|=wIoB*c?9s;&Pe<;j3|%o{Z}K%oPRE~w z>2kd}${dC0l84w+2@W4?8fDa{z<`8TO%bWa`PSm|Wn!csWFO|(VjP+vfl!?UWUvHe zumtEw0y0VG-?NvgVl`%c_<=Pp%U#$BH8&%K%Z;lcg5 z0c;A^L=LWT+C`SR?4kw(j+B5SB|tRe398-oPai(aAL+9N_BU&tcxYxK9!e%WLPI;{^sas700t z#us|lN*SPxWGz4D(;p;zOlp$7tXlYYbq&hrt1?vrjIlcVeGse6dylC`3|OhkfmN!)dzV2futrq^YgHAHDY*9zZ(0Lv zP_@8D=5lXCXX}9zR0D7#+LZq=U1|chs0qMU2isWn@fN$YHv`*|yxxKUw0dtM0k;7s zt4Y8v)edBi=lz@gtU7`0rUUHd#L$1S-&Hqo2M4FA9@fxKS5ts9R4;I*nhKnycJN+j zfz34FY&9LYlbYfE6T|G8z`1G`aGu)Hdrj@^;CwY3{{poWa2GYldsXeK<^mV0dBEM& z&faFVNX-W>Rttc;vljOiwTIdjxI`@k?x}VIE(N{}$yfy3ODzWOt#^#Ko1djStrdwVZ%F5W)C#fJZsFmT!m8sdZ|l_pCZv9S&Tt zjsPCRx0+{|ajXV@MXdoIr;hZVhP)mH{Hj_D{F+(^JOTKWI#C@B{JL5XJV_nnJ*iGs z#{y4LUjd$~j$;M+Y3g|3>FTS%Z>X;U&rm0LPhbdtBJeErb>Ifz#GVq(~ z6z{L^Rj(3^<(ut;HBz3;7`=|fj?E}dk?CgIrwvR z0shO>h2ADO*+sxB)DM8aP(Sqk!l%=Vfmf*?0k2k<0Dq}|?EP8&N?i*4wfYJ0H^2wf zM)gzRZ`IF$*QlR+_p9Hj%YfIa%YoOaD}dLlUwHR1!@ClAqq+)sle*fw7jFJb;2+el zfHwp0QMagH18-Ho0p6xI0&iEp_3l=8sB3_KRKElMNnPvRrS4SM0q;`R1MgNhcy}^; zyb*Y>gOq^(e)W6rPwD~n2jHL8&A`8?Tf9H2P3l(QgX%WmL+WFRMqrKOi|g2HdRv3Vc;P?)@H~{RHrz>Tkf; z)sx;$>J9Z2@L%d_;J+PwQ$6F|sNPb~0{^3)1HP^P?%kl?QO^V4RsR6Kr(W=`M=E&{ zxJA7L{6M`7{7}8(U8g>B@MEo)F;fV*(%Z?*nb-;LTk{YEvb zSfp;d-!hg4>Bh3M9aqfSsQ2d|(?~#l44-W*o4wIi&0e&$qOWX2*@n5xHUo~*=dyU|#%Vf%gdhzfs*jB0#H=0n>s2T7o=ii5+j$ zCoLp1ZWXa238;uw#HeTAEXocy?!0*Ej?^^P*Cdm)2F8^}iZu;PtwV^-cy7ZZ2aGkr z1M}#+ zBx@N+W7H2)^Bd;R4<5CNj~uwkuWf!$k34e!xk&it zcg`X=T|R#nzaBly#q>eR5dToGpBo_*IPy0%{qSe;C+<8M_h@+Xfn5D$!ygW0H6m6J zK6)rkLW@Y0f#)&#Z`9xXiK7M&4UFe9tWSs#|3ChGXqv&IhlTb8X+}#TVe!TqmMHiq zUfj0N267unKHzbYN4%mm@j#Nn+-A*pKLW%jF$U6&4`R70fO6x<&z}!U^~{%Y@V4pB z9$t-9ZKGr?Q6xKgG>a5NUSw8J=lssj`MR@{N)fAE_XG&gGt0%3{DRs@>vZ-AF85F} zb)#4w4!r8b9x`)6i_CWqWg4D z4?lRVg!%DM+&P_uAw`+eWs6)~ndKOCy7>u7$V#SchJ=3;7I%zPB`>98L$--k#1*FVX7=#QGb@4X{+82u;DM}M-tp-9Uken^k( zKjpt6vzssB$1HZ6AA3plGq)S@BlIIb2;V5FMnwOFf9XGR8k&c99WA?s83@0j;lnc- z`^oTlqy6W-74IEpnC|Dj?67nM_6(*a#S37$qF-MgyVnQf5B2$Fc+U&YGLIbidB5TR zO~{`7M$3~{c$15s_FiXp@rC@D&;QSU%viST=iTc)={+MggVreTqyGlCne)2er@g25 zi1(Ub4y`OL{F!k$j{k$NC?kQ|%L>*pfAMnS_c0@m`oR0w$aKu0`T1`<^4X|aeCEJy zbA`HZ1(*N+nX}rC1kmey{Ak_--rq)IJ>y^#JmyYHf0Czna$V2Nao{&dr>Nm3V!i1- zhc4$+e{ouit_lk4MH@yJwP?El{PhUT{|ZpEK^m%`=U8+$*67rX*}kovxXhVo1MNl*BhqkZ|z zKfxVpID(D{pFvV^{B!8DIR6=53|Q;lkM|VmCg8Bc;|%^cm>*PUNV$GGzXT~6EEc*n zEVnVr|J<#MMn?^fzQHKM22?(0kqWYvCjO_kBjw zE$Bs+_cPo*;P{>1ZQf73Z!*R%gFf8lJuaz6|Bc3x$>k;7kg`Xn^=^QIIVyl&PI-^T zF=}MI?fD=5{C542vKb)~b@V!KS0*DO`LgDSz+wM_)lS0wG)_A#QSgu7KYmMs>-5gh zA0fh#ABQu4Lmz;P-$AdwCiGb-H@fFBesQ`!{IOuiC;jNp z7XtZ>oIh*(4vo)SJvFi<8SUgRP-KTUe9VFxZ}Ra5jjI1v@LKrY-+0e|NnG66Gmjw> z=3sfB`kqfxy5oFO@@J*8z6|S^MlHWh4gnVp!X6~#a>u!aXJ6_4Si-$?n6usCeA1sX zUe1B9pW&TMt6$9Ml(*)|=)cih;8Wl8$JEcK4#*9R)dxn;{nJBzdjCoByt`$7`sMt_ z#`7<#JUH$!jzMdkM|<7so%=h@(`opGKu>owkEhY`15{9S=amj ze|cpF`8%m=uu%_DMk3 zwsY3~dCKOE2HrD}cYg>DJ+M7AVI&THp7K9yn$KNk7hiwkznNHM)N<{>H8~zQ=Dn7= zWUX-XQDfBdklMy^B-dYh6(`go1`!7Xup$FMAh{WA&{*TRRd!G7d_`MY#`3-c~SCcj~% zRKLBcKP}!+$r4=s`KQH?KS!T%q4znK z&qC?9#UE*iPn!!4Z>*6cZTQnK{=fe*^>#1t$$b5@yd(Ta_~#9uC5^=W?D+Iq zOW3aXtG6rGmlLVt%gOeWa@`&t^-1YJ=d*mu#cDc1P9a#vSNJ6IN$1j7LuV4!irugr z%GHI{))cIPQ?UPCi0$+u?C*-P!0p2zY9B0CE3s7l0XD!tQa{JG_6AI`R$|+@2{WpP zuxLCQOU6gBef=xfu~;eo2Lr8lbc*`6PSw-Y6&#GTyLyJz;D@W1^lH6YeW2Ituc{CA z27L~dyFlNnt-f8~jiuAQdJ{|BAJQ+dsrgH~U(aWCN=P5duIXXD#$fBGk2JNWNuOg{ zOp89(w3$izd#1y5=4Z z|1g)BOE|ygQu7o2B5PSL(=VGV%oX|-bEWx}-fT9Sjrt99jk!ku%Uo-&)BiR%m|Ivk zb(^_OZ!ve6`}GHAlX=h>^N4xOB$y|;LgpFstVuS{n-@)r*=$}l>E?B=O!FpJmido) z-(;JQxe8eM=9xmPZL%3}Q*4TXliYdZ8pue)pnTKcCzg@JKJ76&Fo_5 z*g0mAoyQuz#df}(Z+5r4*j>yXcA;Hpme@shk=fJkZg)3JZJ*uO^x5V1V6)5~Y7aO2 z+g0{RbFe+m9%okAui6vLO8a$tvRP$MwWpgS?V0vWv(9d?8_dymi``<@+pTu1IYxGq zGsh~Ua~$4Gb9gh|;mtITC~pIMCUMCEigsdja)p_lbzy}+g{u%tzFyKy<;n!BrW0od zS2pvynfPaM<$_T=ViP!O$g83_nb2yjAR{RLY&nm7&Y{geI ziq>!?V=I0nW9cZh7Au~0jE^+z!`HKl;25q9#>la(L--1|;b~ZgA5W^Ua^*12zJ~uq zu6%65zs?GTlenVTgrCf+gHyOlun9kvS@3CGW!QwD&iMQhm%$SIr}V|o7@tXu&l~8A z8yThJ+$b$%ls-gXJj|8p#%iV;tC?=BCSk|>4*l{j*1NKg?*GvvTUlihVJTgTDr5}j z0CRPObEpb*kt)^Wb%~1UQq75UI;PuMUDcsG*;RHjqrIEaz6<_cHNB%3GV<#g`G*m* zLa!iXrC!PI=!ZiKDjY3ng%+$QFe-cui1ovgO6@ilc6BDlg}OcF4YAsxtp3mO@I&SCxCy`PqPp1Gy3nU zS3j>`Ah(zFD}-;>n^lv3RdWE1eob%1#I&E)g2}QfPFbT3`{SD=6H+0eL4=PpY<^~< zhV4mAktxRpxdIF1G@(jBsFI38mD*H>nPeuZETK)n$!0RJ%S<88RI@v|?P2yHpCx9A z%7I$#r}EAIX1OXb2b)#ou*Mt%Jk}hqO3YWyiK@(e-JGn-%_-(o(q3pTR1u+NDkii{ zB|*zBRp~;@@I%W~Hni+Y;#_5}Ql;iJ}QOdZ2OFvX1RK zbDc_n(%nGJ8x2da%uR-4WXuaHtMn02lJ5M_->wDk| zlgX{ib`gh*IK8%4O}10*R5j7=V0TcJcAA~0s)T2#nZh%G@C+b40|?Im!ZU#I3{?%! z*h{t9z3twr!R}-C!N0HF7yoj*TurhE+k;iR@DkMlFIf#-V~->b97VOjQNF60?bqzr z@Sk8$!2fmob^IsUlklHxPsV?$Jr)0H_B2&%Pq(M5I^jCJ7hDGj*HN>C>!=-t>%a{d zc+jyV)-%Z_(CyI4H2fmDOoEcPLi>aRwKxtG=6NT6;XPp}a}R#uKq*k{Y50ZrgdOi` zal9w&cu$MtJ*kfOq&wb|=6Fx0<2@OU_f$IGljV3%x#K-`j`!5Va~8pMgx};iepBx_ zO`GE}&G49IJl&70*>ReB$7z}!r)hMYCf{+IJjZDY9H)smPSfBxO`+p7d5+UGJ5E#T zIL!pdX)Ju^Ncfy^7wfpo1jk)uhuz}{7mi{bN15O_ie;_Q34{w@sdaoMTa@zA3tjcL|+$F4TXT3}d>ty}}l+`gU ztctlG_#jsbJm*pTe`O6z3!LU9@_Cyp>^P0=M;JAWyTw#La3KLALX@!or!3idalnR_`c7nSI53ulnK0<^C)H)szay%g0 z@qlc{1CkvN$aOqmB0S&};v?0<6)rMA01784cbp*1Zg@W-L^wg%@ql#41F{?s2s<87 z>3Bez;{o-K2NXCS(CDat80vqMYIbzL)Y1JsNB0XH-LHq@{|S06v_1r_zf0wryP^2? zj^YDm*hi!sQP-Qk`Ljm0vS({C8 z9K}y{6u-`9*(_*~(EVmd@k<@WuXhx`!BPB1NAa5-#czh(oL0n;rEJLH(QXPp}i#wG?h4$^?gm_J7XyXjkF$H& zJ>V!yEK9{5^{;T$zsXVm3P=5$?0$AXX!k+(AeCqjv4^Pfjt3+;9+2dCK!xK0HI4@q zIUZ2sctDZk0X2>X6geJH<9I-k;{nBv2SkVQfFIi*!>xa6f2!D35gyP<*I6|=At^zQ z4%N(CQ`8}h;~`Ok;i4r-4rC?RCq@^QgsP5;k63fi5$a9{?Mh>LXyQR=_r$1e~N(fgL&<*r^NFtv_&`E?Kw!$aT8%X!6nZ#~-|Qjc#^t zmF8fPgBB>KLCC=`A>LEoI^RLR1@ICgZ6>WDkaq>9Iv90OR$^&dM_{^x84hMTnB`!$ zgEQeZ`M)f?a4BukDuXM7`gr=A2 zTHP!(T+e}eFJ;HN!^n?3c}xF3A-J=0!i7%_?hAQW4mj5bLftp8-}W`o>!+BTo8WoB zd#+8U|38%2r8fn^eR6PL>f+^@ub2(c&5cm9r_5VOiTSo3X==V*X4l$p*z@f#?C_veddh^~P$>z9 zQIwF7$S4Z2!+JO&C1D&-9vLHz;FS&E8{QPg(#n-r%vh4JYs0?}v-V+F*zd!ahsAPU z>KTuBPWasL|XO_7%I?zG`2y|Fo~$H|)RczwMj$E&HB*+rDexVTX2;{Lk%*M}3m_!o50B z9|@U*6N`Ciof2BxBtMkgLD-$c!fsA3Crm722IHkC^G3-EKs`b~ z51mgK<05%h5a(R{;CFKCV65c&(20bU3`==TXdl9arucauLcPS|X)y2IL)|V+hose{ z-ZOBo;{0*q*YT+kR3r4qAt|-IN$5K`>PEO9?@W1@khFjwWs83qYmll% zrWSq8dUXss8qv@kk0kvy* zO*|}N{bIe>b&+KgGn+0YUv#VKXb~B62 zVzWCk=@PT2S!()_NcT4Tn0?JMv!B`D9AFMK2btx_riYkA*@0+>>!m^87usLy#Q(C#w&^+6B0ho?u?s7? zSHQo!bT?$T^RZtEIM5r0N*e@2$uW%L|e%6sANdk@xx6n7&ft%%o%|L;U&D)r$# z21^({$H9E!>Ekt_ES>O2sE8b#6(z@dbQ0Za8rp>UXa<%t|6i_;f?h3Fduo}bFIG$S zI(OeoAMNgYqYX7`SG1uM%NBV=7W-OjSJkz~%aXWMVuZ`<$M^T=U$a;Ra?nR?dlH?l^50{ZM`X6NGxFI8n| z*vrw8SF&48wVh#iv^&`|(9xV@zh%E;&$Zttheb%5Bjsqn7UPiuw#kJQ&7|<<)Dd;0 zCbgr~#UyY57+R~H(N^th7cpx&01ebSd$c{)enq}tFstCpg*}TtNTLsPf*iz`iFV~H z=qlJD0V#j5PiCljJh%1=6;8--_ml)SB;)^a30dx*A%MQ@mp z8KmYev5?DB{E`yVgZxBuc!kQ4|6O|iACf*Nc*=c9C=h)K02x#r@^C-^vz~p>gQ|A*f)W85XoOK6Y0=iL7wto*uilQrZ|}4V5)=Zq^B0t zgO`#NlqctABVi(0d5&Ldo^s0hsJJ$Vd1oIp$KwRwT#gGITqe-=IsZWpE^#4`I{$&r z|A_PN=HR|AL?mR5#!S*a>}uhEw;bo*&Cu7aGT&3*&}HaxMc;Y7o2lMlWv0sZ9@KFG zBTk{2Tgg5lG3FS>d}X*m9gH66R&^#?pI6agu|=NK=_$1rmv)*rL+m=C{Z0K{ zbW`%pAjjznBE*tIX%`?T+=%4xd-Vt6m+J~$sjGCgu3>glCu!l^|N^dtbUHVXvV12VJ~X@DfJ-zxAeF5cl3AT zspI9lnrT`|GiFB_{i9KdQ7M9?ABFymMyE!nNxW+kJ*z0Oh50BrN7`!s=gbT=*mIea zEwBsGVC;`J`Y2{+>+LaM+Skx9oQyU>@GXHHvUrOc{PB5zDzjQ26BdxyZd|fA=Muv9 Qg*sdCOSBq--N{P*KZNstwg3PC literal 0 HcmV?d00001 diff --git a/static/fonts/ubiquity-nova-standard.woff b/static/fonts/ubiquity-nova-standard.woff new file mode 100644 index 0000000000000000000000000000000000000000..0c2691e4352e99afb2390b0cee6734d71d5aa035 GIT binary patch literal 77756 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 EMtAR8XaE2J literal 0 HcmV?d00001 diff --git a/static/index.html b/static/index.html index 6fefad1c..d839f159 100644 --- a/static/index.html +++ b/static/index.html @@ -1,4 +1,4 @@ - + diff --git a/static/keygen.html b/static/keygen.html index 95a66745..331f075d 100644 --- a/static/keygen.html +++ b/static/keygen.html @@ -1,4 +1,4 @@ - + Key Generator diff --git a/static/main.ts b/static/main.ts new file mode 100644 index 00000000..b19bfa7c --- /dev/null +++ b/static/main.ts @@ -0,0 +1,10 @@ +export async function mainModule() { + console.log(`Hello from mainModule`); +} +mainModule() + .then(() => { + console.log("mainModule loaded"); + }) + .catch((error) => { + console.error(error); + }); diff --git a/static/onboarding.html b/static/onboarding.html index 23953483..f4e32aba 100644 --- a/static/onboarding.html +++ b/static/onboarding.html @@ -1,4 +1,4 @@ - + Onboarding diff --git a/static/scripts/audit-report/audit.ts b/static/scripts/audit-report/audit.ts index d5859dab..a7305f35 100644 --- a/static/scripts/audit-report/audit.ts +++ b/static/scripts/audit-report/audit.ts @@ -1,32 +1,46 @@ -import { ethers } from "ethers"; -import { Octokit } from "@octokit/rest"; import { throttling } from "@octokit/plugin-throttling"; +import { Octokit } from "@octokit/rest"; import axios from "axios"; +import { ethers } from "ethers"; import GoDB from "godb"; import { permit2Abi } from "../rewards/abis"; -import { ObserverKeys, ElemInterface, QuickImport, StandardInterface, TxData, GoDBSchema, GitHubUrlParts, ChainScanResult, SavedData } from "./types"; -import { Chain, ChainScan, DatabaseName, NULL_HASH, NULL_ID } from "./constants"; +import { Chain, ChainScan, DATABASE_NAME, NULL_HASH, NULL_ID } from "./constants"; import { + RateLimitOptions, getCurrency, getGitHubUrlPartsArray, - getRandomAPIKey, getOptimalRPC, + getRandomAPIKey, isValidUrl, parseRepoUrl, populateTable, primaryRateLimitHandler, - RateLimitOptions, secondaryRateLimitHandler, } from "./helpers"; +import { + ChainScanResult, + ElemInterface, + EtherInterface, + GitHubUrlParts, + GitInterface, + GoDBSchema, + ObserverKeys, + QuickImport, + SavedData, + StandardInterface, + TxData, +} from "./types"; import { getTxInfo } from "./utils/getTransaction"; const rateOctokit = Octokit.plugin(throttling); +let octokit: Octokit; + let BOT_WALLET_ADDRESS = ""; let REPOSITORY_URL = ""; let GITHUB_PAT = ""; -let repoArray: string[] = []; +const repoArray: string[] = []; const urlRegex = /\((.*?)\)/; const botNodeId = "BOT_kgDOBr8EgA"; @@ -40,7 +54,11 @@ let isCache = true; let isComment = true; let commentPageNumber = 1; -const issueList: any[] = []; + +type ListForRepoDataItem = Awaited>["data"][0]; +type ListCommentsDataItem = Awaited>["data"][0]; + +const issueList: ListForRepoDataItem[] = []; const GIT_INTERVAL = 100; let isGit = true; @@ -64,7 +82,7 @@ let etherHash = NULL_HASH; let lastGitID: number | boolean = false; let lastEtherHash: string | boolean = false; -const getDataSchema = (storeHash: string) => { +function getDataSchema(storeHash: string) { const schema: GoDBSchema = { [NULL_HASH]: { id: { @@ -101,28 +119,32 @@ const getDataSchema = (storeHash: string) => { }; return schema; -}; +} -const parseAndAddUrls = (input: string): void => { - const urls = input.split(",").map(url => url.trim()); +function parseAndAddUrls(input: string): void { + const urls = input.split(",").map((url) => url.trim()); repoArray.push(...urls); -}; +} -const updateDB = async (storeHash: string) => { +async function updateDB(storeHash: string) { const schema = getDataSchema(storeHash); - const cacheDB = new GoDB(DatabaseName, schema); + const cacheDB = new GoDB(DATABASE_NAME, schema); const metaTable = cacheDB.table(NULL_HASH); const storeTable = cacheDB.table(storeHash); const metaData = { - id: storeHash as any, + // unknown as number because the only time it receives a string is initiating the db + // and it is always a number after that according to the schema definition + // [NULL_HASH]: id: storeHash + // [STORE_HASH]: id: storeHash + id: storeHash as unknown as number, hash: lastEtherHash !== etherHash ? (lastEtherHash as string) : (etherHash as string), issue: lastGitID !== gitID ? (lastGitID as number) : (gitID as number), }; await metaTable.put(metaData); if (elemList.length > 0) { - for (let elem of elemList) { + for (const elem of elemList) { const { id, tx, amount, title, bounty_hunter, network, owner, repo } = elem; await storeTable.put({ id, @@ -136,98 +158,97 @@ const updateDB = async (storeHash: string) => { }); } } - await cacheDB.close(); - return; -}; + return cacheDB.close(); +} -const readDB = async (storeHash: string) => { +async function readDB(storeHash: string) { const schema = getDataSchema(storeHash); - const cacheDB = new GoDB(DatabaseName, schema); + const cacheDB = new GoDB(DATABASE_NAME, schema); const storeTable = cacheDB.table(storeHash); const tableData = await storeTable.getAll(); - await cacheDB.close(); + cacheDB.close(); return tableData; -}; +} -const readMeta = async (storeHash: string) => { +async function readMeta(storeHash: string) { const schema = getDataSchema(storeHash); - const cacheDB = new GoDB(DatabaseName, schema); + const cacheDB = new GoDB(DATABASE_NAME, schema); const metaTable = cacheDB.table(NULL_HASH); const metaData = await metaTable.get({ id: storeHash }); - await cacheDB.close(); + cacheDB.close(); return metaData; -}; +} -const toggleLoader = (type: "none" | "block") => { +function toggleLoader(type: "none" | "block") { getReportElem.disabled = type === "block" ? true : false; reportLoader.style.display = type; -}; +} class QueueObserver { - private readonly queueObject: { + private readonly _queueObject: { isRPC: boolean; isComment: boolean; isGit: boolean; isEther: boolean; }; - private isException; + private _isException; constructor() { - this.queueObject = { + this._queueObject = { isRPC: false, isComment: false, isGit: false, isEther: false, }; - this.isException = false; + this._isException = false; } - private databaseCallback() { + private _databaseCallback() { const storeHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(`${REPOSITORY_URL}_${BOT_WALLET_ADDRESS}`)); - updateDB(storeHash); + updateDB(storeHash).catch((error) => console.error(error)); } - private callback() { + private _callback() { toggleLoader("none"); - if (!this.isException) { - this.databaseCallback(); + if (!this._isException) { + this._databaseCallback(); } } mutate(key: ObserverKeys, value: boolean) { - this.queueObject[key] = value; - const { isRPC: _isRPC, isComment: _isComment, isGit: _isGit, isEther: _isEther } = this.queueObject; - const isUpdateFinished = _isRPC && _isComment && _isGit && _isEther; + this._queueObject[key] = value; + const { isRPC, isComment, isGit, isEther } = this._queueObject; + const isUpdateFinished = isRPC && isComment && isGit && isEther; if (isUpdateFinished) { - this.callback(); + this._callback(); } } clearQueue() { - this.queueObject.isComment = false; - this.queueObject.isEther = false; - this.queueObject.isGit = false; - this.queueObject.isRPC = false; + this._queueObject.isComment = false; + this._queueObject.isEther = false; + this._queueObject.isGit = false; + this._queueObject.isRPC = false; } raise() { - this.isException = true; + this._isException = true; } } const finishedQueue = new QueueObserver(); -class smartQueue { - private readonly queue: Map; +class SmartQueue { + private readonly _queue: Map; constructor() { - this.queue = new Map(); + this._queue = new Map(); } add(key: string, value: StandardInterface) { - if (this.queue.has(key)) { - const queueValue = this.queue.get(key) as StandardInterface; - queueValue.s[value.t] = value.s[value.t] as any; + if (this._queue.has(key)) { + const queueValue = this._queue.get(key) as StandardInterface; + queueValue.s[value.t] = value.s[value.t] as object extends GitInterface ? GitInterface : object extends EtherInterface ? EtherInterface : never; const { s: { ether, git, network }, c: { amount }, @@ -236,63 +257,65 @@ class smartQueue { // check for undefined if (git?.issue_number) { elemList.push({ - id: git?.issue_number!, - tx: ether?.txHash!, - amount: ethers.utils.formatEther(amount)!, - title: git?.issue_title!, - bounty_hunter: git?.bounty_hunter, - owner: git?.owner, - repo: git?.repo, + id: git.issue_number, + tx: ether?.txHash || "N/A", // @TODO - handle this better + amount: ethers.utils.formatEther(amount), + title: git.issue_title, + bounty_hunter: git.bounty_hunter, + owner: git.owner, + repo: git.repo, network, }); if (elemList.length > 0) { resultTableTbodyElem.innerHTML = ""; - for (let data of elemList) { + for (const data of elemList) { populateTable(data?.owner, data?.repo, data?.id, data?.network, data?.tx, data?.title, data?.amount, data?.bounty_hunter); } } } - this.queue.delete(key); + this._queue.delete(key); } else { - this.queue.set(key, value); + this._queue.set(key, value); } } } +type QueueItem = ChainScanResult; +type Queue = QueueItem extends string ? string[] : QueueItem[]; class QueueSet { - private readonly queue: any[]; - private readonly set: Set; + private readonly _queue: Queue; + private readonly _set: Set>; constructor() { - this.queue = []; - this.set = new Set(); + this._queue = []; + this._set = new Set(); } - add(item: any) { - if (!this.set.has(item)) { - this.set.add(item); - this.queue.push(item); + add(item: NonNullable) { + if (!this._set.has(item)) { + this._set.add(item); + this._queue.push(item as QueueItem); } } remove() { - const v = this.queue.shift(); - this.set.delete(v); + const v = this._queue.shift(); + if (v) this._set.delete(v); } - read() { - return this.queue[0]; + read(): ChainScanResult { + return this._queue[0]; } isEmpty() { - return this.queue.length === 0; + return this._queue.length === 0; } } -const updateQueue = new smartQueue(); +const updateQueue = new SmartQueue(); const rpcQueue = new QueueSet(); -const commentFetcher = async () => { +async function commentFetcher() { if (isComment) { const commentIntervalID = setInterval(async () => { clearInterval(commentIntervalID); @@ -309,7 +332,9 @@ const commentFetcher = async () => { }, }, }); - let [owner, repo] = parseRepoUrl(issueList[0].html_url); + + const [owner, repo] = parseRepoUrl(issueList[0].html_url); + const { data } = await octokit.rest.issues.listComments({ owner, repo, @@ -317,85 +342,8 @@ const commentFetcher = async () => { per_page: offset, page: commentPageNumber, }); - if (data.length === 0) { - commentPageNumber = 1; - await issueList.shift(); - if (issueList.length > 0) { - commentFetcher(); - } else { - isComment = false; - finishedQueue.mutate("isComment", true); - } - } else { - let isFound = false; - for (let comment of data) { - if (comment.user && comment.user.node_id === botNodeId && comment.body) { - const match = comment.body.match(urlRegex); - if (match && isValidUrl(match[1])) { - const url = new URL(match[1]); - const params = new URLSearchParams(url.search); - const base64Payload = params.get("claim"); - let network = getCurrency(comment.body); // Might change it to `const claimNetwork = params.get("network");` later because previous permits are missing network query - if (base64Payload) { - const { - owner: ownerAddress, - signature, - permit: { - deadline, - nonce, - permitted: { amount, token }, - }, - transferDetails: { to }, - } = JSON.parse(window.atob(base64Payload)) as TxData; - await updateQueue.add(signature, { - k: signature, - t: "git", - c: { - nonce, - owner: ownerAddress, - token, - amount, - to, - deadline, - signature, - }, - s: { - git: { - issue_title: issueList[0].title, - issue_number: issueList[0].number, - owner, - repo, - bounty_hunter: { - name: issueList[0].assignee ? issueList[0].assignee.login : issueList[0].assignees[0]?.login, - url: issueList[0].assignee ? issueList[0].assignee.html_url : issueList[0].assignees[0]?.html_url, - }, - }, - ether: undefined, - network: network as string, - }, - }); - isFound = true; - } - } else { - console.log("URL not found, skipping"); - } - } - } - - if (isFound) { - commentPageNumber = 1; - await issueList.shift(); - } else { - commentPageNumber++; - } - - if (issueList.length > 0) { - commentFetcher(); - } else { - isComment = false; - finishedQueue.mutate("isComment", true); - } - } + + await fetchComment(owner, repo, data); } else { isComment = false; finishedQueue.mutate("isComment", true); @@ -403,9 +351,9 @@ const commentFetcher = async () => { } catch (error) { console.error(error); finishedQueue.raise(); - await issueList.shift(); + issueList.shift(); if (issueList.length > 0) { - commentFetcher(); + await commentFetcher(); } else { isComment = false; finishedQueue.mutate("isComment", true); @@ -413,71 +361,113 @@ const commentFetcher = async () => { } }, GIT_INTERVAL); } -}; +} -const gitFetcher = async (repoUrls: GitHubUrlParts[]) => { - if (isGit) { - const octokit = new rateOctokit({ - auth: GITHUB_PAT, - throttle: { - onRateLimit: (retryAfter, options) => { - return primaryRateLimitHandler(retryAfter, options as RateLimitOptions); - }, - onSecondaryRateLimit: (retryAfter, options) => { - return secondaryRateLimitHandler(retryAfter, options as RateLimitOptions); - }, - }, - }); +async function fetchComment(owner: string, repo: string, data: ListCommentsDataItem[]) { + let isFound = false; + if (data.length === 0) { + commentPageNumber = 1; + issueList.shift(); + if (issueList.length > 0) { + await commentFetcher(); + } else { + isComment = false; + finishedQueue.mutate("isComment", true); + } + } else { + isFound = await processComments(owner, repo, data); - const getIssuesForRepo = async (owner: string, repo: string) => { - const issueList: any[] = []; + if (isFound) { + commentPageNumber = 1; + issueList.shift(); + } else { + commentPageNumber++; + } - while (true) { - try { - const { data } = await octokit.rest.issues.listForRepo({ - owner, - repo, - state: "closed", - per_page: offset, - page: gitPageNumber, - }); + if (issueList.length > 0) { + commentFetcher().catch((error) => console.error(error)); + } else { + isComment = false; + finishedQueue.mutate("isComment", true); + } + } +} - if (data.length === 0) break; - - const issues = data.filter(issue => !issue.pull_request && issue.comments > 0); - if (issues.length > 0) { - if (!lastGitID) { - lastGitID = issues[0].number; - } - let iEF = true; - for (let i of issues) { - if (i.number !== gitID) { - await issueList.push(i); - } else { - iEF = false; - break; - } - } - - if (iEF) { - gitPageNumber++; - } else { - break; - } - } else { - break; - } - } catch (error: any) { - console.error(error); - throw error; - } +async function processComments(owner: string, repo: string, comments: ListCommentsDataItem[]) { + let isFound = false; + + for (const comment of comments) { + if (comment.user && comment.user.node_id === botNodeId && comment.body) { + isFound = await processComment(owner, repo, comment); + if (isFound) { + break; } + } + } + return isFound; +} - return issueList; - }; +async function processComment(owner: string, repo: string, comment: ListCommentsDataItem) { + let isFound = false; + + if (!comment.body) return isFound; + + const match = comment.body.match(urlRegex); + if (match && isValidUrl(match[1])) { + const params = new URLSearchParams(new URL(match[1]).search); + const base64Payload = params.get("claim"); + const network = getCurrency(comment.body); // Might change it to `const claimNetwork = params.get("network");` later because previous permits are missing network query + if (base64Payload) { + const { + owner: ownerAddress, + signature, + permit: { + deadline, + nonce, + permitted: { amount, token }, + }, + transferDetails: { to }, + } = JSON.parse(window.atob(base64Payload)) as TxData; + updateQueue.add(signature, { + k: signature, + t: "git", + c: { + nonce, + owner: ownerAddress, + token, + amount, + to, + deadline, + signature, + }, + s: { + git: { + issue_title: issueList[0].title, + issue_number: issueList[0].number, + owner, + repo, + bounty_hunter: { + name: issueList[0].assignee ? issueList[0].assignee.login : issueList[0].assignees?.[0].login || "", + url: issueList[0].assignee ? issueList[0].assignee.html_url : issueList[0].assignees?.[0].html_url || "", + }, + }, + ether: undefined, + network: network as string, + }, + }); + isFound = true; + } + } else { + console.log("URL not found, skipping"); + } + return isFound; +} + +async function gitFetcher(repoUrls: GitHubUrlParts[]) { + if (isGit) { try { - const issuesPromises = repoUrls.map(repoUrl => getIssuesForRepo(repoUrl.owner, repoUrl.repo)); + const issuesPromises = repoUrls.map((repoUrl) => getIssuesForRepo(repoUrl.owner, repoUrl.repo)); const allIssues = await Promise.all(issuesPromises); for (let i = 0; i < allIssues.length; i++) { @@ -488,30 +478,100 @@ const gitFetcher = async (repoUrls: GitHubUrlParts[]) => { isGit = false; finishedQueue.mutate("isGit", true); - commentFetcher(); - } catch (error: any) { + await commentFetcher(); + } catch (error: unknown) { console.error("Error fetching issues:", error); } } -}; +} + +async function getIssuesForRepo(owner: string, repo: string) { + const issueList: ListForRepoDataItem[] = []; + + const octokit = new rateOctokit({ + auth: GITHUB_PAT, + throttle: { + onRateLimit: (retryAfter, options) => { + return primaryRateLimitHandler(retryAfter, options as RateLimitOptions); + }, + onSecondaryRateLimit: (retryAfter, options) => { + return secondaryRateLimitHandler(retryAfter, options as RateLimitOptions); + }, + }, + }); + + const isIEF = true; + + while (isIEF) { + try { + const { data } = await octokit.rest.issues.listForRepo({ + owner, + repo, + state: "closed", + per_page: offset, + page: gitPageNumber, + }); + + if (data.length === 0) break; + + const issues = data.filter((issue) => !issue.pull_request && issue.comments > 0); + const { isIEF: isIEF2, issueList: processed } = await processIssues(isIEF, issueList, issues); + + issueList.push(...processed); + + if (!isIEF2) { + break; + } + } catch (error: unknown) { + console.error(error); + throw error; + } + } + + return issueList; +} + +async function processIssues(isIEF: boolean, issueList: ListForRepoDataItem[], issues: ListForRepoDataItem[]) { + if (issues.length > 0) { + if (!lastGitID) { + lastGitID = issues[0].number; + } + for (const i of issues) { + if (i.number !== gitID) { + issueList.push(i); + } else { + isIEF = false; + break; + } + } + + if (isIEF) { + gitPageNumber++; + } else { + isIEF = false; + } + } + + return { isIEF, issueList }; +} -const fetchDataFromChainScanAPI = async (url: string, chain: string) => { +async function fetchDataFromChainScanAPI(url: string, chain: string) { try { const { data } = await axios.get(url); - return data.result.map((item: any) => ({ ...item, chain })); - } catch (error: any) { + return data.result.map((item: NonNullable) => ({ ...item, chain })); + } catch (error: unknown) { console.error(error); throw error; } -}; +} -const etherFetcher = async () => { +async function etherFetcher() { const ethereumURL = `https://api.${ChainScan.Ethereum}/api?module=account&action=tokentx&address=${BOT_WALLET_ADDRESS}&apikey=${getRandomAPIKey( - Chain.Ethereum, + Chain.Ethereum )}&page=${etherPageNumber}&offset=${offset}&sort=desc`; const gnosisURL = `https://api.${ChainScan.Gnosis}/api?module=account&action=tokentx&address=${BOT_WALLET_ADDRESS}&apikey=${getRandomAPIKey( - Chain.Gnosis, + Chain.Gnosis )}&page=${etherPageNumber}&offset=${offset}&sort=desc`; if (isEther) { @@ -524,32 +584,8 @@ const etherFetcher = async () => { ]); const combinedData: ChainScanResult[] = [...ethereumData, ...gnosisData]; - if (combinedData.length > 0) { - if (!lastEtherHash) { - lastEtherHash = combinedData[0].hash; - } - let iEF = true; - for (let e of combinedData) { - if (e.hash !== etherHash) { - await rpcQueue.add({ hash: e.hash, chain: e.chain }); - } else { - iEF = false; - break; - } - } - - if (iEF) { - etherPageNumber++; - etherFetcher(); - } else { - isEther = false; - finishedQueue.mutate("isEther", true); - } - } else { - isEther = false; - finishedQueue.mutate("isEther", true); - } - } catch (error: any) { + await handleCombinedData(combinedData); + } catch (error: unknown) { console.error(error); finishedQueue.raise(); isEther = false; @@ -557,69 +593,56 @@ const etherFetcher = async () => { } }, ETHER_INTERVAL); } -}; +} + +async function handleCombinedData(combinedData: ChainScanResult[]) { + if (combinedData.length > 0) { + if (!lastEtherHash) { + lastEtherHash = combinedData[0].hash; + } + let isIEF = true; + for (const e of combinedData) { + if (e.hash !== etherHash) { + rpcQueue.add({ hash: e.hash, chain: e.chain }); + } else { + isIEF = false; + break; + } + } + + if (isIEF) { + etherPageNumber++; + await etherFetcher(); + } else { + isEther = false; + finishedQueue.mutate("isEther", true); + } + } else { + isEther = false; + finishedQueue.mutate("isEther", true); + } +} -const rpcFetcher = async () => { +async function rpcFetcher() { if (isRPC) { const rpcIntervalID = setInterval(async () => { clearInterval(rpcIntervalID); try { - const data = await rpcQueue.read(); - if (data) { - const { hash, chain } = data; - - const providerUrl = await getOptimalRPC(chain); - const txInfo = await getTxInfo(hash, providerUrl, chain); - - if (txInfo.input.startsWith(permitTransferFromSelector)) { - const decodedFunctionData = permit2Interface.decodeFunctionData(permitFunctionName, txInfo.input); - const { - permit: { - permitted: { token, amount }, - nonce, - deadline, - }, - transferDetails: { to }, - owner, - signature, - } = decodedFunctionData as unknown as TxData; - updateQueue.add(signature, { - k: signature, - t: "ether", - c: { - nonce, - owner, - token, - amount, - to, - deadline, - signature, - }, - s: { - ether: { - txHash: txInfo.hash, - timestamp: parseInt(txInfo.timestamp, 16), - block_number: parseInt(txInfo.blockNumber, 16), - }, - git: undefined, - network: chain as string, - }, - }); - } - } - await rpcQueue.remove(); + const data = rpcQueue.read(); + await handleRPCData(data); + rpcQueue.remove(); if (isEther || !rpcQueue.isEmpty()) { - rpcFetcher(); + await rpcFetcher(); } else { isRPC = false; finishedQueue.mutate("isRPC", true); } - } catch (error: any) { + } catch (error: unknown) { console.error(error); finishedQueue.raise(); - await rpcQueue.remove(); + rpcQueue.remove(); if (isEther || !rpcQueue.isEmpty()) { - rpcFetcher(); + await rpcFetcher(); } else { isRPC = false; finishedQueue.mutate("isRPC", true); @@ -627,9 +650,54 @@ const rpcFetcher = async () => { } }, RPC_INTERVAL); } -}; +} + +async function handleRPCData(data: ChainScanResult) { + if (data) { + const { hash, chain } = data as { hash: string; chain: string }; + + const providerUrl = await getOptimalRPC(chain as Chain); + const txInfo = await getTxInfo(hash, providerUrl, chain as Chain); + + if (txInfo.input.startsWith(permitTransferFromSelector)) { + const decodedFunctionData = permit2Interface.decodeFunctionData(permitFunctionName, txInfo.input); + const { + permit: { + permitted: { token, amount }, + nonce, + deadline, + }, + transferDetails: { to }, + owner, + signature, + } = decodedFunctionData as unknown as TxData; + updateQueue.add(signature, { + k: signature, + t: "ether", + c: { + nonce, + owner, + token, + amount, + to, + deadline, + signature, + }, + s: { + ether: { + txHash: txInfo.hash, + timestamp: parseInt(txInfo.timestamp, 16), + block_number: parseInt(txInfo.blockNumber, 16), + }, + git: undefined, + network: chain as string, + }, + }); + } + } +} -const dbInit = async () => { +async function dbInit() { if (isCache) { const storeHash = ethers.utils.keccak256(ethers.utils.toUtf8Bytes(`${REPOSITORY_URL}_${BOT_WALLET_ADDRESS}`)); const metaData = await readMeta(storeHash); @@ -642,7 +710,7 @@ const dbInit = async () => { const tableData = await readDB(storeHash); if (tableData.length > 0) { - for (let data of tableData) { + for (const data of tableData) { const { owner, repo, id, network, tx, bounty_hunter, amount, title } = data as unknown as SavedData; populateTable(owner, repo, id, network, tx, title, amount, bounty_hunter); // for filtering @@ -660,9 +728,9 @@ const dbInit = async () => { } } } -}; +} -const resetInit = () => { +async function resetInit() { isComment = true; commentPageNumber = 1; issueList.splice(0, issueList.length); @@ -678,20 +746,20 @@ const resetInit = () => { lastEtherHash = false; repoArray.splice(0, repoArray.length); finishedQueue.clearQueue(); -}; +} -const asyncInit = async () => { +async function asyncInit() { await resetInit(); await dbInit(); -}; +} -const tabInit = (repoUrls: GitHubUrlParts[]) => { - etherFetcher(); - gitFetcher(repoUrls); - rpcFetcher(); -}; +function tabInit(repoUrls: GitHubUrlParts[]) { + etherFetcher().catch((error) => console.error(error)); + gitFetcher(repoUrls).catch((error) => console.error(error)); + rpcFetcher().catch((error) => console.error(error)); +} -const auditInit = () => { +function auditInit() { tgBtnInput.checked = true; getReportElem.addEventListener("click", async () => { isCache = tgBtnInput.checked; @@ -716,12 +784,12 @@ const auditInit = () => { if (BOT_WALLET_ADDRESS !== "" && REPOSITORY_URL !== "" && GITHUB_PAT !== "" && REPOS.length > 0) { await asyncInit(); - await tabInit(REPOS); + tabInit(REPOS); } else { toggleLoader("none"); } }); -}; +} /** * @@ -731,20 +799,20 @@ const auditInit = () => { // Function to filter the table based on search input function filterTable() { - const input = document.getElementById("searchInput")! as HTMLInputElement; - let value = input.value.toLowerCase(); + const input = document.getElementById("searchInput") as HTMLInputElement; + const value = input.value.toLowerCase(); const filteredData = elemList.filter( - row => + (row) => row.owner.toLowerCase().includes(value) || row.repo.toLowerCase().includes(value) || row.amount.toLowerCase().includes(value) || row.tx.toLowerCase().includes(value) || row.title.toLowerCase().includes(value) || row.network.toLowerCase().includes(value) || - row.bounty_hunter.name.toLowerCase().includes(value), + row.bounty_hunter.name.toLowerCase().includes(value) ); resultTableTbodyElem.innerHTML = ""; // Clear the existing rows - for (let data of filteredData) { + for (const data of filteredData) { const { owner, repo, id, network, tx, bounty_hunter, amount, title } = data as unknown as SavedData; populateTable(owner, repo, id, network, tx, title, amount, bounty_hunter); } @@ -759,7 +827,7 @@ function sortTableByAmount() { sortDirection *= -1; updateSortArrow(); resultTableTbodyElem.innerHTML = ""; // Clear the existing rows - for (let data of elemList) { + for (const data of elemList) { const { owner, repo, id, network, tx, bounty_hunter, amount, title } = data as unknown as SavedData; populateTable(owner, repo, id, network, tx, title, amount, bounty_hunter); } @@ -771,10 +839,12 @@ function updateSortArrow() { sortArrow.textContent = sortDirection === 1 ? "\u2191" : "\u2193"; } -// Add event listener for the search button -document.getElementById("searchInput")!.addEventListener("keyup", filterTable); +const searchInput = document.getElementById("searchInput") as HTMLInputElement; +const amountHeader = document.getElementById("amountHeader") as HTMLTableCellElement; +// Add event listener for the search button +searchInput.addEventListener("keyup", filterTable); // Add event listener for the "Amount" column header -document.getElementById("amountHeader")!.addEventListener("click", sortTableByAmount); +amountHeader.addEventListener("click", sortTableByAmount); auditInit(); diff --git a/static/scripts/audit-report/constants.ts b/static/scripts/audit-report/constants.ts index 256f678b..b8282685 100644 --- a/static/scripts/audit-report/constants.ts +++ b/static/scripts/audit-report/constants.ts @@ -8,16 +8,17 @@ export enum Chain { Gnosis = "Gnosis", } -export const ChainMap = { +export const CHAIN_MAP = { Ethereum: 1, Gnosis: 100, }; export const NULL_ID = 0; export const NULL_HASH = "0x0000000000000000000000000000000000000000"; -export const DatabaseName = "file_cache"; +export const DATABASE_NAME = "file_cache"; // hardcoded values +// cspell:ignore 35G6PRE7U54QWZMXYGUSI3YWU27TP2TTBK R75N38X1Y5KP8CRPPDWBRT3EM5VDJ73MUK export const API_KEYS = { [Chain.Ethereum]: ["35G6PRE7U54QWZMXYGUSI3YWU27TP2TTBK"], [Chain.Gnosis]: ["R75N38X1Y5KP8CRPPDWBRT3EM5VDJ73MUK"], diff --git a/static/scripts/audit-report/helpers.ts b/static/scripts/audit-report/helpers.ts index eb81e0f9..797ae00a 100644 --- a/static/scripts/audit-report/helpers.ts +++ b/static/scripts/audit-report/helpers.ts @@ -1,7 +1,7 @@ +import axios from "axios"; import { ethers } from "ethers"; import { API_KEYS, Chain, ChainScan, RPC_URLS } from "./constants"; import { BountyHunter, GitHubUrlParts } from "./types"; -import axios from "axios"; export interface RateLimitOptions { method: string; @@ -31,7 +31,7 @@ const RPC_HEADER = { "Content-Type": "application/json", }; -export const shortenTransactionHash = (hash: string | undefined, length = 8): string => { +export function shortenTransactionHash(hash: string | undefined, length = 8): string { if (!hash) return ""; const prefixLength = Math.floor(length / 2); const suffixLength = length - prefixLength; @@ -40,40 +40,40 @@ export const shortenTransactionHash = (hash: string | undefined, length = 8): st const suffix = hash.slice(-suffixLength); return prefix + "..." + suffix; -}; +} -export const populateTable = ( +export function populateTable( owner: string, repo: string, - issue_number: number, + issueNumber: number, network: string, txHash: string, - issue_title: string, + issueTitle: string, amount: string, - bounty_hunter: BountyHunter, -) => { + bountyHunter: BountyHunter +) { if (!txHash) return; // permit not claimed - const issue_url = `https://github.com/${owner}/${repo}/issues/${issue_number}`; - const tx_url = `https://${getChainScan(network)}/tx/${txHash}`; + const issueUrl = `https://github.com/${owner}/${repo}/issues/${issueNumber}`; + const txUrl = `https://${getChainScan(network)}/tx/${txHash}`; const rows = ` ${owner}/${repo} - #${issue_number} - ${issue_title} - ${bounty_hunter?.name} - ${ethers.BigNumber.isBigNumber(amount) ? ethers.utils.formatEther(amount) : amount} ${ - network === Chain.Ethereum ? "DAI" : "WXDAI" - } - ${shortenTransactionHash(txHash)} + #${issueNumber} - ${issueTitle} + ${bountyHunter?.name} + ${ethers.BigNumber.isBigNumber(amount) ? ethers.utils.formatEther(amount) : amount} ${ + network === Chain.Ethereum ? "DAI" : "WXDAI" + } + ${shortenTransactionHash(txHash)} `; resultTableTbodyElem.insertAdjacentHTML("beforeend", rows); -}; +} -export const getChainScan = (chain: string) => { +export function getChainScan(chain: string) { return chain === Chain.Ethereum ? ChainScan.Ethereum : ChainScan.Gnosis; -}; +} -export const getRandomAPIKey = (chain: Chain): string => { +export function getRandomAPIKey(chain: Chain): string { const keys = API_KEYS[chain]; if (!keys || keys.length === 0) { throw new Error(`No API Keys found for chain: ${chain}`); @@ -81,9 +81,9 @@ export const getRandomAPIKey = (chain: Chain): string => { const randomIndex = Math.floor(Math.random() * keys.length); return keys[randomIndex]; -}; +} -export const getRandomRpcUrl = (chain: Chain): string => { +export function getRandomRpcUrl(chain: Chain): string { const urls = RPC_URLS[chain]; if (!urls || urls.length === 0) { throw new Error(`No RPC URLs found for chain: ${chain}`); @@ -91,9 +91,9 @@ export const getRandomRpcUrl = (chain: Chain): string => { const randomIndex = Math.floor(Math.random() * urls.length); return urls[randomIndex]; -}; +} -const verifyBlock = (data: DataType) => { +function verifyBlock(data: DataType) { try { const { jsonrpc, id, result } = data; const { number, timestamp, hash } = result; @@ -101,9 +101,9 @@ const verifyBlock = (data: DataType) => { } catch (error) { return false; } -}; +} -export const getOptimalRPC = async (chain: Chain): Promise => { +export async function getOptimalRPC(chain: Chain): Promise { const promises = RPC_URLS[chain].map(async (baseURL: string) => { try { const startTime = performance.now(); @@ -115,7 +115,7 @@ export const getOptimalRPC = async (chain: Chain): Promise => { const { data } = await API.post("", RPC_BODY); const endTime = performance.now(); const latency = endTime - startTime; - if (await verifyBlock(data)) { + if (verifyBlock(data)) { return Promise.resolve({ latency, baseURL, @@ -130,9 +130,9 @@ export const getOptimalRPC = async (chain: Chain): Promise => { const { baseURL: optimalRPC } = await Promise.any(promises); return optimalRPC; -}; +} -export const parseRepoUrl = (issueUrl: string): [string, string] => { +export function parseRepoUrl(issueUrl: string): [string, string] { const match = issueUrl.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/\d+/i); if (match) { const owner = match[1]; @@ -141,9 +141,9 @@ export const parseRepoUrl = (issueUrl: string): [string, string] => { } else { throw new Error("Invalid GitHub issue URL format"); } -}; +} -export const getGitHubUrlPartsArray = (urls: string[]): GitHubUrlParts[] => { +export function getGitHubUrlPartsArray(urls: string[]): GitHubUrlParts[] { const githubUrlPartsArray: GitHubUrlParts[] = []; for (const url of urls) { @@ -157,31 +157,31 @@ export const getGitHubUrlPartsArray = (urls: string[]): GitHubUrlParts[] => { } return githubUrlPartsArray; -}; +} -export const primaryRateLimitHandler = (retryAfter: number, options: RateLimitOptions) => { +export function primaryRateLimitHandler(retryAfter: number, options: RateLimitOptions) { console.warn(`Request quota exhausted for request ${options.method} ${options.url}\nRetrying after ${retryAfter} seconds!`); return true; -}; +} -export const secondaryRateLimitHandler = (retryAfter: number, options: RateLimitOptions) => { +export function secondaryRateLimitHandler(retryAfter: number, options: RateLimitOptions) { console.warn(`Secondary quota detected for request ${options.method} ${options.url}\nRetrying after ${retryAfter} seconds!`); return true; -}; +} -export const isValidUrl = (urlString: string) => { +export function isValidUrl(urlString: string) { try { return Boolean(new URL(urlString)); } catch (e) { return false; } -}; +} -export const getCurrency = (comment: string) => { +export function getCurrency(comment: string) { if (comment.includes("WXDAI")) { return Chain.Gnosis; } else if (comment.includes("DAI")) { return Chain.Ethereum; } return null; -}; +} diff --git a/static/scripts/audit-report/types/audit.d.ts b/static/scripts/audit-report/types/audit.d.ts index f5d0382c..86c3b64c 100644 --- a/static/scripts/audit-report/types/audit.d.ts +++ b/static/scripts/audit-report/types/audit.d.ts @@ -119,7 +119,7 @@ interface TableIndex { type: TableIndexTypes; multiEntry?: boolean; unique?: boolean; - default?: any; + default?: NonNullable; ref?: string; } interface GoDBTableSchema { diff --git a/static/scripts/audit-report/types/transaction.ts b/static/scripts/audit-report/types/transaction.ts index d6eee244..0d2cd07e 100644 --- a/static/scripts/audit-report/types/transaction.ts +++ b/static/scripts/audit-report/types/transaction.ts @@ -1,4 +1,4 @@ -export interface ITransaction { +export interface Transaction { input: string; hash: string; blockNumber: string; diff --git a/static/scripts/audit-report/utils/blockInfo.ts b/static/scripts/audit-report/utils/blockInfo.ts index 1a87709c..ee008c6c 100644 --- a/static/scripts/audit-report/utils/blockInfo.ts +++ b/static/scripts/audit-report/utils/blockInfo.ts @@ -1,9 +1,9 @@ -import { Chain, ChainMap } from "../constants"; +import { Chain, CHAIN_MAP } from "../constants"; -export const getBlockInfo = async (blockNumber: string, chain: Chain) => { - return await localStorage.getItem(`${ChainMap[chain]}:${blockNumber}`); -}; +export async function getBlockInfo(blockNumber: string, chain: Chain) { + return localStorage.getItem(`${CHAIN_MAP[chain]}:${blockNumber}`); +} -export const updateBlockInfo = async (blockNumber: string, timestamp: string, chain: Chain) => { - await localStorage.setItem(`${ChainMap[chain]}:${blockNumber}`, timestamp); -}; +export async function updateBlockInfo(blockNumber: string, timestamp: string, chain: Chain) { + localStorage.setItem(`${CHAIN_MAP[chain]}:${blockNumber}`, timestamp); +} diff --git a/static/scripts/audit-report/utils/getTransaction.ts b/static/scripts/audit-report/utils/getTransaction.ts index 320f0ab4..e165e21b 100644 --- a/static/scripts/audit-report/utils/getTransaction.ts +++ b/static/scripts/audit-report/utils/getTransaction.ts @@ -1,9 +1,9 @@ import axios from "axios"; -import { ITransaction } from "../types/transaction"; -import { getBlockInfo, updateBlockInfo } from "./blockInfo"; import { Chain } from "../constants"; +import { Transaction } from "../types/transaction"; +import { getBlockInfo, updateBlockInfo } from "./blockInfo"; -export const getTxInfo = async (hash: string, url: string, chain: Chain): Promise => { +export async function getTxInfo(hash: string, url: string, chain: Chain): Promise { try { const transactionResponse = await axios.post(url, { jsonrpc: "2.0", @@ -11,9 +11,9 @@ export const getTxInfo = async (hash: string, url: string, chain: Chain): Promis method: "eth_getTransactionByHash", params: [hash], }); - const transaction = transactionResponse.data.result as ITransaction; + const transaction = transactionResponse.data.result as Transaction; - let timestamp = await getBlockInfo(transaction.blockNumber, chain); + const timestamp = await getBlockInfo(transaction.blockNumber, chain); if (timestamp !== null) { transaction.timestamp = timestamp; } else { @@ -24,7 +24,7 @@ export const getTxInfo = async (hash: string, url: string, chain: Chain): Promis params: [transaction.blockNumber, false], }); transaction.timestamp = blockResponse.data.result.timestamp; - updateBlockInfo(transaction.blockNumber, transaction.timestamp, chain); + await updateBlockInfo(transaction.blockNumber, transaction.timestamp, chain); } return transaction; @@ -32,4 +32,4 @@ export const getTxInfo = async (hash: string, url: string, chain: Chain): Promis console.error(error); throw error; } -}; +} diff --git a/static/scripts/key-generator/keygen.ts b/static/scripts/key-generator/keygen.ts index a5ed2ca7..6853de7c 100644 --- a/static/scripts/key-generator/keygen.ts +++ b/static/scripts/key-generator/keygen.ts @@ -1,23 +1,24 @@ import _sodium from "libsodium-wrappers"; const classes = ["error", "warning", "success"]; +const CYPHER_KEY = "#cipherKey"; -const statusToggle = (target: "error" | "warning" | "success", value: string) => { +function statusToggle(target: "error" | "warning" | "success", value: string) { const statusKey = document.querySelector("#statusKey") as HTMLInputElement; - classes.forEach(e => { + classes.forEach((e) => { if (e !== target) { statusKey.classList.remove(e); } }); statusKey.classList.add(target); statusKey.value = value; -}; +} -const sodiumKeyBox = async () => { +async function sodiumKeyBox() { const privKey = document.querySelector("#privKey") as HTMLInputElement; const pubKey = document.querySelector("#pubKey") as HTMLInputElement; - const cipherKey = document.querySelector("#cipherKey") as HTMLInputElement; + const cipherKey = document.querySelector(CYPHER_KEY) as HTMLInputElement; cipherKey.value = ""; try { await _sodium.ready; @@ -27,16 +28,20 @@ const sodiumKeyBox = async () => { privKey.value = privateKey; pubKey.value = publicKey; statusToggle("success", `Success: Key Generation is ok.`); - } catch (error: any) { - statusToggle("error", `Error: ${error.message}`); + } catch (error: unknown) { + if (error instanceof Error) { + statusToggle("error", `Error: ${error.message}`); + } else { + statusToggle("error", `Error: ${JSON.stringify(error)}`); + } } -}; +} -const sodiumEncryptedSeal = async () => { +async function sodiumEncryptedSeal() { const pubKey = document.querySelector("#pubKey") as HTMLInputElement; const privKey = document.querySelector("#privKey") as HTMLInputElement; const plainKey = document.querySelector("#plainKey") as HTMLInputElement; - const cipherKey = document.querySelector("#cipherKey") as HTMLInputElement; + const cipherKey = document.querySelector(CYPHER_KEY) as HTMLInputElement; try { await _sodium.ready; const sodium = _sodium; @@ -58,12 +63,16 @@ const sodiumEncryptedSeal = async () => { const output = sodium.to_base64(encBytes, sodium.base64_variants.URLSAFE_NO_PADDING); cipherKey.value = output; statusToggle("success", `Success: Key Encryption is ok.`); - } catch (error: any) { - statusToggle("error", `Error: ${error.message}`); + } catch (error: unknown) { + if (error instanceof Error) { + statusToggle("error", `Error: ${error.message}`); + } else { + statusToggle("error", `Error: ${JSON.stringify(error)}`); + } } -}; +} -const sodiumOpenSeal = async () => { +async function sodiumOpenSeal() { const pubKey = document.querySelector("#pubKey") as HTMLInputElement; const privKey = document.querySelector("#privKey") as HTMLInputElement; const cipherKey = document.querySelector("#cipherKey") as HTMLInputElement; @@ -89,27 +98,37 @@ const sodiumOpenSeal = async () => { const outText = sodium.crypto_box_seal_open(binCipher, binPub, binPriv, "text"); plainKey.value = outText; statusToggle("success", `Success: Key Decryption is ok.`); - } catch (error: any) { - statusToggle("error", `Error: ${error.message}`); + } catch (error: unknown) { + if (error instanceof Error) { + statusToggle("error", `Error: ${error.message}`); + } else { + statusToggle("error", `Error: ${JSON.stringify(error)}`); + } } -}; +} -const init = () => { +function init() { const genBtn = document.querySelector("#genBtn") as HTMLButtonElement; const encryptBtn = document.querySelector("#encryptBtn") as HTMLButtonElement; const decryptBtn = document.querySelector("#decryptBtn") as HTMLButtonElement; genBtn.addEventListener("click", () => { - sodiumKeyBox(); + sodiumKeyBox().catch((error) => { + statusToggle("error", `Error: ${error.message}`); + }); }); encryptBtn.addEventListener("click", () => { - sodiumEncryptedSeal(); + sodiumEncryptedSeal().catch((error) => { + statusToggle("error", `Error: ${error.message}`); + }); }); decryptBtn.addEventListener("click", () => { - sodiumOpenSeal(); + sodiumOpenSeal().catch((error) => { + statusToggle("error", `Error: ${error.message}`); + }); }); -}; +} init(); diff --git a/static/scripts/onboarding/onboarding.ts b/static/scripts/onboarding/onboarding.ts index fa2f7f72..a64fb724 100644 --- a/static/scripts/onboarding/onboarding.ts +++ b/static/scripts/onboarding/onboarding.ts @@ -17,7 +17,7 @@ const outKey = document.getElementById("outKey") as HTMLInputElement; const githubPAT = document.getElementById("githubPat") as HTMLInputElement; const orgName = document.getElementById("orgName") as HTMLInputElement; const walletPrivateKey = document.getElementById("walletPrivateKey") as HTMLInputElement; -const safeAddressInput = document.getElementById("safeAddress") as HTMLInputElement; +// cspell: word ress // weird cspell bug seperating add and ress const setBtn = document.getElementById("setBtn") as HTMLButtonElement; const allowanceInput = document.getElementById("allowance") as HTMLInputElement; const chainIdSelect = document.getElementById("chainId") as HTMLSelectElement; @@ -29,38 +29,42 @@ const KEY_PATH = ".github/ubiquibot-config.yml"; const PRIVATE_ENCRYPTED_KEY_NAME = "privateKeyEncrypted"; const EVM_NETWORK_KEY_NAME = "evmNetworkId"; const KEY_PREFIX = "HSK_"; +// cspell:disable-next-line const X25519_KEY = "5ghIlfGjz_ChcYlBDOG7dzmgAgBPuTahpvTMBipSH00"; +const STATUS_LOG = ".status-log"; let encryptedValue = ""; -let defaultConf = DefaultConfig; +const defaultConf = DefaultConfig; -export const parseYAML = async (data: string | undefined) => { +export async function parseYAML(data: string | undefined) { if (!data) return undefined; try { const parsedData = await YAML.parse(data); if (parsedData !== null) { - return parsedData as T; + return parsedData; } else { return undefined; } } catch (error) { return undefined; } -}; +} -export const parseJSON = async (data: string) => { +export async function parseJSON(data: string) { try { const parsedData = await JSON.parse(data); return parsedData as T; } catch (error) { return undefined; } -}; +} -export const YAMLStringify = (value: any) => YAML.stringify(value, { defaultKeyType: "PLAIN", defaultStringType: "QUOTE_DOUBLE", lineWidth: 0 }); +export function stringifyYAML(value: MergedConfig): string { + return YAML.stringify(value, { defaultKeyType: "PLAIN", defaultStringType: "QUOTE_DOUBLE", lineWidth: 0 }); +} -export const getConf = async (): Promise => { +export async function getConf(): Promise { try { const octokit = new Octokit({ auth: githubPAT.value }); const { data } = await octokit.rest.repos.getContent({ @@ -72,49 +76,48 @@ export const getConf = async (): Promise => { }, }); return data as unknown as string; - } catch (error: any) { + } catch (error: unknown) { return undefined; } -}; +} -const getTextBox = (text: string) => { +function getTextBox(text: string) { const strLen = text.split("\n").length * 22; - const strPx = `${strLen > 140 ? strLen : 140}px`; - return strPx; -}; - -const resetToggle = () => { - (walletPrivateKey.parentNode?.querySelector(".status-log") as HTMLElement).innerHTML = ""; - (githubPAT.parentNode?.querySelector(".status-log") as HTMLElement).innerHTML = ""; - (orgName.parentNode?.querySelector(".status-log") as HTMLElement).innerHTML = ""; -}; - -const classListToggle = (targetElem: HTMLElement, target: "error" | "warn" | "success", inputElem?: HTMLInputElement | HTMLTextAreaElement) => { - classes.forEach(className => targetElem.classList.remove(className)); + return `${strLen > 140 ? strLen : 140}px`; +} + +function resetToggle() { + (walletPrivateKey.parentNode?.querySelector(STATUS_LOG) as HTMLElement).innerHTML = ""; + (githubPAT.parentNode?.querySelector(STATUS_LOG) as HTMLElement).innerHTML = ""; + (orgName.parentNode?.querySelector(STATUS_LOG) as HTMLElement).innerHTML = ""; +} + +function classListToggle(targetElem: HTMLElement, target: "error" | "warn" | "success", inputElem?: HTMLInputElement | HTMLTextAreaElement) { + classes.forEach((className) => targetElem.classList.remove(className)); targetElem.classList.add(target); if (inputElem) { - inputClasses.forEach(className => inputElem.classList.remove(className)); + inputClasses.forEach((className) => inputElem.classList.remove(className)); inputElem.classList.add(`input-${target}`); } -}; +} -const statusToggle = (type: "error" | "warn" | "success", message: string) => { +function statusToggle(type: "error" | "warn" | "success", message: string) { resetToggle(); const statusKey = document.getElementById("statusKey") as HTMLInputElement; classListToggle(statusKey, type); statusKey.value = message; -}; +} -const focusToggle = (targetElem: HTMLInputElement | HTMLTextAreaElement, type: "error" | "warn" | "success", message: string) => { +function focusToggle(targetElem: HTMLInputElement | HTMLTextAreaElement, type: "error" | "warn" | "success", message: string) { resetToggle(); - const infoElem = targetElem.parentNode?.querySelector(".status-log") as HTMLElement; + const infoElem = targetElem.parentNode?.querySelector(STATUS_LOG) as HTMLElement; infoElem.innerHTML = message; classListToggle(infoElem, type, targetElem); targetElem.focus(); -}; +} -const toggleLoader = (state: "start" | "end") => { +function toggleLoader(state: "start" | "end") { if (state === "start") { setBtn.disabled = true; loader.style.display = "flex"; @@ -122,9 +125,9 @@ const toggleLoader = (state: "start" | "end") => { setBtn.disabled = false; loader.style.display = "none"; } -}; +} -const singleToggle = (type: "error" | "warn" | "success", message: string, focusElem?: HTMLInputElement | HTMLTextAreaElement) => { +function singleToggle(type: "error" | "warn" | "success", message: string, focusElem?: HTMLInputElement | HTMLTextAreaElement) { statusToggle(type, message); if (focusElem) { @@ -132,9 +135,9 @@ const singleToggle = (type: "error" | "warn" | "success", message: string, focus } toggleLoader("end"); -}; +} -const sodiumEncryptedSeal = async (publicKey: string, secret: string) => { +async function sodiumEncryptedSeal(publicKey: string, secret: string) { outKey.value = ""; encryptedValue = ""; try { @@ -147,16 +150,19 @@ const sodiumEncryptedSeal = async (publicKey: string, secret: string) => { const output = sodium.to_base64(encBytes, sodium.base64_variants.URLSAFE_NO_PADDING); defaultConf[PRIVATE_ENCRYPTED_KEY_NAME] = output; defaultConf[EVM_NETWORK_KEY_NAME] = Number(chainIdSelect.value); - outKey.value = YAMLStringify(defaultConf); + outKey.value = stringifyYAML(defaultConf); outKey.style.height = getTextBox(outKey.value); encryptedValue = output; singleToggle("success", `Success: Key Encryption is ok.`); - } catch (error: any) { - singleToggle("error", `Error: ${error.message}`); + } catch (error: unknown) { + if (error instanceof Error) { + console.error(error); + singleToggle("error", `Error: ${error.message}`); + } } -}; +} -const setConfig = async () => { +async function setConfig() { try { toggleLoader("start"); const pluginKit = Octokit.plugin(createOrUpdateTextFile); @@ -165,116 +171,138 @@ const setConfig = async () => { username: orgName.value, }); if (userInfo.type === "Organization") { - let repository_id: number | null = null; - try { - const { data: repository_info } = await octokit.rest.repos.get({ - owner: orgName.value, - repo: REPO_NAME, - }); - repository_id = repository_info.id; - } catch (error) { - if (!(error instanceof Error)) { - return console.error(error); - } - - console.error(error.message); - try { - const { data: repo_res } = await octokit.rest.repos.createInOrg({ - org: orgName.value, - name: REPO_NAME, - auto_init: true, - private: true, - visibility: "private", - has_downloads: true, - }); - repository_id = repo_res.id; - } catch (error) { - if (!(error instanceof Error)) { - return console.error(error); - } - console.error(error.message); - singleToggle("error", `Error: Repo initialization failed, try again later.`); - return; - } - } + const repositoryId = await getRepoID(octokit, orgName.value, REPO_NAME); const { data: appInstallations } = await octokit.rest.orgs.listAppInstallations({ org: orgName.value, per_page: 100, }); - const ins = appInstallations.installations.filter(installation => installation.app_id === APP_ID); - - if (ins.length > 0) { - const installation_id = ins[0].id; - const { data: installed_repos } = await octokit.rest.apps.listInstallationReposForAuthenticatedUser({ - installation_id: installation_id, - }); - const irs = installed_repos.repositories.filter(installed_repo => installed_repo.id === repository_id); + const ins = appInstallations.installations.filter((installation) => installation.app_id === APP_ID); - if (irs.length === 0) { - await octokit.rest.apps.addRepoToInstallationForAuthenticatedUser({ - installation_id: installation_id, - repository_id: repository_id, - }); - } + await handleInstall(octokit, orgName, repositoryId, ins, chainIdSelect); + } else { + singleToggle("error", `Error: Not an organization.`, orgName); + } + } catch (error) { + if (!(error instanceof Error)) { + return console.error(error); + } + console.error(error); + singleToggle("error", `Error: ${error.message}`); + } +} + +async function handleInstall( + octokit: Octokit, + orgName: HTMLInputElement, + repositoryId: number | null, + ins: { id: number }[], + chainIdSelect: HTMLSelectElement +) { + if (ins.length > 0) { + const installationId = ins[0].id; + const { data: installedRepos } = await octokit.rest.apps.listInstallationReposForAuthenticatedUser({ + installation_id: installationId, + }); + const irs = installedRepos.repositories.filter((installedRepo) => installedRepo.id === repositoryId); - const conf = await getConf(); + if (irs.length === 0) { + if (!repositoryId) { + singleToggle("error", `Error: Repo initialization failed, try again later.`); + return; + } + await octokit.rest.apps.addRepoToInstallationForAuthenticatedUser({ + installation_id: installationId, + repository_id: repositoryId, + }); + } - const updatedConf = defaultConf; - const parsedConf = await parseYAML(conf); - updatedConf[PRIVATE_ENCRYPTED_KEY_NAME] = encryptedValue; - updatedConf[EVM_NETWORK_KEY_NAME] = Number(chainIdSelect.value); + const conf = await getConf(); - // combine configs (default + remote org wide) - const combinedConf = Object.assign(updatedConf, parsedConf); + const updatedConf = defaultConf; + const parsedConf = await parseYAML(conf); + updatedConf[PRIVATE_ENCRYPTED_KEY_NAME] = encryptedValue; + updatedConf[EVM_NETWORK_KEY_NAME] = Number(chainIdSelect.value); - const stringified = YAMLStringify(combinedConf); - outKey.value = stringified; - const { updated } = await octokit.createOrUpdateTextFile({ - owner: orgName.value, - repo: REPO_NAME, - path: KEY_PATH, - content: stringified, - message: `${crypto.randomUUID()}`, - }); + // combine configs (default + remote org wide) + const combinedConf = Object.assign(updatedConf, parsedConf); - if (updated) { - singleToggle("success", `Success: private key is updated.`); - } else { - singleToggle("success", `Success: private key is upto date.`); - } + const stringified = stringifyYAML(combinedConf); + outKey.value = stringified; + const { status } = await octokit.repos.createOrUpdateFileContents({ + owner: orgName.value, + repo: REPO_NAME, + path: KEY_PATH, + content: stringified, + message: `${crypto.randomUUID()}`, + }); - await nextStep(); - } else { - singleToggle("warn", `Warn: Please install the app first.`); - } + if (status === 201 || status === 200) { + singleToggle("success", `Success: private key is updated.`); } else { - singleToggle("error", `Error: Not an organization.`, orgName); + singleToggle("success", `Success: private key is upto date.`); } + + await nextStep(); + } else { + singleToggle("warn", `Warn: Please install the app first.`); + } +} + +async function getRepoID(octokit: Octokit, orgName: string, repoName: string): Promise { + let repositoryId: number | null = null; + + try { + const { data: repositoryInfo } = await octokit.rest.repos.get({ + owner: orgName, + repo: repoName, + }); + repositoryId = repositoryInfo.id; } catch (error) { if (!(error instanceof Error)) { - return console.error(error); + console.error(error); + return null; + } + + console.error(error.message); + try { + const { data: repoRes } = await octokit.rest.repos.createInOrg({ + org: orgName, + name: repoName, + auto_init: true, + private: true, + visibility: "private", + has_downloads: true, + }); + repositoryId = repoRes.id; + } catch (error) { + if (!(error instanceof Error)) { + console.error(error); + return null; + } + console.error(error.message); + singleToggle("error", `Error: Repo initialization failed, try again later.`); + return null; } - console.error(error); - singleToggle("error", `Error: ${error.message}`); } -}; + return repositoryId; +} -const setInputListeners = () => { +function setInputListeners() { const inputs = document.querySelectorAll("input") as NodeListOf; - inputs.forEach(input => { - input.addEventListener("input", e => { - inputClasses.forEach(className => (e.target as HTMLInputElement).classList.remove(className)); - (((e.target as HTMLInputElement).parentNode as HTMLElement).querySelector(".status-log") as HTMLElement).innerHTML = ""; + inputs.forEach((input) => { + input.addEventListener("input", (e) => { + inputClasses.forEach((className) => (e.target as HTMLInputElement).classList.remove(className)); + (((e.target as HTMLInputElement).parentNode as HTMLElement).querySelector(STATUS_LOG) as HTMLElement).innerHTML = ""; }); }); -}; +} let currentStep = 1; let signer: JsonRpcSigner | undefined = undefined; -const nextStep = async () => { +async function nextStep() { const configChainId = Number(chainIdSelect.value); const tokenNameSpan = document.getElementById("allowance + span"); @@ -318,34 +346,37 @@ const nextStep = async () => { } } - // watch for chain changes - window.ethereum.on("chainChanged", async (currentChainId: string) => { - if (configChainId === parseInt(currentChainId, 16)) { + // watch for chain changes making this generic suppresses the unknown comparison + window.ethereum.on("chainChanged", async (currentChainId: T | string) => { + if (configChainId === parseInt(currentChainId as string, 16)) { singleToggle("success", ``); } else { singleToggle("error", `Error: Please connect to ${getNetworkName(configChainId)}.`); - switchNetwork(provider, configChainId); + switchNetwork(provider, configChainId).catch((error) => { + console.error(error); + }); } }); -}; +} -const connectWallet = async (): Promise => { +async function connectWallet(): Promise { try { const provider = new ethers.providers.Web3Provider(window.ethereum, "any"); await provider.send("eth_requestAccounts", []); - const signer = provider.getSigner(); - return signer; - } catch (error: any) { - if (error?.message?.includes("missing provider")) { - singleToggle("error", "Error: Please install MetaMask."); - } else { - singleToggle("error", "Error: Please connect your wallet."); + return provider.getSigner(); + } catch (error: unknown) { + if (error instanceof Error) { + if (error?.message?.includes("missing provider")) { + singleToggle("error", "Error: Please install MetaMask."); + } else { + singleToggle("error", "Error: Please connect your wallet."); + } + return undefined; } - return undefined; } -}; +} -const switchNetwork = async (provider: ethers.providers.Web3Provider, chainId: string | number): Promise => { +async function switchNetwork(provider: ethers.providers.Web3Provider, chainId: string | number): Promise { try { // if chainId is a number then convert it to hex if (typeof chainId === "number") { @@ -357,17 +388,17 @@ const switchNetwork = async (provider: ethers.providers.Web3Provider, chainId: s } await provider.send("wallet_switchEthereumChain", [{ chainId: chainId }]); return true; - } catch (error: any) { + } catch (error: unknown) { return false; } -}; +} -const isHex = (str: string): boolean => { +function isHex(str: string): boolean { const regexp = /^[0-9a-fA-F]+$/; return regexp.test(str); -}; +} -const step1Handler = async () => { +async function step1Handler() { if (walletPrivateKey.value === "") { singleToggle("warn", `Warn: Private_Key is not set.`, walletPrivateKey); return; @@ -390,10 +421,12 @@ const step1Handler = async () => { } await sodiumEncryptedSeal(X25519_KEY, `${KEY_PREFIX}${walletPrivateKey.value}`); - setConfig(); -}; + setConfig().catch((error) => { + console.error(error); + }); +} -const step2Handler = async () => { +async function step2Handler() { try { if (!window.ethereum) { singleToggle("error", `Error: Please install MetaMask or any other Ethereum wallet.`); @@ -414,20 +447,20 @@ const step2Handler = async () => { const walletChainId = await signer.getChainId(); const configChainId = Number(chainIdSelect.value); - window.ethereum.on("chainChanged", async (currentChainId: string) => { - if (configChainId === parseInt(currentChainId, 16)) { + window.ethereum.on("chainChanged", async (currentChainId: T | string) => { + if (configChainId === parseInt(currentChainId as string, 16)) { singleToggle("success", ``); } else { singleToggle("error", `Error: Please connect to ${chainIdSelect.value}.`); - switchNetwork(provider, configChainId); + switchNetwork(provider, configChainId).catch((error) => { + console.error(error); + }); } }); - if (walletChainId !== configChainId) { - if (!(await switchNetwork(provider, configChainId))) { - singleToggle("error", `Error: Switch to the correct chain.`); - return; - } + if (walletChainId !== configChainId && !(await switchNetwork(provider, configChainId))) { + singleToggle("error", `Error: Switch to the correct chain.`); + return; } // load token contract @@ -447,13 +480,15 @@ const step2Handler = async () => { await erc20.approve(PERMIT2_ADDRESS, parseUnits(allowance.toString(), decimals)); singleToggle("success", `Success`); - } catch (error: any) { - console.error(error); - singleToggle("error", `Error: ${error.reason}`); + } catch (error: unknown) { + if (error instanceof Error) { + console.error(error); + singleToggle("error", `Error: ${error.message}`); + } } -}; +} -const init = async () => { +async function init() { if (defaultConf !== undefined) { try { defaultConf[PRIVATE_ENCRYPTED_KEY_NAME] = undefined; @@ -472,6 +507,8 @@ const init = async () => { } else { throw new Error("Default config fetch failed"); } -}; +} -init(); +init().catch((error) => { + console.error(error); +}); diff --git a/static/scripts/rewards/abis/nftRewardAbi.ts b/static/scripts/rewards/abis/nftRewardAbi.ts index a8097ed5..eb89aac1 100644 --- a/static/scripts/rewards/abis/nftRewardAbi.ts +++ b/static/scripts/rewards/abis/nftRewardAbi.ts @@ -1,3 +1,4 @@ +/* eslint-disable sonarjs/no-duplicate-string */ export const nftRewardAbi = [ { inputs: [ diff --git a/static/scripts/rewards/abis/permit2Abi.ts b/static/scripts/rewards/abis/permit2Abi.ts index 3714e250..5d170507 100644 --- a/static/scripts/rewards/abis/permit2Abi.ts +++ b/static/scripts/rewards/abis/permit2Abi.ts @@ -1,3 +1,4 @@ +// cspell: word lockdown export const permit2Abi = [ { inputs: [{ internalType: "uint256", name: "deadline", type: "uint256" }], name: "AllowanceExpired", type: "error" }, { inputs: [], name: "ExcessiveInvalidation", type: "error" }, diff --git a/static/scripts/rewards/cirip/ens-lookup.ts b/static/scripts/rewards/cirip/ens-lookup.ts index 60a0b974..67a772fd 100644 --- a/static/scripts/rewards/cirip/ens-lookup.ts +++ b/static/scripts/rewards/cirip/ens-lookup.ts @@ -4,17 +4,17 @@ import { fetchEns } from "./fetch-ens"; import { queryReverseEns } from "./query-reverse-ens"; export const UBIQUITY_RPC_ENDPOINT = "https://rpc-pay.ubq.fi/v1/mainnet"; -export const ReverseEnsInterface = new ethers.utils.Interface(abi); +export const reverseEnsInterface = new ethers.utils.Interface(abi); // addEventListener("fetch", event => { // event.respondWith(handleRequest(event.request).catch(err => new Response(err.stack, { status: 500 }))); // }); -export async function ensLookup(__address: string) { - const _address = "/".concat(__address); // quick adapter +export async function ensLookup(addr: string) { + const _address = "/".concat(addr); // quick adapter // try { - let start = _address.indexOf("/0x"); + const start = _address.indexOf("/0x"); if (start == -1) throw "No ethereum address provided."; if (_address.length <= 42 + start) { throw "Invalid ethereum address provided."; @@ -26,14 +26,14 @@ export async function ensLookup(__address: string) { try { reverseRecord = await queryReverseEns(address); const responseParsed = JSON.parse(reverseRecord).result; - let _reverseRecord = ethers.utils.defaultAbiCoder.decode([ethers.utils.ParamType.from("string[]")], responseParsed); + const _reverseRecord = ethers.utils.defaultAbiCoder.decode([ethers.utils.ParamType.from("string[]")], responseParsed); reverseRecord = _reverseRecord[0][0]; } catch (e) { console.error(e); // throw "Error contacting ethereum node. \nCause: '" + e + "'. \nResponse: " + response; } - let allDomains = await fetchEns(address); + const allDomains = await fetchEns(address); if (reverseRecord == "") { reverseRecord = null; @@ -45,12 +45,10 @@ export async function ensLookup(__address: string) { reverseRecord = null; } - let response = { + return { reverseRecord: reverseRecord, domains: allDomains, }; - - return response; // new Response(JSON.stringify(response), { // headers: { // "Content-Type": "application/json;charset=UTF-8", diff --git a/static/scripts/rewards/cirip/fetch-ens.ts b/static/scripts/rewards/cirip/fetch-ens.ts index 6a30d000..ba3ba46c 100644 --- a/static/scripts/rewards/cirip/fetch-ens.ts +++ b/static/scripts/rewards/cirip/fetch-ens.ts @@ -1,6 +1,6 @@ import { queryGraph } from "./query-graph"; -export async function fetchEns(address) { +export async function fetchEns(address: string) { const endpoint = "https://api.thegraph.com/subgraphs/name/ensdomains/ens"; const query = `{ domains(where:{owner:"${address.toLowerCase()}"}) { @@ -8,5 +8,5 @@ export async function fetchEns(address) { } }`; const res = await queryGraph(endpoint, query); - return res.data.domains.map(d => d.name); + return res.data.domains.map((domain: { name: string }) => domain.name); } diff --git a/static/scripts/rewards/cirip/query-graph.ts b/static/scripts/rewards/cirip/query-graph.ts index e485b54a..8df99d5d 100644 --- a/static/scripts/rewards/cirip/query-graph.ts +++ b/static/scripts/rewards/cirip/query-graph.ts @@ -1,4 +1,4 @@ -export async function queryGraph(endpoint, query) { +export async function queryGraph(endpoint: string | URL | Request, query: string) { const response = await fetch(endpoint, { method: "POST", headers: { diff --git a/static/scripts/rewards/cirip/query-reverse-ens.ts b/static/scripts/rewards/cirip/query-reverse-ens.ts index 4c3ad21f..5b14fd76 100644 --- a/static/scripts/rewards/cirip/query-reverse-ens.ts +++ b/static/scripts/rewards/cirip/query-reverse-ens.ts @@ -1,7 +1,7 @@ -import { ReverseEnsInterface, UBIQUITY_RPC_ENDPOINT } from "./ens-lookup"; +import { reverseEnsInterface, UBIQUITY_RPC_ENDPOINT } from "./ens-lookup"; export async function queryReverseEns(address: string) { - const data = ReverseEnsInterface.encodeFunctionData("getNames", [[address.substring(2)]]); + const data = reverseEnsInterface.encodeFunctionData("getNames", [[address.substring(2)]]); const response = await fetch(UBIQUITY_RPC_ENDPOINT, { method: "POST", diff --git a/static/scripts/rewards/helpers.ts b/static/scripts/rewards/helpers.ts index 9841e04b..a75d2fb8 100644 --- a/static/scripts/rewards/helpers.ts +++ b/static/scripts/rewards/helpers.ts @@ -1,8 +1,8 @@ import axios from "axios"; -import { NetworkIds, networkRpcs } from "./constants"; import { Contract, ethers } from "ethers"; import { erc20Abi } from "./abis"; import { JsonRpcProvider } from "@ethersproject/providers"; +import { networkRpcs } from "./constants"; type DataType = { jsonrpc: string; @@ -14,7 +14,7 @@ type DataType = { }; }; -const verifyBlock = (data: DataType) => { +function verifyBlock(data: DataType) { try { const { jsonrpc, id, result } = data; const { number, timestamp, hash } = result; @@ -22,7 +22,7 @@ const verifyBlock = (data: DataType) => { } catch (error) { return false; } -}; +} const RPC_BODY = JSON.stringify({ jsonrpc: "2.0", @@ -35,12 +35,11 @@ const RPC_HEADER = { "Content-Type": "application/json", }; -export const getErc20Contract = async (contractAddress: string, provider: JsonRpcProvider): Promise => { - const contractInstance = new ethers.Contract(contractAddress, erc20Abi, provider); - return contractInstance; -}; +export async function getErc20Contract(contractAddress: string, provider: JsonRpcProvider): Promise { + return new ethers.Contract(contractAddress, erc20Abi, provider); +} -export const getOptimalProvider = async (networkId: number) => { +export async function getOptimalProvider(networkId: number) { const promises = networkRpcs[networkId].map(async (baseURL: string) => { try { const startTime = performance.now(); @@ -52,7 +51,7 @@ export const getOptimalProvider = async (networkId: number) => { const { data } = await API.post("", RPC_BODY); const endTime = performance.now(); const latency = endTime - startTime; - if (await verifyBlock(data)) { + if (verifyBlock(data)) { return Promise.resolve({ latency, baseURL, @@ -67,8 +66,8 @@ export const getOptimalProvider = async (networkId: number) => { const { baseURL: optimalRPC } = await Promise.any(promises); return new ethers.providers.JsonRpcProvider(optimalRPC, { - name: NetworkIds[networkId], + name: optimalRPC, chainId: networkId, ensAddress: "", }); -}; +} diff --git a/static/scripts/rewards/index.ts b/static/scripts/rewards/index.ts index ae360c10..9aa754c4 100644 --- a/static/scripts/rewards/index.ts +++ b/static/scripts/rewards/index.ts @@ -11,10 +11,10 @@ import { grid } from "./the-grid"; buildElement.innerHTML = commitHash; buildElement.href = `https://github.com/ubiquity/pay.ubq.fi/commit/${commitHash}`; } - init(); + init().catch(console.error); } catch (error) { console.error(error); } -})(); +})().catch(console.error); grid(document.getElementById("grid") as HTMLElement); diff --git a/static/scripts/rewards/invalidate-component.ts b/static/scripts/rewards/invalidate-component.ts index f469bdc9..8687d329 100644 --- a/static/scripts/rewards/invalidate-component.ts +++ b/static/scripts/rewards/invalidate-component.ts @@ -2,11 +2,11 @@ const invalidateBtnInnerHTML = `
Void
`; // parse string and turn into an html entity -const parseHtml = (html: string) => { +function parseHtml(html: string) { const button = document.createElement("button"); button.id = "invalidateBtn"; button.innerHTML = html; return button.cloneNode(true) as HTMLButtonElement; -}; +} export default parseHtml(invalidateBtnInnerHTML); diff --git a/static/scripts/rewards/render-transaction/index.ts b/static/scripts/rewards/render-transaction/index.ts index 2c89a54a..1d102f85 100644 --- a/static/scripts/rewards/render-transaction/index.ts +++ b/static/scripts/rewards/render-transaction/index.ts @@ -1,6 +1,5 @@ -import { JsonRpcProvider } from "@ethersproject/providers"; -import { networkExplorers } from "../constants"; import { getOptimalProvider } from "../helpers"; +import { networkExplorers } from "../constants"; import { ClaimTx } from "./tx-type"; class AppState { diff --git a/static/scripts/rewards/render-transaction/insert-table-data.ts b/static/scripts/rewards/render-transaction/insert-table-data.ts index 9d49bbc1..565bc1ce 100644 --- a/static/scripts/rewards/render-transaction/insert-table-data.ts +++ b/static/scripts/rewards/render-transaction/insert-table-data.ts @@ -1,15 +1,15 @@ import { BigNumber, ethers } from "ethers"; import { app } from "."; -import { Erc721Permit, Erc20Permit } from "./tx-type"; +import { Erc20Permit, Erc721Permit } from "./tx-type"; -export const shortenAddress = (address: string): string => { +export function shortenAddress(address: string): string { return `${address.slice(0, 10)}...${address.slice(-8)}`; -}; +} export function insertErc20PermitTableData( permit: Erc20Permit, table: Element, - treasury: { balance: BigNumber; allowance: BigNumber; decimals: number; symbol: string }, + treasury: { balance: BigNumber; allowance: BigNumber; decimals: number; symbol: string } ): Element { const requestedAmountElement = document.getElementById("rewardAmount") as Element; renderToFields(permit.transferDetails.to, app.currentExplorerUrl); diff --git a/static/scripts/rewards/render-transaction/render-token-symbol.ts b/static/scripts/rewards/render-transaction/render-token-symbol.ts index 028ffaca..d7af472a 100644 --- a/static/scripts/rewards/render-transaction/render-token-symbol.ts +++ b/static/scripts/rewards/render-transaction/render-token-symbol.ts @@ -1,4 +1,4 @@ -import { BigNumberish, Contract, providers, utils } from "ethers"; +import { BigNumberish, Contract, utils } from "ethers"; import { getErc20Contract } from "../helpers"; import { MaxUint256 } from "@uniswap/permit2-sdk"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -43,7 +43,7 @@ export async function renderTokenSymbol({ table.setAttribute(`data-contract-loaded`, "true"); requestedAmountElement.innerHTML = `${utils.formatUnits( amount, - decimals, + decimals )} ${symbol}`; } diff --git a/static/scripts/rewards/render-transaction/render-transaction.ts b/static/scripts/rewards/render-transaction/render-transaction.ts index 78ef3884..2bded0a4 100644 --- a/static/scripts/rewards/render-transaction/render-transaction.ts +++ b/static/scripts/rewards/render-transaction/render-transaction.ts @@ -1,16 +1,16 @@ +import { Type } from "@sinclair/typebox"; +import { Value } from "@sinclair/typebox/value"; +import { networkExplorers } from "../constants"; +import { claimButton, hideClaimButton, resetClaimButton } from "../toaster"; +import { claimErc20PermitHandler, fetchTreasury, generateInvalidatePermitAdminControl } from "../web3/erc20-permit"; +import { claimErc721PermitHandler } from "../web3/erc721-permit"; +import { handleNetwork } from "../web3/wallet"; import { app } from "./index"; -import { insertErc721PermitTableData, insertErc20PermitTableData } from "./insert-table-data"; +import { insertErc20PermitTableData, insertErc721PermitTableData } from "./insert-table-data"; import { renderEnsName } from "./render-ens-name"; import { renderNftSymbol, renderTokenSymbol } from "./render-token-symbol"; import { setClaimMessage } from "./set-claim-message"; -import { networkExplorers } from "../constants"; -import { claimButton, hideClaimButton, resetClaimButton } from "../toaster"; -import { Value } from "@sinclair/typebox/value"; -import { Type } from "@sinclair/typebox"; -import { ClaimTx } from "./tx-type"; -import { handleNetwork } from "../web3/wallet"; -import { claimErc721PermitHandler } from "../web3/erc721-permit"; -import { claimErc20PermitHandler, fetchTreasury, generateInvalidatePermitAdminControl } from "../web3/erc20-permit"; +import { claimTxT } from "./tx-type"; import { removeAllEventListeners } from "./utils"; import { getOptimalProvider } from "../helpers"; import { JsonRpcProvider } from "@ethersproject/providers"; @@ -31,11 +31,11 @@ export async function init() { } try { - const claimTxs = Value.Decode(Type.Array(ClaimTx), JSON.parse(atob(base64encodedTxData))); + const claimTxs = Value.Decode(Type.Array(claimTxT), JSON.parse(atob(base64encodedTxData))); app.claimTxs = claimTxs; optimalRPC = await getOptimalProvider(app.currentTx?.networkId ?? app.claimTxs[0].networkId); - handleNetwork(app.currentTx?.networkId ?? app.claimTxs[0].networkId, optimalRPC); + handleNetwork(app.currentTx?.networkId ?? app.claimTxs[0].networkId).catch(console.error); } catch (error) { console.error(error); setClaimMessage({ type: "Error", message: `Invalid claim data passed in URL` }); @@ -43,14 +43,14 @@ export async function init() { return false; } - let detailsVisible = false; + let isDetailsVisible = false; - table.setAttribute(`data-details-visible`, detailsVisible.toString()); + table.setAttribute(`data-details-visible`, isDetailsVisible.toString()); const additionalDetails = document.getElementById(`additionalDetails`) as Element; additionalDetails.addEventListener("click", () => { - detailsVisible = !detailsVisible; - table.setAttribute(`data-details-visible`, detailsVisible.toString()); + isDetailsVisible = !isDetailsVisible; + table.setAttribute(`data-details-visible`, isDetailsVisible.toString()); }); const rewardsCount = document.getElementById("rewardsCount"); @@ -67,7 +67,7 @@ export async function init() { app.nextTx(); rewardsCount.innerHTML = `${app.currentIndex + 1}/${app.claimTxs.length} reward`; table.setAttribute(`data-claim`, "none"); - renderTransaction(optimalRPC, undefined); + renderTransaction(optimalRPC, true).catch(console.error); }); } @@ -78,7 +78,7 @@ export async function init() { app.previousTx(); rewardsCount.innerHTML = `${app.currentIndex + 1}/${app.claimTxs.length} reward`; table.setAttribute(`data-claim`, "none"); - renderTransaction(optimalRPC, undefined); + renderTransaction(optimalRPC, true).catch(console.error); }); } @@ -86,16 +86,17 @@ export async function init() { } } - renderTransaction(optimalRPC, undefined); + renderTransaction(optimalRPC, true).catch(console.error); } function setPagination(nextTxButton: Element | null, prevTxButton: Element | null) { + if (!nextTxButton || !prevTxButton) return; if (app.claimTxs.length > 1) { - prevTxButton!.classList.remove("hide-pagination"); - nextTxButton!.classList.remove("hide-pagination"); + prevTxButton.classList.remove("hide-pagination"); + nextTxButton.classList.remove("hide-pagination"); - prevTxButton!.classList.add("show-pagination"); - nextTxButton!.classList.add("show-pagination"); + prevTxButton.classList.add("show-pagination"); + nextTxButton.classList.add("show-pagination"); } } @@ -122,6 +123,8 @@ export async function renderTransaction(provider: JsonRpcProvider, nextTx?: bool return false; } + handleNetwork(app.currentTx.networkId).catch(console.error); + if (app.currentTx.type === "erc20-permit") { const treasury = await fetchTreasury(app.currentTx, provider); @@ -140,9 +143,9 @@ export async function renderTransaction(provider: JsonRpcProvider, nextTx?: bool }).catch(console.error); const toElement = document.getElementById(`rewardRecipient`) as Element; - renderEnsName({ element: toElement, address: app.currentTx.transferDetails.to }); + renderEnsName({ element: toElement, address: app.currentTx.transferDetails.to }).catch(console.error); - generateInvalidatePermitAdminControl(app.currentTx); + generateInvalidatePermitAdminControl(app.currentTx).catch(console.error); claimButton.element.addEventListener("click", claimErc20PermitHandler(app.currentTx, optimalRPC)); } else if (app.currentTx.type === "erc721-permit") { @@ -158,7 +161,7 @@ export async function renderTransaction(provider: JsonRpcProvider, nextTx?: bool }).catch(console.error); const toElement = document.getElementById(`rewardRecipient`) as Element; - renderEnsName({ element: toElement, address: app.currentTx.request.beneficiary }); + renderEnsName({ element: toElement, address: app.currentTx.request.beneficiary }).catch(console.error); claimButton.element.addEventListener("click", claimErc721PermitHandler(app.currentTx, provider)); } diff --git a/static/scripts/rewards/render-transaction/tx-type.ts b/static/scripts/rewards/render-transaction/tx-type.ts index afe0ef9a..23df1341 100644 --- a/static/scripts/rewards/render-transaction/tx-type.ts +++ b/static/scripts/rewards/render-transaction/tx-type.ts @@ -1,52 +1,52 @@ -import { Type as T, StaticDecode } from "@sinclair/typebox"; +import { StaticDecode, Type as T } from "@sinclair/typebox"; import { BigNumber } from "ethers"; -const TBigNumber = T.Transform(T.Union([T.RegExp(/^\d+$/), T.Number()])) - .Decode(value => BigNumber.from(value)) - .Encode(value => value.toString()); +const bigNumberT = T.Transform(T.Union([T.RegExp(/^\d+$/), T.Number()])) + .Decode((value) => BigNumber.from(value)) + .Encode((value) => value.toString()); -// const TNetworkId = T.Transform(T.Union([T.RegExp(/^0x\d+$/), T.Number()])) +// const networkIdT = T.Transform(T.Union([T.RegExp(/^0x\d+$/), T.Number()])) // .Decode(value => (typeof value === "number" ? "0x" + value.toString(16) : value)) // .Encode(value => value); -const TNetworkId = T.Number(); +const networkIdT = T.Number(); -const TAddress = T.Transform(T.RegExp(/^0x[a-fA-F0-9]{40}$/)) - .Decode(value => value.toLowerCase()) - .Encode(value => value); +const addressT = T.Transform(T.RegExp(/^0x[a-fA-F0-9]{40}$/)) + .Decode((value) => value.toLowerCase()) + .Encode((value) => value); -const TSignature = T.Transform(T.RegExp(/^0x[a-fA-F0-9]+$/)) - .Decode(value => value.toLowerCase()) - .Encode(value => value); +const signatureT = T.Transform(T.RegExp(/^0x[a-fA-F0-9]+$/)) + .Decode((value) => value.toLowerCase()) + .Encode((value) => value); -const Erc20Permit = T.Object({ +const erc20PermitT = T.Object({ type: T.Literal("erc20-permit"), permit: T.Object({ permitted: T.Object({ - token: TAddress, - amount: TBigNumber, + token: addressT, + amount: bigNumberT, }), - nonce: TBigNumber, - deadline: TBigNumber, + nonce: bigNumberT, + deadline: bigNumberT, }), transferDetails: T.Object({ - to: TAddress, - requestedAmount: TBigNumber, + to: addressT, + requestedAmount: bigNumberT, }), - owner: TAddress, - signature: TSignature, - networkId: TNetworkId, + owner: addressT, + signature: signatureT, + networkId: networkIdT, }); -export type Erc20Permit = StaticDecode; +export type Erc20Permit = StaticDecode; -const Erc721Permit = T.Object({ +const erc721Permit = T.Object({ type: T.Literal("erc721-permit"), request: T.Object({ - beneficiary: TAddress, - deadline: TBigNumber, + beneficiary: addressT, + deadline: bigNumberT, keys: T.Array(T.String()), - nonce: TBigNumber, + nonce: bigNumberT, values: T.Array(T.String()), }), nftMetadata: T.Object({ @@ -56,13 +56,13 @@ const Erc721Permit = T.Object({ GITHUB_USERNAME: T.String(), GITHUB_CONTRIBUTION_TYPE: T.String(), }), - nftAddress: TAddress, - networkId: TNetworkId, - signature: TSignature, + nftAddress: addressT, + networkId: networkIdT, + signature: signatureT, }); -export type Erc721Permit = StaticDecode; +export type Erc721Permit = StaticDecode; -export const ClaimTx = T.Union([Erc20Permit, Erc721Permit]); +export const claimTxT = T.Union([erc20PermitT, erc721Permit]); -export type ClaimTx = StaticDecode; +export type ClaimTx = StaticDecode; diff --git a/static/scripts/rewards/the-grid.ts b/static/scripts/rewards/the-grid.ts index af6589f8..bd9832eb 100644 --- a/static/scripts/rewards/the-grid.ts +++ b/static/scripts/rewards/the-grid.ts @@ -21,6 +21,7 @@ export function grid(node = document.body) { } `; + // cspell:ignore mediump const fragmentShaderSource = ` precision mediump float; @@ -53,6 +54,10 @@ export function grid(node = document.body) { // Define shader creation function function createShader(gl: WebGLRenderingContext, type: number, source: string) { const shader = gl.createShader(type); + if (!shader) { + console.error("An error occurred creating the shaders"); + return null; + } gl.shaderSource(shader, source); gl.compileShader(shader); if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { @@ -65,10 +70,23 @@ export function grid(node = document.body) { // Create vertex and fragment shaders const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource); + if (!vertexShader) { + console.error("An error occurred creating the vertex shader"); + return; + } const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource); + if (!fragmentShader) { + console.error("An error occurred creating the fragment shader"); + return; + } // Create program, attach shaders, and link const program = gl.createProgram(); + if (!program) { + console.error("An error occurred creating the program"); + return; + } + gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); @@ -98,8 +116,8 @@ export function grid(node = document.body) { // Resize function function resizeCanvasToDisplaySize(canvas: HTMLCanvasElement) { // Lookup the size the browser is displaying the canvas. - var displayWidth = window.innerWidth; - var displayHeight = window.innerHeight; + const displayWidth = window.innerWidth; + const displayHeight = window.innerHeight; // Check if the canvas is not the same size. if (canvas.width != displayWidth || canvas.height != displayHeight) { diff --git a/static/scripts/rewards/toaster.ts b/static/scripts/rewards/toaster.ts index 702783c2..9294e720 100644 --- a/static/scripts/rewards/toaster.ts +++ b/static/scripts/rewards/toaster.ts @@ -73,14 +73,16 @@ export function hideClaimButton() { claimButton.element.classList.remove("show-cl"); } -export function errorToast(error: any, errorMessage?: string) { +type Err = { stack?: unknown; reason?: string } extends Error ? Error : { stack?: unknown; reason?: string }; + +export function errorToast(error: Err, errorMessage?: string) { delete error.stack; - let ErrorData = JSON.stringify(error, null, 2); + const errorData = JSON.stringify(error, null, 2); if (errorMessage) { toaster.create("error", errorMessage); } else if (error?.reason) { // parse error data to get error message - const parsedError = JSON.parse(ErrorData); + const parsedError = JSON.parse(errorData); const _errorMessage = parsedError?.error?.message ?? parsedError?.reason; toaster.create("error", _errorMessage); } diff --git a/static/scripts/rewards/web3/erc20-permit.ts b/static/scripts/rewards/web3/erc20-permit.ts index 4b71ef4b..014f68fb 100644 --- a/static/scripts/rewards/web3/erc20-permit.ts +++ b/static/scripts/rewards/web3/erc20-permit.ts @@ -1,5 +1,5 @@ import { BigNumber, BigNumberish, ethers } from "ethers"; -import { erc20Abi, permit2Abi } from "../abis"; +import { permit2Abi } from "../abis"; import { permit2Address } from "../constants"; import { getErc20Contract, getOptimalProvider } from "../helpers"; import { Erc20Permit } from "../render-transaction/tx-type"; @@ -12,7 +12,7 @@ import { tokens } from "../render-transaction/render-token-symbol"; export async function fetchTreasury( permit: Erc20Permit, - provider: JsonRpcProvider, + provider: JsonRpcProvider ): Promise<{ balance: BigNumber; allowance: BigNumber; decimals: number; symbol: string }> { try { const tokenAddress = permit.permit.permitted.token.toLowerCase(); @@ -36,7 +36,7 @@ export async function fetchTreasury( return { balance, allowance, decimals, symbol }; } - } catch (error: any) { + } catch (error: unknown) { return { balance: BigNumber.from(-1), allowance: BigNumber.from(-1), decimals: -1, symbol: "" }; } } @@ -62,18 +62,20 @@ export function claimErc20PermitHandler(permit: Erc20Permit, provider: JsonRpcPr console.log(receipt.transactionHash); // @TODO: post to database claimButton.element.removeEventListener("click", handler); - renderTransaction(provider); - } catch (error: any) { - console.log(error); - errorToast(error, error.message); - resetClaimButton(); + renderTransaction(provider).catch(console.error); + } catch (error: unknown) { + if (error instanceof Error) { + console.log(error); + errorToast(error, error.message); + resetClaimButton(); + } } }; } export async function checkPermitClaimable(permit: Erc20Permit, signer: ethers.providers.JsonRpcSigner | null, provider: JsonRpcProvider) { - const claimed = await isNonceClaimed(permit); - if (claimed) { + const isClaimed = await isNonceClaimed(permit); + if (isClaimed) { toaster.create("error", `Your reward for this task has already been claimed or invalidated.`); return false; } @@ -85,15 +87,15 @@ export async function checkPermitClaimable(permit: Erc20Permit, signer: ethers.p const { balance, allowance } = await fetchTreasury(permit, provider); const permitted = BigNumber.from(permit.permit.permitted.amount); - const solvent = balance.gte(permitted); - const allowed = allowance.gte(permitted); + const isSolvent = balance.gte(permitted); + const isAllowed = allowance.gte(permitted); - if (!solvent) { - toaster.create("error", `Not enough funds on funding wallet to collect this reward. Please let the funder know.`); + if (!isSolvent) { + toaster.create("error", `Not enough funds on funding wallet to collect this reward. Please let the financier know.`); return false; } - if (!allowed) { - toaster.create("error", `Not enough allowance on the funding wallet to collect this reward. Please let the funder know.`); + if (!isAllowed) { + toaster.create("error", `Not enough allowance on the funding wallet to collect this reward. Please let the financier know.`); return false; } @@ -130,15 +132,18 @@ export async function generateInvalidatePermitAdminControl(permit: Erc20Permit) if (!signer) { return; } - const claimed = await isNonceClaimed(permit); - if (claimed) { + const isClaimed = await isNonceClaimed(permit); + if (isClaimed) { toaster.create("error", `This reward has already been claimed or invalidated.`); return; } await invalidateNonce(signer, permit.permit.nonce); - } catch (error: any) { - toaster.create("error", `${error.reason ?? error.message ?? "Unknown error"}`); - return; + } catch (error: unknown) { + if (error instanceof Error) { + console.log(error); + errorToast(error, error.message); + return; + } } toaster.create("info", "Nonce invalidation transaction sent"); }); diff --git a/static/scripts/rewards/web3/erc721-permit.ts b/static/scripts/rewards/web3/erc721-permit.ts index 405a447d..0dafff68 100644 --- a/static/scripts/rewards/web3/erc721-permit.ts +++ b/static/scripts/rewards/web3/erc721-permit.ts @@ -25,8 +25,8 @@ export function claimErc721PermitHandler(permit: Erc721Permit, provider: JsonRpc return; } - const reedemed = await isNonceRedeemed(permit, provider); - if (reedemed) { + const isRedeemed = await isNonceRedeemed(permit, provider); + if (isRedeemed) { toaster.create("error", `This NFT has already been redeemed.`); resetClaimButton(); return; @@ -44,11 +44,16 @@ export function claimErc721PermitHandler(permit: Erc721Permit, provider: JsonRpc claimButton.element.removeEventListener("click", claimButtonHandler); - renderTransaction(provider, true); - } catch (error: any) { - console.error(error); - errorToast(error, error.message ?? error); - resetClaimButton(); + renderTransaction(provider, true).catch((error) => { + console.error(error); + toaster.create("error", `Error rendering transaction: ${error.message}`); + }); + } catch (error: unknown) { + if (error instanceof Error) { + console.error(error); + errorToast(error, error.message ?? error); + resetClaimButton(); + } } }; } diff --git a/static/scripts/rewards/web3/wallet.ts b/static/scripts/rewards/web3/wallet.ts index e698fd6e..34766b85 100644 --- a/static/scripts/rewards/web3/wallet.ts +++ b/static/scripts/rewards/web3/wallet.ts @@ -1,8 +1,8 @@ +import { JsonRpcSigner } from "@ethersproject/providers"; import { ethers } from "ethers"; -import { claimButton, loadingClaimButton, resetClaimButton, toaster } from "../toaster"; import { getNetworkName, networkCurrencies, networkExplorers, networkRpcs } from "../constants"; import invalidateButton from "../invalidate-component"; -import { JsonRpcProvider, JsonRpcSigner } from "@ethersproject/providers"; +import { claimButton, loadingClaimButton, resetClaimButton, toaster } from "../toaster"; export async function connectWallet(): Promise { try { @@ -11,19 +11,21 @@ export async function connectWallet(): Promise { const signer = provider.getSigner(); resetClaimButton(); return signer; - } catch (error: any) { - if (error?.message?.includes("missing provider")) { - toaster.create("info", "Please use a web3 enabled browser to collect this reward."); - claimButton.element.disabled = true; - } else { - toaster.create("info", "Please connect your wallet to collect this reward."); - claimButton.element.disabled = true; + } catch (error: unknown) { + if (error instanceof Error) { + if (error?.message?.includes("missing provider")) { + toaster.create("info", "Please use a web3 enabled browser to collect this reward."); + claimButton.element.disabled = true; + } else { + toaster.create("info", "Please connect your wallet to collect this reward."); + claimButton.element.disabled = true; + } } return null; } } -export async function handleNetwork(desiredNetworkId: number, provider: JsonRpcProvider) { +export async function handleNetwork(desiredNetworkId: number) { const web3provider = new ethers.providers.Web3Provider(window.ethereum); if (!web3provider || !web3provider.provider.isMetaMask) { toaster.create("info", "Please connect to MetaMask."); @@ -31,10 +33,10 @@ export async function handleNetwork(desiredNetworkId: number, provider: JsonRpcP invalidateButton.disabled = true; } - const currentNetworkId = provider.network.chainId; + const currentNetworkId = (await web3provider.getNetwork()).chainId; // watch for network changes - window.ethereum.on("chainChanged", newNetworkId => handleIfOnCorrectNetwork(parseInt(newNetworkId, 16), desiredNetworkId)); + window.ethereum.on("chainChanged", (newNetworkId: T | string) => handleIfOnCorrectNetwork(parseInt(newNetworkId as string, 16), desiredNetworkId)); // if its not on ethereum mainnet, gnosis, or goerli, display error notOnCorrectNetwork(currentNetworkId, desiredNetworkId, web3provider); @@ -51,7 +53,10 @@ function notOnCorrectNetwork(currentNetworkId: number, desiredNetworkId: number, } loadingClaimButton(false); invalidateButton.disabled = true; - switchNetwork(web3provider, desiredNetworkId); + switchNetwork(web3provider, desiredNetworkId).catch((error) => { + console.error(error); + toaster.create("error", `Please switch to the ${networkName} network to claim this reward.`); + }); } } @@ -70,9 +75,10 @@ export async function switchNetwork(provider: ethers.providers.Web3Provider, net try { await provider.send("wallet_switchEthereumChain", [{ chainId: "0x" + networkId.toString(16) }]); return true; - } catch (error: any) { + } catch (error: unknown) { // Add network if it doesn't exist. - if (error.code == 4902) { + const code = (error as { code: number }).code; + if (code == 4902) { return await addNetwork(provider, networkId); } return false; @@ -91,7 +97,7 @@ export async function addNetwork(provider: ethers.providers.Web3Provider, networ }, ]); return true; - } catch (error: any) { + } catch (error: unknown) { return false; } } diff --git a/static/style.css b/static/style.css new file mode 100644 index 00000000..3bbb3f0f --- /dev/null +++ b/static/style.css @@ -0,0 +1,16 @@ +body { + font-family: "Proxima Nova", "Ubiquity Nova", sans-serif; + background-color: #06061aff; + color: #fff; + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABYWlDQ1BrQ0dDb2xvclNwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACKIv64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+whYTUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgYGRiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeSAYG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAABigAwAEAAAAAQAAABgAAAAAwf1XlwAAACNJREFUSA3t0IEAAAAMBKFHm7/UTaQQWnXDgAEDBgwYMGDgAXaJAz4RVVHYAAAAAElFTkSuQmCC"); +} +@font-face { + font-family: "Ubiquity Nova"; + font-style: normal; + font-weight: 400; + src: url(./fonts/ubiquity-nova-standard.eot); + src: + url(./fonts/ubiquity-nova-standard.eot#iefix) format("embedded-opentype"), + url(./fonts/ubiquity-nova-standard.woff) format("woff"), + url(./fonts/ubiquity-nova-standard.ttf) format("truetype"); +} diff --git a/static/styles/fa.css b/static/styles/fa.css index 6b768402..4568cf75 100644 --- a/static/styles/fa.css +++ b/static/styles/fa.css @@ -6786,7 +6786,9 @@ font-style: normal; font-weight: 400; font-display: block; - src: url(./webfonts/fa-brands-400.woff2) format("woff2"), url(./webfonts/fa-brands-400.ttf) format("truetype"); + src: + url(./webfonts/fa-brands-400.woff2) format("woff2"), + url(./webfonts/fa-brands-400.ttf) format("truetype"); } .fa-brands, @@ -8698,7 +8700,9 @@ font-style: normal; font-weight: 400; font-display: block; - src: url(./webfonts/fa-regular-400.woff2) format("woff2"), url(./webfonts/fa-regular-400.ttf) format("truetype"); + src: + url(./webfonts/fa-regular-400.woff2) format("woff2"), + url(./webfonts/fa-regular-400.ttf) format("truetype"); } .fa-regular, @@ -8717,7 +8721,9 @@ font-style: normal; font-weight: 900; font-display: block; - src: url(./webfonts/fa-solid-900.woff2) format("woff2"), url(./webfonts/fa-solid-900.ttf) format("truetype"); + src: + url(./webfonts/fa-solid-900.woff2) format("woff2"), + url(./webfonts/fa-solid-900.ttf) format("truetype"); } .fa-solid, @@ -8729,39 +8735,51 @@ font-family: "Font Awesome 5 Brands"; font-display: block; font-weight: 400; - src: url(./webfonts/fa-brands-400.woff2) format("woff2"), url(./webfonts/fa-brands-400.ttf) format("truetype"); + src: + url(./webfonts/fa-brands-400.woff2) format("woff2"), + url(./webfonts/fa-brands-400.ttf) format("truetype"); } @font-face { font-family: "Font Awesome 5 Free"; font-display: block; font-weight: 900; - src: url(./webfonts/fa-solid-900.woff2) format("woff2"), url(./webfonts/fa-solid-900.ttf) format("truetype"); + src: + url(./webfonts/fa-solid-900.woff2) format("woff2"), + url(./webfonts/fa-solid-900.ttf) format("truetype"); } @font-face { font-family: "Font Awesome 5 Free"; font-display: block; font-weight: 400; - src: url(./webfonts/fa-regular-400.woff2) format("woff2"), url(./webfonts/fa-regular-400.ttf) format("truetype"); + src: + url(./webfonts/fa-regular-400.woff2) format("woff2"), + url(./webfonts/fa-regular-400.ttf) format("truetype"); } @font-face { font-family: "FontAwesome"; font-display: block; - src: url(./webfonts/fa-solid-900.woff2) format("woff2"), url(./webfonts/fa-solid-900.ttf) format("truetype"); + src: + url(./webfonts/fa-solid-900.woff2) format("woff2"), + url(./webfonts/fa-solid-900.ttf) format("truetype"); } @font-face { font-family: "FontAwesome"; font-display: block; - src: url(./webfonts/fa-brands-400.woff2) format("woff2"), url(./webfonts/fa-brands-400.ttf) format("truetype"); + src: + url(./webfonts/fa-brands-400.woff2) format("woff2"), + url(./webfonts/fa-brands-400.ttf) format("truetype"); } @font-face { font-family: "FontAwesome"; font-display: block; - src: url(./webfonts/fa-regular-400.woff2) format("woff2"), url(./webfonts/fa-regular-400.ttf) format("truetype"); + src: + url(./webfonts/fa-regular-400.woff2) format("woff2"), + url(./webfonts/fa-regular-400.ttf) format("truetype"); unicode-range: u+f003, u+f006, u+f014, u+f016-f017, u+f01a-f01b, u+f01d, u+f022, u+f03e, u+f044, u+f046, u+f05c-f05d, u+f06e, u+f070, u+f087-f088, u+f08a, u+f094, u+f096-f097, u+f09d, u+f0a0, u+f0a2, u+f0a4-f0a7, u+f0c5, u+f0c7, u+f0e5-f0e6, u+f0eb, u+f0f6-f0f8, u+f10c, u+f114-f115, u+f118-f11a, u+f11c-f11d, u+f133, u+f147, u+f14e, u+f150-f152, u+f185-f186, u+f18e, u+f190-f192, u+f196, u+f1c1-f1c9, u+f1d9, u+f1db, u+f1e3, u+f1ea, u+f1f7, u+f1f9, u+f20a, @@ -8772,7 +8790,9 @@ @font-face { font-family: "FontAwesome"; font-display: block; - src: url(./webfonts/fa-v4compatibility.woff2) format("woff2"), url(./webfonts/fa-v4compatibility.ttf) format("truetype"); + src: + url(./webfonts/fa-v4compatibility.woff2) format("woff2"), + url(./webfonts/fa-v4compatibility.ttf) format("truetype"); unicode-range: u+f041, u+f047, u+f065-f066, u+f07d-f07e, u+f080, u+f08b, u+f08e, u+f090, u+f09a, u+f0ac, u+f0ae, u+f0b2, u+f0d0, u+f0d6, u+f0e4, u+f0ec, u+f10a-f10b, u+f123, u+f13e, u+f148-f149, u+f14c, u+f156, u+f15e, u+f160-f161, u+f163, u+f175-f178, u+f195, u+f1f8, u+f219, u+f27a; } diff --git a/static/styles/proxima.css b/static/styles/proxima.css index 2715698f..123ae363 100644 --- a/static/styles/proxima.css +++ b/static/styles/proxima.css @@ -3,7 +3,9 @@ font-style: normal; font-weight: 100; src: url(./proxima/2B04A9_A_0.eot); - src: url(./proxima/2B04A9_A_0.eot#iefix) format("embedded-opentype"), url(./proxima/2B04A9_A_0.woff) format("woff"), + src: + url(./proxima/2B04A9_A_0.eot#iefix) format("embedded-opentype"), + url(./proxima/2B04A9_A_0.woff) format("woff"), url(./proxima/2B04A9_A_0.ttf) format("truetype"); } @@ -12,7 +14,9 @@ font-style: normal; font-weight: 200; src: url(./proxima/2B04A9_B_0.eot); - src: url(./proxima/2B04A9_B_0.eot#iefix) format("embedded-opentype"), url(./proxima/2B04A9_B_0.woff) format("woff"), + src: + url(./proxima/2B04A9_B_0.eot#iefix) format("embedded-opentype"), + url(./proxima/2B04A9_B_0.woff) format("woff"), url(./proxima/2B04A9_B_0.ttf) format("truetype"); } @@ -21,7 +25,9 @@ font-style: normal; font-weight: 400; src: url(./proxima/2B04A9_E_0.eot); - src: url(./proxima/2B04A9_E_0.eot#iefix) format("embedded-opentype"), url(./proxima/2B04A9_E_0.woff) format("woff"), + src: + url(./proxima/2B04A9_E_0.eot#iefix) format("embedded-opentype"), + url(./proxima/2B04A9_E_0.woff) format("woff"), url(./proxima/2B04A9_E_0.ttf) format("truetype"); } @@ -30,7 +36,9 @@ font-style: italic; font-weight: 400; src: url(./proxima/2B04A9_C_0.eot); - src: url(./proxima/2B04A9_C_0.eot#iefix) format("embedded-opentype"), url(./proxima/2B04A9_C_0.woff) format("woff"), + src: + url(./proxima/2B04A9_C_0.eot#iefix) format("embedded-opentype"), + url(./proxima/2B04A9_C_0.woff) format("woff"), url(./proxima/2B04A9_C_0.ttf) format("truetype"); } @@ -39,6 +47,8 @@ font-style: normal; font-weight: 700; src: url(./proxima/2B04A9_D_0.eot); - src: url(./proxima/2B04A9_D_0.eot#iefix) format("embedded-opentype"), url(./proxima/2B04A9_D_0.woff) format("woff"), + src: + url(./proxima/2B04A9_D_0.eot#iefix) format("embedded-opentype"), + url(./proxima/2B04A9_D_0.woff) format("woff"), url(./proxima/2B04A9_D_0.ttf) format("truetype"); } diff --git a/static/styles/rewards/pay.css b/static/styles/rewards/pay.css index 7e5b9511..d1d90169 100644 --- a/static/styles/rewards/pay.css +++ b/static/styles/rewards/pay.css @@ -1,6 +1,17 @@ * { -webkit-text-size-adjust: 100%; - font-family: "Ubiquity Nova", FT Base, -apple-system, system-ui, BlinkMacSystemFont, SF Pro Text, Segoe UI, Roboto, Helvetica, Arial, sans-serif; + font-family: + "Ubiquity Nova", + FT Base, + -apple-system, + system-ui, + BlinkMacSystemFont, + SF Pro Text, + Segoe UI, + Roboto, + Helvetica, + Arial, + sans-serif; line-height: 1; padding: 0; margin: 0; diff --git a/tsconfig.json b/tsconfig.json index 18496e08..01640a19 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,27 +1,101 @@ { "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ /* Projects */ - + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "lib": ["esnext", "dom", "dom.iterable"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, - + "target": "ESNext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ "module": "commonjs" /* Specify what module code is generated. */, - "types": ["node"] /* Specify type package names to be included without being referenced in a source file. */, - + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + "resolveJsonModule": true /* Enable importing .json files. */, + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ /* Emit */ - + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ "strict": true /* Enable all strict type-checking options. */, - + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ } } diff --git a/yarn.lock b/yarn.lock index 982dc37f..6fb179ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,225 +2,824 @@ # yarn lockfile v1 -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@babel/code-frame@^7.0.0": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@commitlint/cli@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-18.6.1.tgz#78bffdfa00d6f01425d53096954993d83f2b343d" + integrity sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw== + dependencies: + "@commitlint/format" "^18.6.1" + "@commitlint/lint" "^18.6.1" + "@commitlint/load" "^18.6.1" + "@commitlint/read" "^18.6.1" + "@commitlint/types" "^18.6.1" + execa "^5.0.0" + lodash.isfunction "^3.0.9" + resolve-from "5.0.0" + resolve-global "1.0.0" + yargs "^17.0.0" + +"@commitlint/config-conventional@^18.6.2": + version "18.6.2" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-18.6.2.tgz#617f3ee761578040cade530631058699642cbd78" + integrity sha512-PcgSYg1AKGQIwDQKbaHtJsfqYy4uJTC7crLVZ83lfjcPaec4Pry2vLeaWej7ao2KsT20l9dWoMPpEGg8LWdUuA== + dependencies: + "@commitlint/types" "^18.6.1" + conventional-changelog-conventionalcommits "^7.0.2" + +"@commitlint/config-validator@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/config-validator/-/config-validator-18.6.1.tgz#e0d71a99c984a68586c7ae7afd3f52342022fae8" + integrity sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw== + dependencies: + "@commitlint/types" "^18.6.1" + ajv "^8.11.0" + +"@commitlint/ensure@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-18.6.1.tgz#17141e083200ca94d8480dc23b0e8f8b1fd37b7f" + integrity sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ== + dependencies: + "@commitlint/types" "^18.6.1" + lodash.camelcase "^4.3.0" + lodash.kebabcase "^4.1.1" + lodash.snakecase "^4.1.1" + lodash.startcase "^4.4.0" + lodash.upperfirst "^4.3.1" + +"@commitlint/execute-rule@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-18.6.1.tgz#18175e043fe6fb5fceea7b8530316c644f93dfe6" + integrity sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg== + +"@commitlint/format@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-18.6.1.tgz#5f2b8b3ae4d8d80bd9239178e97df63e5b8d280a" + integrity sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg== + dependencies: + "@commitlint/types" "^18.6.1" + chalk "^4.1.0" + +"@commitlint/is-ignored@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-18.6.1.tgz#4ee08ba91ff3defb06e0ef19259a9c6734a8d06e" + integrity sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA== + dependencies: + "@commitlint/types" "^18.6.1" + semver "7.6.0" + +"@commitlint/lint@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-18.6.1.tgz#fe3834636c99ee14534a8eb3832831ac362e9fd8" + integrity sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ== + dependencies: + "@commitlint/is-ignored" "^18.6.1" + "@commitlint/parse" "^18.6.1" + "@commitlint/rules" "^18.6.1" + "@commitlint/types" "^18.6.1" + +"@commitlint/load@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-18.6.1.tgz#fb79ed7ee8b5897a9b5c274c1e24eda9162df816" + integrity sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA== + dependencies: + "@commitlint/config-validator" "^18.6.1" + "@commitlint/execute-rule" "^18.6.1" + "@commitlint/resolve-extends" "^18.6.1" + "@commitlint/types" "^18.6.1" + chalk "^4.1.0" + cosmiconfig "^8.3.6" + cosmiconfig-typescript-loader "^5.0.0" + lodash.isplainobject "^4.0.6" + lodash.merge "^4.6.2" + lodash.uniq "^4.5.0" + resolve-from "^5.0.0" + +"@commitlint/message@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-18.6.1.tgz#107bd40923ad23d2de56c92a68b179ebfb7e314e" + integrity sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw== + +"@commitlint/parse@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-18.6.1.tgz#2946b814125e907b9c4d63d3e71d0c1b54b30b62" + integrity sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ== + dependencies: + "@commitlint/types" "^18.6.1" + conventional-changelog-angular "^7.0.0" + conventional-commits-parser "^5.0.0" + +"@commitlint/read@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-18.6.1.tgz#8c138311ed9749427920c369f6276be136f2aa50" + integrity sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w== + dependencies: + "@commitlint/top-level" "^18.6.1" + "@commitlint/types" "^18.6.1" + git-raw-commits "^2.0.11" + minimist "^1.2.6" + +"@commitlint/resolve-extends@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-18.6.1.tgz#f0572c682fc24dbabe2e0f42873261e0fa42c91a" + integrity sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ== + dependencies: + "@commitlint/config-validator" "^18.6.1" + "@commitlint/types" "^18.6.1" + import-fresh "^3.0.0" + lodash.mergewith "^4.6.2" + resolve-from "^5.0.0" + resolve-global "^1.0.0" + +"@commitlint/rules@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-18.6.1.tgz#da25aeffe6c0e1c7625e44f46089fb8860986caf" + integrity sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew== + dependencies: + "@commitlint/ensure" "^18.6.1" + "@commitlint/message" "^18.6.1" + "@commitlint/to-lines" "^18.6.1" + "@commitlint/types" "^18.6.1" + execa "^5.0.0" + +"@commitlint/to-lines@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-18.6.1.tgz#d28827a4a540c98eea1aae31dafd66f80b2f1b9e" + integrity sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q== + +"@commitlint/top-level@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-18.6.1.tgz#429fcb985e3beaba9b17e05c0ae61926c647baf0" + integrity sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw== + dependencies: + find-up "^5.0.0" + +"@commitlint/types@^18.6.1": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-18.6.1.tgz#7eb3ab2d799d9166fbb98b96b0744581e59a4ad4" + integrity sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg== + dependencies: + chalk "^4.1.0" + +"@cspell/cspell-bundled-dicts@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.3.2.tgz#649ed168a72cb49a7d83f3840ab6933a8beba68d" + integrity sha512-3ubOgz1/MDixJbq//0rQ2omB3cSdhVJDviERZeiREGz4HOq84aaK1Fqbw5SjNZHvhpoq+AYXm6kJbIAH8YhKgg== + dependencies: + "@cspell/dict-ada" "^4.0.2" + "@cspell/dict-aws" "^4.0.1" + "@cspell/dict-bash" "^4.1.3" + "@cspell/dict-companies" "^3.0.29" + "@cspell/dict-cpp" "^5.0.10" + "@cspell/dict-cryptocurrencies" "^5.0.0" + "@cspell/dict-csharp" "^4.0.2" + "@cspell/dict-css" "^4.0.12" + "@cspell/dict-dart" "^2.0.3" + "@cspell/dict-django" "^4.1.0" + "@cspell/dict-docker" "^1.1.7" + "@cspell/dict-dotnet" "^5.0.0" + "@cspell/dict-elixir" "^4.0.3" + "@cspell/dict-en-common-misspellings" "^2.0.0" + "@cspell/dict-en-gb" "1.1.33" + "@cspell/dict-en_us" "^4.3.13" + "@cspell/dict-filetypes" "^3.0.3" + "@cspell/dict-fonts" "^4.0.0" + "@cspell/dict-fsharp" "^1.0.1" + "@cspell/dict-fullstack" "^3.1.5" + "@cspell/dict-gaming-terms" "^1.0.4" + "@cspell/dict-git" "^3.0.0" + "@cspell/dict-golang" "^6.0.5" + "@cspell/dict-haskell" "^4.0.1" + "@cspell/dict-html" "^4.0.5" + "@cspell/dict-html-symbol-entities" "^4.0.0" + "@cspell/dict-java" "^5.0.6" + "@cspell/dict-k8s" "^1.0.2" + "@cspell/dict-latex" "^4.0.0" + "@cspell/dict-lorem-ipsum" "^4.0.0" + "@cspell/dict-lua" "^4.0.3" + "@cspell/dict-makefile" "^1.0.0" + "@cspell/dict-node" "^4.0.3" + "@cspell/dict-npm" "^5.0.14" + "@cspell/dict-php" "^4.0.5" + "@cspell/dict-powershell" "^5.0.3" + "@cspell/dict-public-licenses" "^2.0.5" + "@cspell/dict-python" "^4.1.11" + "@cspell/dict-r" "^2.0.1" + "@cspell/dict-ruby" "^5.0.2" + "@cspell/dict-rust" "^4.0.1" + "@cspell/dict-scala" "^5.0.0" + "@cspell/dict-software-terms" "^3.3.15" + "@cspell/dict-sql" "^2.1.3" + "@cspell/dict-svelte" "^1.0.2" + "@cspell/dict-swift" "^2.0.1" + "@cspell/dict-typescript" "^3.1.2" + "@cspell/dict-vue" "^3.0.0" + +"@cspell/cspell-json-reporter@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.3.2.tgz#314f7b7deb465a7b94b03405c3498d9b96d410ab" + integrity sha512-gHSz4jXMJPcxx+lOGfXhHuoyenAWQ8PVA/atHFrWYKo1LzKTbpkEkrsDnlX8QNJubc3EMH63Uy+lOIaFDVyHiQ== + dependencies: + "@cspell/cspell-types" "8.3.2" + +"@cspell/cspell-pipe@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-8.3.2.tgz#72b986c6c03ed9894d5ddafdcb435973336216b9" + integrity sha512-GZmDwvQGOjQi3IjD4k9xXeVTDANczksOsgVKb3v2QZk9mR4Qj8c6Uarjd4AgSiIhu/wBliJfzr5rWFJu4X2VfQ== + +"@cspell/cspell-resolver@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-resolver/-/cspell-resolver-8.3.2.tgz#e4a981ed8fc2029804d8fa5847e47934a26c5c86" + integrity sha512-w2Tmb95bzdEz9L4W5qvsP5raZbyEzKL7N2ksU/+yh8NEJcTuExmAl/nMnb3aIk7m2b+kPHnMOcJuwfUMLmyv4A== + dependencies: + global-directory "^4.0.1" + +"@cspell/cspell-service-bus@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-service-bus/-/cspell-service-bus-8.3.2.tgz#b1c6620232c22c0a7c8b68051e524963285f4768" + integrity sha512-skTHNyVi74//W/O+f4IauDhm6twA9S2whkylonsIzPxEl4Pn3y2ZEMXNki/MWUwZfDIzKKSxlcREH61g7zCvhg== + +"@cspell/cspell-types@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-8.3.2.tgz#35a6d0f1a4c7c2a8a5275bcd41dacf85618f44c3" + integrity sha512-qS/gWd9ItOrN6ZX5pwC9lJjnBoyiAyhxYq0GUXuV892LQvwrBmECGk6KhsA1lPW7JJS7o57YTAS1jmXnmXMEpg== + +"@cspell/dict-ada@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-ada/-/dict-ada-4.0.2.tgz#8da2216660aeb831a0d9055399a364a01db5805a" + integrity sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA== + +"@cspell/dict-aws@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-4.0.1.tgz#a0e758531ae81792b928a3f406618296291a658a" + integrity sha512-NXO+kTPQGqaaJKa4kO92NAXoqS+i99dQzf3/L1BxxWVSBS3/k1f3uhmqIh7Crb/n22W793lOm0D9x952BFga3Q== + +"@cspell/dict-bash@^4.1.3": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-4.1.3.tgz#25fba40825ac10083676ab2c777e471c3f71b36e" + integrity sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw== + +"@cspell/dict-companies@^3.0.29": + version "3.0.31" + resolved "https://registry.yarnpkg.com/@cspell/dict-companies/-/dict-companies-3.0.31.tgz#f0dacabc5308096c0f12db8a8b802ece604d6bf7" + integrity sha512-hKVpV/lcGKP4/DpEPS8P4osPvFH/YVLJaDn9cBIOH6/HSmL5LbFgJNKpMGaYRbhm2FEX56MKE3yn/MNeNYuesQ== + +"@cspell/dict-cpp@^5.0.10": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-cpp/-/dict-cpp-5.1.3.tgz#c0c34ccdecc3ff954877a56dbbf07a7bf53b218e" + integrity sha512-sqnriXRAInZH9W75C+APBh6dtben9filPqVbIsiRMUXGg+s02ekz0z6LbS7kXeJ5mD2qXoMLBrv13qH2eIwutQ== + +"@cspell/dict-cryptocurrencies@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz#19fbc7bdbec76ce64daf7d53a6d0f3cfff7d0038" + integrity sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA== + +"@cspell/dict-csharp@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz#e55659dbe594e744d86b1baf0f3397fe57b1e283" + integrity sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g== + +"@cspell/dict-css@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-4.0.12.tgz#59abf3512ae729835c933c38f64a3d8a5f09ce3d" + integrity sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw== + +"@cspell/dict-dart@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-dart/-/dict-dart-2.0.3.tgz#75e7ffe47d5889c2c831af35acdd92ebdbd4cf12" + integrity sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw== + +"@cspell/dict-data-science@^1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz#4eabba75c21d27253c1114b4fbbade0ead739ffc" + integrity sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ== + +"@cspell/dict-django@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-django/-/dict-django-4.1.0.tgz#2d4b765daf3c83e733ef3e06887ea34403a4de7a" + integrity sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w== + +"@cspell/dict-docker@^1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@cspell/dict-docker/-/dict-docker-1.1.7.tgz#bcf933283fbdfef19c71a642e7e8c38baf9014f2" + integrity sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A== + +"@cspell/dict-dotnet@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz#13690aafe14b240ad17a30225ac1ec29a5a6a510" + integrity sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw== + +"@cspell/dict-elixir@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz#57c25843e46cf3463f97da72d9ef8e37c818296f" + integrity sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q== + +"@cspell/dict-en-common-misspellings@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.0.tgz#708f424d75dc65237a6fcb8d253bc1e7ab641380" + integrity sha512-NOg8dlv37/YqLkCfBs5OXeJm/Wcfb/CzeOmOZJ2ZXRuxwsNuolb4TREUce0yAXRqMhawahY5TSDRJJBgKjBOdw== + +"@cspell/dict-en-gb@1.1.33": + version "1.1.33" + resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e" + integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g== + +"@cspell/dict-en_us@^4.3.13": + version "4.3.16" + resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-4.3.16.tgz#b04fd49524db9fe6d8a3919881a525b073453c06" + integrity sha512-fyNuAvYpkllmsMpfAJaMip250LRAnEDp2EZbkjYwAJXXjtgQ4/1yh6sLityxPMDtJZN65Eko+8rJzGJHez4zbA== + +"@cspell/dict-filetypes@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-filetypes/-/dict-filetypes-3.0.3.tgz#ab0723ca2f4d3d5674e9c9745efc9f144e49c905" + integrity sha512-J9UP+qwwBLfOQ8Qg9tAsKtSY/WWmjj21uj6zXTI9hRLD1eG1uUOLcfVovAmtmVqUWziPSKMr87F6SXI3xmJXgw== + +"@cspell/dict-fonts@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz#9bc8beb2a7b068b4fdb45cb994b36fd184316327" + integrity sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q== + +"@cspell/dict-fsharp@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz#d62c699550a39174f182f23c8c1330a795ab5f53" + integrity sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ== + +"@cspell/dict-fullstack@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz#35d18678161f214575cc613dd95564e05422a19c" + integrity sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA== + +"@cspell/dict-gaming-terms@^1.0.4": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz#d6ca40eb34a4c99847fd58a7354cd2c651065156" + integrity sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw== + +"@cspell/dict-git@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-git/-/dict-git-3.0.0.tgz#c275af86041a2b59a7facce37525e2af05653b95" + integrity sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw== + +"@cspell/dict-golang@^6.0.5": + version "6.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-golang/-/dict-golang-6.0.5.tgz#4dd2e2fda419730a21fb77ade3b90241ad4a5bcc" + integrity sha512-w4mEqGz4/wV+BBljLxduFNkMrd3rstBNDXmoX5kD4UTzIb4Sy0QybWCtg2iVT+R0KWiRRA56QKOvBsgXiddksA== + +"@cspell/dict-haskell@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz#e9fca7c452411ff11926e23ffed2b50bb9b95e47" + integrity sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ== + +"@cspell/dict-html-symbol-entities@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz#4d86ac18a4a11fdb61dfb6f5929acd768a52564f" + integrity sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw== + +"@cspell/dict-html@^1.1.9": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-1.1.9.tgz#e506ca550ffcdad820ba0aa157a48be869f23bf2" + integrity sha512-vvnYia0tyIS5Fdoz+gEQm77MGZZE66kOJjuNpIYyRHCXFAhWdYz3SmkRm6YKJSWSvuO+WBJYTKDvkOxSh3Fx/w== + +"@cspell/dict-html@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-html/-/dict-html-4.0.5.tgz#03a5182148d80e6c25f71339dbb2b7c5b9894ef8" + integrity sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w== + +"@cspell/dict-java@^5.0.6": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-java/-/dict-java-5.0.6.tgz#2462d6fc15f79ec15eb88ecf875b6ad2a7bf7a6a" + integrity sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw== + +"@cspell/dict-k8s@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz#b19e66f4ac8a4264c0f3981ac6e23e88a60f1c91" + integrity sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ== + +"@cspell/dict-latex@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-latex/-/dict-latex-4.0.0.tgz#85054903db834ea867174795d162e2a8f0e9c51e" + integrity sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ== + +"@cspell/dict-lorem-ipsum@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz#2793a5dbfde474a546b0caecc40c38fdf076306e" + integrity sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw== + +"@cspell/dict-lua@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-lua/-/dict-lua-4.0.3.tgz#2d23c8f7e74b4e62000678d80e7d1ebb10b003e0" + integrity sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg== + +"@cspell/dict-makefile@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz#5afb2910873ebbc01ab8d9c38661c4c93d0e5a40" + integrity sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ== + +"@cspell/dict-node@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-node/-/dict-node-4.0.3.tgz#5ae0222d72871e82978049f8e11ea627ca42fca3" + integrity sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg== + +"@cspell/dict-npm@^5.0.14": + version "5.0.15" + resolved "https://registry.yarnpkg.com/@cspell/dict-npm/-/dict-npm-5.0.15.tgz#c1d1646011fd0eb8ee119b481818a92223c459d1" + integrity sha512-sX0X5YWNW54F4baW7b5JJB6705OCBIZtUqjOghlJNORS5No7QY1IX1zc5FxNNu4gsaCZITAmfMi4ityXEsEThA== + +"@cspell/dict-php@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@cspell/dict-php/-/dict-php-4.0.6.tgz#fcdee4d850f279b2757eb55c4f69a3a221ac1f7e" + integrity sha512-ySAXisf7twoVFZqBV2o/DKiCLIDTHNqfnj0EfH9OoOUR7HL3rb6zJkm0viLUFDO2G/8SyIi6YrN/6KX+Scjjjg== + +"@cspell/dict-powershell@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-powershell/-/dict-powershell-5.0.3.tgz#7bceb4e7db39f87479a6d2af3a033ce26796ae49" + integrity sha512-lEdzrcyau6mgzu1ie98GjOEegwVHvoaWtzQnm1ie4DyZgMr+N6D0Iyj1lzvtmt0snvsDFa5F2bsYzf3IMKcpcA== + +"@cspell/dict-public-licenses@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz#86948b29bd36184943955eaa80bf594488c4dd8a" + integrity sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A== + +"@cspell/dict-python@^4.1.11": + version "4.1.11" + resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-4.1.11.tgz#4e339def01bf468b32d459c46ecb6894970b7eb8" + integrity sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg== + dependencies: + "@cspell/dict-data-science" "^1.0.11" + +"@cspell/dict-r@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-2.0.1.tgz#73474fb7cce45deb9094ebf61083fbf5913f440a" + integrity sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA== + +"@cspell/dict-ruby@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-5.0.2.tgz#cf1a71380c633dec0857143d3270cb503b10679a" + integrity sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g== + +"@cspell/dict-rust@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-rust/-/dict-rust-4.0.2.tgz#e9111f0105ee6d836a1be8314f47347fd9f8fc3a" + integrity sha512-RhziKDrklzOntxAbY3AvNR58wnFGIo3YS8+dNeLY36GFuWOvXDHFStYw5Pod4f/VXbO/+1tXtywCC4zWfB2p1w== + +"@cspell/dict-scala@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-5.0.0.tgz#b64365ad559110a36d44ccd90edf7151ea648022" + integrity sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ== + +"@cspell/dict-software-terms@^3.3.15", "@cspell/dict-software-terms@^3.3.18": + version "3.3.18" + resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-3.3.18.tgz#f25863c316eea195d74b170d41711e2c7402e9ca" + integrity sha512-LJZGGMGqS8KzgXJrSMs3T+6GoqHG9z8Bc+rqLzLzbtoR3FbsMasE9U8oP2PmS3q7jJLFjQkzmg508DrcuZuo2g== + +"@cspell/dict-sql@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@cspell/dict-sql/-/dict-sql-2.1.3.tgz#8d9666a82e35b310d0be4064032c0d891fbd2702" + integrity sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ== + +"@cspell/dict-svelte@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz#0c866b08a7a6b33bbc1a3bdbe6a1b484ca15cdaa" + integrity sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q== + +"@cspell/dict-swift@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-2.0.1.tgz#06ec86e52e9630c441d3c19605657457e33d7bb6" + integrity sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw== + +"@cspell/dict-typescript@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-3.1.2.tgz#14d05f54db2984feaa24ea133b583d19c04cc104" + integrity sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA== + +"@cspell/dict-vue@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-3.0.0.tgz#68ccb432ad93fcb0fd665352d075ae9a64ea9250" + integrity sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A== + +"@cspell/dynamic-import@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/dynamic-import/-/dynamic-import-8.3.2.tgz#96fea6b1139164449a8ef92530de670d4c2fb36e" + integrity sha512-4t0xM5luA3yQhar2xWvYK4wQSDB2r0u8XkpzzJqd57MnJXd7uIAxI0awGUrDXukadRaCo0tDIlMUBemH48SNVg== + dependencies: + import-meta-resolve "^4.0.0" + +"@cspell/strong-weak-map@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@cspell/strong-weak-map/-/strong-weak-map-8.3.2.tgz#5a9490e042bbc472089817b50cf51262dfedef65" + integrity sha512-Mte/2000ap278kRYOUhiGWI7MNr1+A7WSWJmlcdP4CAH5SO20sZI3/cyZLjJJEyapdhK5vaP1L5J9sUcVDHd3A== + +"@ericcornelissen/bash-parser@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@ericcornelissen/bash-parser/-/bash-parser-0.5.2.tgz#5eb3bc52020d97fbaebc63b5168ca0aa0b2e8418" + integrity sha512-4pIMTa1nEFfMXitv7oaNEWOdM+zpOZavesa5GaiWTgda6Zk32CFGxjUp/iIaN0PwgUW1yTq/fztSjbpE8SLGZQ== + dependencies: + array-last "^1.1.1" + babylon "^6.9.1" + compose-function "^3.0.3" + deep-freeze "0.0.1" + filter-iterator "0.0.1" + filter-obj "^1.1.0" + has-own-property "^0.1.0" + identity-function "^1.0.0" + is-iterable "^1.1.0" + iterable-lookahead "^1.0.0" + lodash.curry "^4.1.1" + magic-string "^0.16.0" + map-obj "^2.0.0" + object-pairs "^0.1.0" + object-values "^1.0.0" + reverse-arguments "^1.0.0" + shell-quote-word "^1.0.1" + to-pascal-case "^1.0.0" + unescape-js "^1.0.5" + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/aix-ppc64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz#509621cca4e67caf0d18561a0c56f8b70237472f" + integrity sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz#109a6fdc4a2783fc26193d2687827045d8fef5ab" + integrity sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-arm@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.0.tgz#1397a2c54c476c4799f9b9073550ede496c94ba5" + integrity sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/android-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.0.tgz#2b615abefb50dc0a70ac313971102f4ce2fdb3ca" + integrity sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz#5c122ed799eb0c35b9d571097f77254964c276a2" + integrity sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/darwin-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz#9561d277002ba8caf1524f209de2b22e93d170c1" + integrity sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz#84178986a3138e8500d17cc380044868176dd821" + integrity sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/freebsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz#3f9ce53344af2f08d178551cd475629147324a83" + integrity sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz#24efa685515689df4ecbc13031fa0a9dda910a11" + integrity sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-arm@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz#6b586a488e02e9b073a75a957f2952b3b6e87b4c" + integrity sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-ia32@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz#84ce7864f762708dcebc1b123898a397dea13624" + integrity sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-loong64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz#1922f571f4cae1958e3ad29439c563f7d4fd9037" + integrity sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-mips64el@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz#7ca1bd9df3f874d18dbf46af009aebdb881188fe" + integrity sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-ppc64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz#8f95baf05f9486343bceeb683703875d698708a4" + integrity sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-riscv64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz#ca63b921d5fe315e28610deb0c195e79b1a262ca" + integrity sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-s390x@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz#cb3d069f47dc202f785c997175f2307531371ef8" + integrity sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/linux-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz#ac617e0dc14e9758d3d7efd70288c14122557dc7" + integrity sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/netbsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz#6cc778567f1513da6e08060e0aeb41f82eb0f53c" + integrity sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/openbsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz#76848bcf76b4372574fb4d06cd0ed1fb29ec0fbe" + integrity sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/sunos-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz#ea4cd0639bf294ad51bc08ffbb2dac297e9b4706" + integrity sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz#a5c171e4a7f7e4e8be0e9947a65812c1535a7cf0" + integrity sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-ia32@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz#f8ac5650c412d33ea62d7551e0caf82da52b7f85" + integrity sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@esbuild/win32-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz#2efddf82828aac85e64cef62482af61c29561bee" + integrity sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" @@ -564,150 +1163,498 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@octokit/auth-token@^3.0.0": +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.scandir@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-3.0.0.tgz#91c0a33e1aeaedcd4bab2bf31be5d1962a55d2a7" + integrity sha512-ktI9+PxfHYtKjF3cLTUAh2N+b8MijCRPNwKJNqTVdL0gB0QxLU2rIRaZ1t71oEa3YBDE6bukH1sR0+CDnpp/Mg== + dependencies: + "@nodelib/fs.stat" "3.0.0" + run-parallel "^1.2.0" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.stat@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-3.0.0.tgz#ef6c829f2b05f42595d88854ebd777d4335ff0a9" + integrity sha512-2tQOI38s19P9i7X/Drt0v8iMA+KMsgdhB/dyPER+e+2Y8L1Z7QvnuRdW/uLuf5YRFUYmnj4bMA6qCuZHFI1GDQ== + +"@nodelib/fs.walk@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-2.0.0.tgz#10499ac2210f6399770b465ba728adafc7d44bb1" + integrity sha512-54voNDBobGdMl3BUXSu7UaDh1P85PGHWlJ5e0XhPugo1JulOyCtp2I+5ri4wplGDJ8QGwPEQW7/x3yTLU7yF1A== + dependencies: + "@nodelib/fs.scandir" "3.0.0" + fastq "^1.15.0" + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/git@^5.0.0": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.4.tgz#d18c50f99649e6e89e8b427318134f582498700c" + integrity sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + +"@npmcli/map-workspaces@3.0.4": version "3.0.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" - integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== - -"@octokit/core@^4.2.0", "@octokit/core@^4.2.1": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" - integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== - dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz#15ad7d854292e484f7ba04bc30187a8320dba799" + integrity sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/package-json@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.0.0.tgz#77d0f8b17096763ccbd8af03b7117ba6e34d6e91" + integrity sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^3.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^7.0.0": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz#a836de2f42a2245d629cf6fbb8dd6c74c74c55af" + integrity sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg== + dependencies: + which "^4.0.0" + +"@octokit/auth-token@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" + integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== + +"@octokit/core@^5.0.0", "@octokit/core@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.1.0.tgz#81dacf0197ed7855e6413f128bd6dd9e121e7d2f" + integrity sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g== + dependencies: + "@octokit/auth-token" "^4.0.0" + "@octokit/graphql" "^7.0.0" + "@octokit/request" "^8.0.2" + "@octokit/request-error" "^5.0.0" + "@octokit/types" "^12.0.0" before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^7.0.0": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" - integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== +"@octokit/endpoint@^9.0.0": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.4.tgz#8afda5ad1ffc3073d08f2b450964c610b821d1ea" + integrity sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw== dependencies: - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" + "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" - integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== +"@octokit/graphql@^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.0.2.tgz#3df14b9968192f9060d94ed9e3aa9780a76e7f99" + integrity sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q== dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^9.0.0" + "@octokit/request" "^8.0.1" + "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^18.0.0": - version "18.1.1" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" - integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== +"@octokit/openapi-types@^19.1.0": + version "19.1.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-19.1.0.tgz#75ec7e64743870fc73e1ab4bc6ec252ecdd624dc" + integrity sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw== -"@octokit/plugin-create-or-update-text-file@^2.0.4": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@octokit/plugin-create-or-update-text-file/-/plugin-create-or-update-text-file-2.0.5.tgz#39352f6adc86cc30fc2f655ad643d6b02bc4270f" - integrity sha512-83KUB4siozRx3S+ZZ3MgDLdDgeuot8kTpEyQyd8mjNbeoHbq5hzTQcKMjDhtg5WQS+nGAAu6vi2VlOUl9XrL0g== +"@octokit/plugin-create-or-update-text-file@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-create-or-update-text-file/-/plugin-create-or-update-text-file-4.0.1.tgz#fc4785fba989288286cb2e0de05e99e626c6316c" + integrity sha512-r0kY7MrV+QTTPeVzNmjeAuuPraF8i6cQ2ff2/W+C2monXTAyx21jLd/2jczrC2e+ohnXQvDT3acqpBhtBcqXYQ== dependencies: - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" + "@octokit/request-error" "^5.0.0" + "@octokit/types" "^12.0.0" -"@octokit/plugin-paginate-rest@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" - integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== +"@octokit/plugin-paginate-rest@^9.0.0": + version "9.1.5" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz#1705bcef4dcde1f4015ee58a63dc61b68648f480" + integrity sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg== dependencies: - "@octokit/tsconfig" "^1.0.2" - "@octokit/types" "^9.2.3" + "@octokit/types" "^12.4.0" -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== +"@octokit/plugin-request-log@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz#260fa6970aa97bbcbd91f99f3cd812e2b285c9f1" + integrity sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA== -"@octokit/plugin-rest-endpoint-methods@^7.1.2": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz#37a84b171a6cb6658816c82c4082ac3512021797" - integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== +"@octokit/plugin-rest-endpoint-methods@^10.0.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.3.0.tgz#cba45a365ebc5dbeeca2db95466a514e69c5aa75" + integrity sha512-c/fjpoHispRvBZuRoTVt/uALg7pXa9RQbXWJiDMk6NDkGNomuAZG7YuYYpZoxeoXv+kVRjIDTsO0e1z0pei+PQ== dependencies: - "@octokit/types" "^10.0.0" + "@octokit/types" "^12.4.0" -"@octokit/plugin-throttling@^5.1.0": - version "5.2.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz#9f552a14dcee5c7326dd9dee64a71ea76b108814" - integrity sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q== +"@octokit/plugin-throttling@^8.1.3": + version "8.1.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz#7fb0e001c0cb9383c6be07740b8ec326ed990f6b" + integrity sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A== dependencies: - "@octokit/types" "^9.0.0" + "@octokit/types" "^12.2.0" bottleneck "^2.15.3" -"@octokit/request-error@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" - integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== +"@octokit/request-error@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.0.1.tgz#277e3ce3b540b41525e07ba24c5ef5e868a72db9" + integrity sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ== dependencies: - "@octokit/types" "^9.0.0" + "@octokit/types" "^12.0.0" deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^6.0.0": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" - integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== +"@octokit/request@^8.0.1", "@octokit/request@^8.0.2": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.2.0.tgz#125c547bc3f4c0e2dfa38c6829a1cf00027fbd98" + integrity sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ== dependencies: - "@octokit/endpoint" "^7.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^9.0.0" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" + "@octokit/endpoint" "^9.0.0" + "@octokit/request-error" "^5.0.0" + "@octokit/types" "^12.0.0" universal-user-agent "^6.0.0" -"@octokit/rest@^19.0.7": - version "19.0.13" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.13.tgz#e799393264edc6d3c67eeda9e5bd7832dcf974e4" - integrity sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA== +"@octokit/rest@^20.0.2": + version "20.0.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-20.0.2.tgz#5cc8871ba01b14604439049e5f06c74b45c99594" + integrity sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ== + dependencies: + "@octokit/core" "^5.0.0" + "@octokit/plugin-paginate-rest" "^9.0.0" + "@octokit/plugin-request-log" "^4.0.0" + "@octokit/plugin-rest-endpoint-methods" "^10.0.0" + +"@octokit/types@^12.0.0", "@octokit/types@^12.2.0", "@octokit/types@^12.4.0": + version "12.5.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.5.0.tgz#a60003ad6bb073e5cac936f6ecf47c834f87c058" + integrity sha512-YJEKcb0KkJlIUNU/zjnZwHEP8AoVh/OoIcP/1IyR4UHxExz7fzpe/a8IG4wBtQi7QDEqiomVLX88S6FpxxAJtg== + dependencies: + "@octokit/openapi-types" "^19.1.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + +"@pnpm/constants@7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@pnpm/constants/-/constants-7.1.1.tgz#3db261425fe15425aa213a2b003f4f60c9378b43" + integrity sha512-31pZqMtjwV+Vaq7MaPrT1EoDFSYwye3dp6BiHIGRJmVThCQwySRKM7hCvqqI94epNkqFAAYoWrNynWoRYosGdw== + +"@pnpm/core-loggers@9.0.6": + version "9.0.6" + resolved "https://registry.yarnpkg.com/@pnpm/core-loggers/-/core-loggers-9.0.6.tgz#59a65822cc5ef901dad5aca5b8f1f9562cf91e2a" + integrity sha512-iK67SGbp+06bA/elpg51wygPFjNA7JKHtKkpLxqXXHw+AjFFBC3f2OznJsCIuDK6HdGi5UhHLYqo5QxJ2gMqJQ== + dependencies: + "@pnpm/types" "9.4.2" + +"@pnpm/error@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@pnpm/error/-/error-5.0.2.tgz#153d18fe9eeaeb02e48e9dc45b042f4c962b3822" + integrity sha512-0TEm+tWNYm+9uh6DSKyRbv8pv/6b4NL0PastLvMxIoqZbBZ5Zj1cYi332R9xsSUi31ZOsu2wpgn/bC7DA9hrjg== dependencies: - "@octokit/core" "^4.2.1" - "@octokit/plugin-paginate-rest" "^6.1.2" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^7.1.2" + "@pnpm/constants" "7.1.1" -"@octokit/tsconfig@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" - integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== +"@pnpm/fetching-types@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@pnpm/fetching-types/-/fetching-types-5.0.0.tgz#36807c4bea4697d5ad7519d80929666a91c0083d" + integrity sha512-o9gdO1v8Uc5P2fBBuW6GSpfTqIivQmQlqjQJdFiQX0m+tgxlrMRneIg392jZuc6fk7kFqjLheInlslgJfwY+4Q== + dependencies: + "@zkochan/retry" "^0.2.0" + node-fetch "3.0.0-beta.9" + +"@pnpm/graceful-fs@3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@pnpm/graceful-fs/-/graceful-fs-3.2.0.tgz#241846c42c23feff7421b8bd97d4039891003f12" + integrity sha512-vRoXJxscDpHak7YE9SqCkzfrayn+Lw+YueOeHIPEqkgokrHeYgYeONoc2kGh0ObHaRtNSsonozVfJ456kxLNvA== + dependencies: + graceful-fs "^4.2.11" -"@octokit/types@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-10.0.0.tgz#7ee19c464ea4ada306c43f1a45d444000f419a4a" - integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== +"@pnpm/logger@5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@pnpm/logger/-/logger-5.0.0.tgz#9ac8254d40d8d5b5e676742dc66b8cac1af380bf" + integrity sha512-YfcB2QrX+Wx1o6LD1G2Y2fhDhOix/bAY/oAnMpHoNLsKkWIRbt1oKLkIFvxBMzLwAEPqnYWguJrYC+J6i4ywbw== + dependencies: + bole "^5.0.0" + ndjson "^2.0.0" + +"@pnpm/npm-package-arg@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@pnpm/npm-package-arg/-/npm-package-arg-1.0.0.tgz#2a27938f4d38c6cce5f3695fd1e7d5ed8929645e" + integrity sha512-oQYP08exi6mOPdAZZWcNIGS+KKPsnNwUBzSuAEGWuCcqwMAt3k/WVCqVIXzBxhO5sP2b43og69VHmPj6IroKqw== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +"@pnpm/npm-resolver@18.1.0": + version "18.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/npm-resolver/-/npm-resolver-18.1.0.tgz#bbafcdf88391ee84e2dc78c2b599b54dbbc8f8e3" + integrity sha512-fUYKX/iHiHldL0VRVvkQI35YK2jWhZEkPO6rrGke8309+LKAo12v833nBttMDpQrtHefmqhB4mhCzQq6L2Xqmg== + dependencies: + "@pnpm/core-loggers" "9.0.6" + "@pnpm/error" "5.0.2" + "@pnpm/fetching-types" "5.0.0" + "@pnpm/graceful-fs" "3.2.0" + "@pnpm/resolve-workspace-range" "5.0.1" + "@pnpm/resolver-base" "11.1.0" + "@pnpm/types" "9.4.2" + "@zkochan/retry" "^0.2.0" + encode-registry "^3.0.1" + load-json-file "^6.2.0" + lru-cache "^10.0.2" + normalize-path "^3.0.0" + p-limit "^3.1.0" + p-memoize "4.0.1" + parse-npm-tarball-url "^3.0.0" + path-temp "^2.1.0" + ramda "npm:@pnpm/ramda@0.28.1" + rename-overwrite "^5.0.0" + semver "^7.5.4" + ssri "10.0.5" + version-selector-type "^3.0.0" + +"@pnpm/resolve-workspace-range@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@pnpm/resolve-workspace-range/-/resolve-workspace-range-5.0.1.tgz#839179560fbf5e565234e5dd1d65b79765d86f4c" + integrity sha512-yQ0pMthlw8rTgS/C9hrjne+NEnnSNevCjtdodd7i15I59jMBYciHifZ/vjg0NY+Jl+USTc3dBE+0h/4tdYjMKg== + dependencies: + semver "^7.4.0" + +"@pnpm/resolver-base@11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@pnpm/resolver-base/-/resolver-base-11.1.0.tgz#e640ba9ae096bf05a0b905496a63509556322618" + integrity sha512-y2qKaj18pwe1VWc3YXEitdYFo+WqOOt60aqTUuOVkJAirUzz0DzuYh3Ifct4znYWPdgUXHaN5DMphNF5iL85rA== dependencies: - "@octokit/openapi-types" "^18.0.0" + "@pnpm/types" "9.4.2" -"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" - integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== +"@pnpm/types@9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@pnpm/types/-/types-9.4.2.tgz#0a34c3c41d5452461d8d8958374a727f9c46cfb2" + integrity sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA== + +"@pnpm/workspace.pkgs-graph@^2.0.14": + version "2.0.14" + resolved "https://registry.yarnpkg.com/@pnpm/workspace.pkgs-graph/-/workspace.pkgs-graph-2.0.14.tgz#3ea12b8d95987e64bc98876422ea7ad578cd022a" + integrity sha512-SBXXyWDkPEoaLTjLRyQzRHoBYH+P0NLcIjX1yPUxuJiMTvGOMzjpLWTuxYNVe/P0V0VQMrjpJFaJPjlViNLhzg== + dependencies: + "@pnpm/npm-package-arg" "^1.0.0" + "@pnpm/npm-resolver" "18.1.0" + "@pnpm/resolve-workspace-range" "5.0.1" + ramda "npm:@pnpm/ramda@0.28.1" + +"@sinclair/typebox@^0.32.14": + version "0.32.14" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.32.14.tgz#ef0a4ed981515fd430cadfb65cb6c2719a0b5539" + integrity sha512-EC77Mw8huT2z9YlYbWfpIQgN6shZE1tH4NP4/Trig8UBel9FZNMZRJ42ubJI8PLor2uIU+waLml1dce5ReCOPg== + +"@snyk/github-codeowners@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@snyk/github-codeowners/-/github-codeowners-1.1.0.tgz#45b99732c3c38b5f5b47e43d2b0c9db67a6d2bcc" + integrity sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw== dependencies: - "@octokit/openapi-types" "^18.0.0" + commander "^4.1.1" + ignore "^5.1.8" + p-map "^4.0.0" -"@sinclair/typebox@^0.31.28": - version "0.31.28" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.31.28.tgz#b68831e7bc7d09daac26968ea32f42bedc968ede" - integrity sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ== +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/libsodium-wrappers@^0.7.10": +"@types/libsodium-wrappers@^0.7.13": version "0.7.13" resolved "https://registry.yarnpkg.com/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#769c4ea01de96bb297207586a70777ebf066dcb4" integrity sha512-KeAKtlObirLJk/na6jHBFEdTDjDfFS6Vcr0eG2FjiHKn3Nw8axJFfIu0Y9TpwaauRldQBj/pZm/MHtK76r6OWg== -"@types/node@^18.15.11": - version "18.19.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.3.tgz#e4723c4cb385641d61b983f6fe0b716abd5f8fc0" - integrity sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg== +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + +"@types/node@^20.11.19": + version "20.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" + integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== dependencies: undici-types "~5.26.4" +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/picomatch@2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/picomatch/-/picomatch-2.3.3.tgz#be60498568c19e989e43fb39aa84be1ed3655e92" + integrity sha512-Yll76ZHikRFCyz/pffKGjrCwe/le2CDwOP5F210KQo27kpRE46U2rDnzikNlVn6/ezH3Mhn46bJMTfeVTtcYMg== + +"@types/semver@^7.5.0": + version "7.5.7" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.7.tgz#326f5fdda70d13580777bcaa1bc6fa772a5aef0e" + integrity sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg== + +"@typescript-eslint/eslint-plugin@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.0.1.tgz#407daffe09d964d57aceaf3ac51846359fbe61b0" + integrity sha512-OLvgeBv3vXlnnJGIAgCLYKjgMEU+wBGj07MQ/nxAaON+3mLzX7mJbhRYrVGiVvFiXtwFlkcBa/TtmglHy0UbzQ== + dependencies: + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "7.0.1" + "@typescript-eslint/type-utils" "7.0.1" + "@typescript-eslint/utils" "7.0.1" + "@typescript-eslint/visitor-keys" "7.0.1" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/parser@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.0.1.tgz#e9c61d9a5e32242477d92756d36086dc40322eed" + integrity sha512-8GcRRZNzaHxKzBPU3tKtFNing571/GwPBeCvmAUw0yBtfE2XVd0zFKJIMSWkHJcPQi0ekxjIts6L/rrZq5cxGQ== + dependencies: + "@typescript-eslint/scope-manager" "7.0.1" + "@typescript-eslint/types" "7.0.1" + "@typescript-eslint/typescript-estree" "7.0.1" + "@typescript-eslint/visitor-keys" "7.0.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.0.1.tgz#611ec8e78c70439b152a805e1b10aaac36de7c00" + integrity sha512-v7/T7As10g3bcWOOPAcbnMDuvctHzCFYCG/8R4bK4iYzdFqsZTbXGln0cZNVcwQcwewsYU2BJLay8j0/4zOk4w== + dependencies: + "@typescript-eslint/types" "7.0.1" + "@typescript-eslint/visitor-keys" "7.0.1" + +"@typescript-eslint/type-utils@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.0.1.tgz#0fba92c1f81cad561d7b3adc812aa1cc0e35cdae" + integrity sha512-YtT9UcstTG5Yqy4xtLiClm1ZpM/pWVGFnkAa90UfdkkZsR1eP2mR/1jbHeYp8Ay1l1JHPyGvoUYR6o3On5Nhmw== + dependencies: + "@typescript-eslint/typescript-estree" "7.0.1" + "@typescript-eslint/utils" "7.0.1" + debug "^4.3.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/types@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.0.1.tgz#dcfabce192db5b8bf77ea3c82cfaabe6e6a3c901" + integrity sha512-uJDfmirz4FHib6ENju/7cz9SdMSkeVvJDK3VcMFvf/hAShg8C74FW+06MaQPODHfDJp/z/zHfgawIJRjlu0RLg== + +"@typescript-eslint/typescript-estree@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.0.1.tgz#1d52ac03da541693fa5bcdc13ad655def5046faf" + integrity sha512-SO9wHb6ph0/FN5OJxH4MiPscGah5wjOd0RRpaLvuBv9g8565Fgu0uMySFEPqwPHiQU90yzJ2FjRYKGrAhS1xig== + dependencies: + "@typescript-eslint/types" "7.0.1" + "@typescript-eslint/visitor-keys" "7.0.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + +"@typescript-eslint/utils@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.0.1.tgz#b8ceac0ba5fef362b4a03a33c0e1fedeea3734ed" + integrity sha512-oe4his30JgPbnv+9Vef1h48jm0S6ft4mNwi9wj7bX10joGn07QRfqIqFHoMiajrtoU88cIhXf8ahwgrcbNLgPA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "7.0.1" + "@typescript-eslint/types" "7.0.1" + "@typescript-eslint/typescript-estree" "7.0.1" + semver "^7.5.4" + +"@typescript-eslint/visitor-keys@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.0.1.tgz#864680ac5a8010ec4814f8a818e57595f79f464e" + integrity sha512-hwAgrOyk++RTXrP4KzCg7zB2U0xt7RUU0ZdMSCsqF3eKUwkdXUMyTb0qdCuji7VIbcpG62kKTU9M1J1c9UpFBw== + dependencies: + "@typescript-eslint/types" "7.0.1" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@uniswap/permit2-sdk@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@uniswap/permit2-sdk/-/permit2-sdk-1.2.0.tgz#ed86440a87a6c318169c8e6f161fc263ad040891" @@ -716,11 +1663,86 @@ ethers "^5.3.1" tiny-invariant "^1.3.1" +"@zkochan/retry@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@zkochan/retry/-/retry-0.2.0.tgz#cb52c9fce1976f3eed7b1979b739e70706f4a3d2" + integrity sha512-WhB+2B/ZPlW2Xy/kMJBrMbqecWXcbDDgn0K0wKBAgO2OlBTz1iLJrRWduo+DGGn0Akvz1Lu4Xvls7dJojximWw== + +"@zkochan/rimraf@^2.1.2": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@zkochan/rimraf/-/rimraf-2.1.3.tgz#1074cb72d6e4997275285b04296a343b6ac7046b" + integrity sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A== + dependencies: + rimraf "^3.0.2" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.11.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" + integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== + dependencies: + type-fest "^3.0.0" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -728,46 +1750,101 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -array-buffer-byte-length@^1.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ== + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-ify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" + is-number "^4.0.0" -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" + integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== -axios@^1.3.5: - version "1.6.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" - integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== +axios@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" + integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== dependencies: - follow-redirects "^1.15.0" + follow-redirects "^1.15.4" form-data "^4.0.0" proxy-from-env "^1.1.0" +babylon@^6.9.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -793,6 +1870,14 @@ bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== +bole@^5.0.0: + version "5.0.11" + resolved "https://registry.yarnpkg.com/bole/-/bole-5.0.11.tgz#c4a165975422daee6f576360e882a425c8e40617" + integrity sha512-KB0Ye0iMAW5BnNbnLfMSQcnI186hKUzE2fpkZWqcxsoTR7eqzlTidSOMYPHJOn/yR7VGH7uSZp37qH9q2Et0zQ== + dependencies: + fast-safe-stringify "^2.0.7" + individual "^3.0.0" + bottleneck@^2.15.3: version "2.19.5" resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" @@ -806,26 +1891,75 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +builtins@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" + integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== + dependencies: + semver "^7.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -chalk@^2.4.1: +chalk-template@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/chalk-template/-/chalk-template-1.1.0.tgz#ffc55db6dd745e9394b85327c8ac8466edb7a7b1" + integrity sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg== + dependencies: + chalk "^5.2.0" + +chalk@5.3.0, chalk@^5.2.0, chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -834,6 +1968,56 @@ chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +clear-module@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/clear-module/-/clear-module-4.1.2.tgz#5a58a5c9f8dccf363545ad7284cad3c887352a80" + integrity sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw== + dependencies: + parent-module "^2.0.0" + resolve-from "^5.0.0" + +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -841,11 +2025,28 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -853,11 +2054,116 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -concat-map@0.0.1: +commander@11.1.0, commander@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +comment-json@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365" + integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + +compose-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg== + dependencies: + arity-n "^1.0.4" + +concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +configstore@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +configstore@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-6.0.0.tgz#49eca2ebc80983f77e09394a1a56e0aca8235566" + integrity sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA== + dependencies: + dot-prop "^6.0.1" + graceful-fs "^4.2.6" + unique-string "^3.0.0" + write-file-atomic "^3.0.3" + xdg-basedir "^5.0.1" + +conventional-changelog-angular@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz#5eec8edbff15aa9b1680a8dcfbd53e2d7eb2ba7a" + integrity sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ== + dependencies: + compare-func "^2.0.0" + +conventional-changelog-conventionalcommits@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz#aa5da0f1b2543094889e8cf7616ebe1a8f5c70d5" + integrity sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w== + dependencies: + compare-func "^2.0.0" + +conventional-commits-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz#57f3594b81ad54d40c1b4280f04554df28627d9a" + integrity sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA== + dependencies: + JSONStream "^1.3.5" + is-text-path "^2.0.0" + meow "^12.0.1" + split2 "^4.0.0" + +core-util-is@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig-typescript-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz#0d3becfe022a871f7275ceb2397d692e06045dc8" + integrity sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA== + dependencies: + jiti "^1.19.1" + +cosmiconfig@^8.3.6: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -869,14 +2175,200 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -define-data-property@^1.0.1, define-data-property@^1.1.1: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +crypto-random-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" + integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== + dependencies: + type-fest "^1.0.1" + +cspell-config-lib@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-config-lib/-/cspell-config-lib-8.3.2.tgz#050a6d782072a810cb6655efe11c08c80ae7636b" + integrity sha512-Wc98XhBNLwDxnxCzMtgRJALI9a69cu3C5Gf1rGjNTKSFo9JYiQmju0Ur3z25Pkx9Sa86f+2IjvNCf33rUDSoBQ== + dependencies: + "@cspell/cspell-types" "8.3.2" + comment-json "^4.2.3" + yaml "^2.3.4" + +cspell-dict-html@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/cspell-dict-html/-/cspell-dict-html-1.2.5.tgz#e670859986d7d2ea8feed29875cb8a411ad7c005" + integrity sha512-UgenFUHqMOZCH634DipKVWeSixlLTVJnmDGaPevLQuGPp057ucAb0QwDQlLRAAZh9RDfiBGvotX2hImFVN/l0Q== + dependencies: + "@cspell/dict-html" "^1.1.9" + configstore "^5.0.0" + +cspell-dictionary@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-dictionary/-/cspell-dictionary-8.3.2.tgz#6627a94501811a143f3b638e0e77f7262335dbd4" + integrity sha512-xyK95hO2BMPFxIo8zBwGml8035qOxSBdga1BMhwW/p2wDrQP8S4Cdm/54//tCDmKn6uRkFQvyOfWGaX2l8WMEg== + dependencies: + "@cspell/cspell-pipe" "8.3.2" + "@cspell/cspell-types" "8.3.2" + cspell-trie-lib "8.3.2" + fast-equals "^5.0.1" + gensequence "^6.0.0" + +cspell-gitignore@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-8.3.2.tgz#5cf244be494bf87257ca8715ac88b0849dd5fef3" + integrity sha512-3Qc9P5BVvl/cg//s2s+zIMGKcoH5v7oOtRgwn4UQry8yiyo19h0tiTKkSR574FMhF5NtcShTnwIwPSIXVBPFHA== + dependencies: + cspell-glob "8.3.2" + find-up-simple "^1.0.0" + +cspell-glob@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-8.3.2.tgz#4c208e4ddd5604d2871df534a3054c7a3fdc9998" + integrity sha512-KtIFxE+3l5dGEofND4/CdZffXP8XN1+XGQKxJ96lIzWsc01mkotfhxTkla6mgvfH039t7BsY/SWv0460KyGslQ== + dependencies: + micromatch "^4.0.5" + +cspell-grammar@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-grammar/-/cspell-grammar-8.3.2.tgz#69d7980c036c206745d5d417d32c95edaaff6107" + integrity sha512-tYCkOmRzJe1a6/R+8QGSwG7TwTgznLPqsHtepKzLmnS4YX54VXjKRI9zMARxXDzUVfyCSVdW5MyiY/0WTNoy+A== + dependencies: + "@cspell/cspell-pipe" "8.3.2" + "@cspell/cspell-types" "8.3.2" + +cspell-io@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-8.3.2.tgz#8ddd865fa9a1391852e3288789f5b2a6613239bd" + integrity sha512-WYpKsyBCQP0SY4gXnhW5fPuxcYchKYKG1PIXVV3ezFU4muSgW6GuLNbGuSfwv/8YNXRgFSN0e3hYH0rdBK2Aow== + dependencies: + "@cspell/cspell-service-bus" "8.3.2" + +cspell-lib@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-8.3.2.tgz#8225f8d3a20596bda4b9689a2ad958f7831f5a7d" + integrity sha512-wTvdaev/TyGB/ln6CVD1QbVs2D7/+QiajQ67S7yj1suLHM6YcNQQb/5sPAM8VPtj0E7PgwgPXf3bq18OtPvnFg== + dependencies: + "@cspell/cspell-bundled-dicts" "8.3.2" + "@cspell/cspell-pipe" "8.3.2" + "@cspell/cspell-resolver" "8.3.2" + "@cspell/cspell-types" "8.3.2" + "@cspell/dynamic-import" "8.3.2" + "@cspell/strong-weak-map" "8.3.2" + clear-module "^4.1.2" + comment-json "^4.2.3" + configstore "^6.0.0" + cspell-config-lib "8.3.2" + cspell-dictionary "8.3.2" + cspell-glob "8.3.2" + cspell-grammar "8.3.2" + cspell-io "8.3.2" + cspell-trie-lib "8.3.2" + fast-equals "^5.0.1" + gensequence "^6.0.0" + import-fresh "^3.3.0" + resolve-from "^5.0.0" + vscode-languageserver-textdocument "^1.0.11" + vscode-uri "^3.0.8" + +cspell-trie-lib@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-8.3.2.tgz#e1e8c9926f41a094bec7f0af85b931be06019fe7" + integrity sha512-8qh2FqzkLMwzlTlvO/5Z+89fhi30rrfekocpight/BmqKbE2XFJQD7wS2ml24e7q/rdHJLXVpJbY/V5mByucCA== + dependencies: + "@cspell/cspell-pipe" "8.3.2" + "@cspell/cspell-types" "8.3.2" + gensequence "^6.0.0" + +cspell@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-8.3.2.tgz#56e7e919d87d38016b4c34b8c8ee745404c230a7" + integrity sha512-V8Ub3RO/a5lwSsltW/ib3Z3G/sczKtSpBBN1JChzbSCfEgaY2mJY8JW0BpkSV+Ug6uJitpXNOOaxa3Xr489i7g== + dependencies: + "@cspell/cspell-json-reporter" "8.3.2" + "@cspell/cspell-pipe" "8.3.2" + "@cspell/cspell-types" "8.3.2" + "@cspell/dynamic-import" "8.3.2" + chalk "^5.3.0" + chalk-template "^1.1.0" + commander "^11.1.0" + cspell-gitignore "8.3.2" + cspell-glob "8.3.2" + cspell-io "8.3.2" + cspell-lib "8.3.2" + fast-glob "^3.3.2" + fast-json-stable-stringify "^2.1.0" + file-entry-cache "^8.0.0" + get-stdin "^9.0.0" + semver "^7.5.4" + strip-ansi "^7.1.0" + vscode-uri "^3.0.8" + +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + +data-uri-to-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + +debug@4.3.4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== dependencies: - get-intrinsic "^1.2.1" + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +deep-freeze@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" + integrity sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.0.1, define-data-property@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" gopd "^1.0.1" - has-property-descriptors "^1.0.0" define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" @@ -897,10 +2389,52 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -dotenv@^16.0.3: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dot-prop@^5.1.0, dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dotenv@^16.4.4: + version "16.4.4" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.4.tgz#a26e7bb95ebd36272ebb56edb80b826aecf224c1" + integrity sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +easy-table@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.2.0.tgz#ba9225d7138fee307bfd4f0b5bc3c04bdc7c54eb" + integrity sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww== + dependencies: + ansi-regex "^5.0.1" + optionalDependencies: + wcwidth "^1.0.1" elliptic@6.5.4: version "6.5.4" @@ -915,6 +2449,33 @@ elliptic@6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encode-registry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/encode-registry/-/encode-registry-3.0.1.tgz#cb925d0db14ce59b18882b62c67133721b0846d1" + integrity sha512-6qOwkl1g0fv0DN3Y3ggr2EaZXN71aoAqPp3p/pVaWSBSIo+YjLOWN61Fva43oVyQNPf7kgm8lkudzlzojwE2jw== + dependencies: + mem "^8.0.0" + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -922,52 +2483,66 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== +es-abstract@^1.22.1, es-abstract@^1.22.3: + version "1.22.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.4.tgz#26eb2e7538c3271141f5754d31aabfdb215f27bf" + integrity sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg== dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.6" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.2" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" globalthis "^1.0.3" gopd "^1.0.1" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" has-proto "^1.0.1" has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.12" + is-typed-array "^1.1.13" is-weakref "^1.0.2" object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" string.prototype.trim "^1.2.8" string.prototype.trimend "^1.0.7" string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" + typed-array-buffer "^1.0.1" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" + which-typed-array "^1.1.14" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-set-tostringtag@^2.0.1: +es-set-tostringtag@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== @@ -985,67 +2560,192 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -esbuild@^0.17.15: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== +esbuild@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.0.tgz#a7170b63447286cd2ff1f01579f09970e6965da4" + integrity sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA== optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -esbuild@~0.18.20: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + "@esbuild/aix-ppc64" "0.20.0" + "@esbuild/android-arm" "0.20.0" + "@esbuild/android-arm64" "0.20.0" + "@esbuild/android-x64" "0.20.0" + "@esbuild/darwin-arm64" "0.20.0" + "@esbuild/darwin-x64" "0.20.0" + "@esbuild/freebsd-arm64" "0.20.0" + "@esbuild/freebsd-x64" "0.20.0" + "@esbuild/linux-arm" "0.20.0" + "@esbuild/linux-arm64" "0.20.0" + "@esbuild/linux-ia32" "0.20.0" + "@esbuild/linux-loong64" "0.20.0" + "@esbuild/linux-mips64el" "0.20.0" + "@esbuild/linux-ppc64" "0.20.0" + "@esbuild/linux-riscv64" "0.20.0" + "@esbuild/linux-s390x" "0.20.0" + "@esbuild/linux-x64" "0.20.0" + "@esbuild/netbsd-x64" "0.20.0" + "@esbuild/openbsd-x64" "0.20.0" + "@esbuild/sunos-x64" "0.20.0" + "@esbuild/win32-arm64" "0.20.0" + "@esbuild/win32-ia32" "0.20.0" + "@esbuild/win32-x64" "0.20.0" + +esbuild@~0.19.10: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== + +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" + +eslint-plugin-sonarjs@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.24.0.tgz#b594ccb9b1d6123edd3c3fe3a45b4392e14932d7" + integrity sha512-87zp50mbbNrSTuoEOebdRQBPa0mdejA5UEjyuScyIw8hEpEjfWP89Qhkq5xVZfVyVSRQKZc9alVm7yRKQvvUmg== + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + 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.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + 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.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + ethers@^5.3.1, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" @@ -1082,10 +2782,173 @@ ethers@^5.3.1, ethers@^5.7.2: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" -follow-redirects@^1.15.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +execa@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-equals@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" + integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== + +fast-glob@3.3.2, fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.15.0, fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fetch-blob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-2.1.2.tgz#a7805db1361bd44c1ef62bb57fb5fe8ea173ef3c" + integrity sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +filter-iterator@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/filter-iterator/-/filter-iterator-0.0.1.tgz#0a2ecf07d6c06f96bdeb6846f8e88b57b8da1f37" + integrity sha512-v4lhL7Qa8XpbW3LN46CEnmhGk3eHZwxfNl5at20aEkreesht4YKb/Ba3BUIbnPhAC/r3dmu7ABaGk6MAvh2alA== + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +find-up-simple@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-up-simple/-/find-up-simple-1.0.0.tgz#21d035fde9fdbd56c8f4d2f63f32fd93a1cfc368" + integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat-cache@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.0.tgz#d12437636f83bb8a12b8f300c36fd1614e1c7224" + integrity sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + rimraf "^5.0.5" + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +follow-redirects@^1.15.4: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== for-each@^0.3.3: version "0.3.3" @@ -1094,6 +2957,14 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1103,6 +2974,20 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +fs-extra@10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -1128,23 +3013,55 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== +gensequence@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-6.0.0.tgz#ae46a0f89ebd7cc334e45cfb8f1c99a65248694e" + integrity sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: + es-errors "^1.3.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" hasown "^2.0.0" -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== +get-stdin@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" + integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" get-tsconfig@^4.7.2: version "4.7.2" @@ -1153,6 +3070,75 @@ get-tsconfig@^4.7.2: dependencies: resolve-pkg-maps "^1.0.0" +git-raw-commits@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.2.2, glob@^10.3.7: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-directory@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" + integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== + dependencies: + ini "4.1.1" + +global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== + dependencies: + ini "^1.3.4" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -1160,6 +3146,18 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + godb@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/godb/-/godb-0.6.2.tgz#0c380310558a7c9114f49aa70c1a1da67313120e" @@ -1172,11 +3170,21 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2: +graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -1187,12 +3195,27 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +has-own-property@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-own-property/-/has-own-property-0.1.0.tgz#992b0f5bb3a25416f8d4d0cde53f497b9d7b1ea5" + integrity sha512-14qdBKoonU99XDhWcFKZTShK+QV47qU97u8zzoVo9cL5TZ3BmBHXogItSt9qJjR0KUMFRhcCW8uGIGl8nkl7Aw== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: - get-intrinsic "^1.2.2" + es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.1" @@ -1204,12 +3227,12 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: - has-symbols "^1.0.2" + has-symbols "^1.0.3" hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -1219,10 +3242,10 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== +hasown@^2.0.0, hasown@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" + integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== dependencies: function-bind "^1.1.2" @@ -1240,28 +3263,112 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -inherits@^2.0.3, inherits@^2.0.4: +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" + integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + dependencies: + lru-cache "^10.0.1" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +husky@^9.0.11: + version "9.0.11" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" + integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== + +identity-function@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/identity-function/-/identity-function-1.0.0.tgz#bea1159f0985239be3ca348edf40ce2f0dd2c21d" + integrity sha512-kNrgUK0qI+9qLTBidsH85HjDLpZfrrS0ElquKKe/fJFdB3D7VeKdXXEvOPDUHSHOzdZKCAAaQIWWyp0l2yq6pw== + +ignore@^5.1.8, ignore@^5.2.0, ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-meta-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz#0b1195915689f60ab00f830af0f15cc841e8919e" + integrity sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +individual@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/individual/-/individual-3.0.0.tgz#e7ca4f85f8957b018734f285750dc22ec2f9862d" + integrity sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== +ini@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" + integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: - get-intrinsic "^1.2.2" + es-errors "^1.3.0" hasown "^2.0.0" side-channel "^1.0.4" -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" + get-intrinsic "^1.2.1" is-arrayish@^0.2.1: version "0.2.1" @@ -1288,7 +3395,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0: +is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== @@ -1302,6 +3409,40 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-iterable@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-iterable/-/is-iterable-1.1.1.tgz#71f9aa6f113e1d968ebe1d41cff4c8fb23a817bc" + integrity sha512-EdOZCr0NsGE00Pot+x1ZFx9MJK3C6wy91geZpXwvwexDLJvA4nzYyZf7r+EIwSeVsOLDdBz7ATg9NqKTzuNYuQ== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -1314,10 +3455,30 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-regex@^1.1.4: version "1.1.4" @@ -1334,6 +3495,16 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -1348,16 +3519,28 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== +is-text-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-2.0.0.tgz#b2484e2b720a633feb2e85b67dc193ff72c75636" + integrity sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw== dependencies: - which-typed-array "^1.1.11" + text-extensions "^2.0.0" -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" +is-typed-array@^1.1.10, is-typed-array@^1.1.13, is-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" @@ -1372,17 +3555,151 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +iterable-lookahead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/iterable-lookahead/-/iterable-lookahead-1.0.0.tgz#896dfcb78680bdb50036e97edb034c8b68a9737f" + integrity sha512-hJnEP2Xk4+44DDwJqUQGdXal5VbyeWLaPyDl2AQc242Zr7iqz4DgpQOrEzglWVMGHMDCkguLHEKxd1+rOsmgSQ== + +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@1.21.0, jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + js-sha3@0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@4.1.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -libsodium-wrappers@^0.7.11: +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-parse-even-better-errors@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" + integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +keyv@^4.5.3, keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +knip@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/knip/-/knip-5.0.1.tgz#8967bf4ba179f2c3227e87610ca9a73dd97212f4" + integrity sha512-rvZbe2JIpx+3i+ZC3XpLpKPp6oII9f5w1MOMsXwS1JnuYVuNd4R2i4eon2hFds9a+pf8F10DC1Gvt1W8SIBw3A== + dependencies: + "@ericcornelissen/bash-parser" "0.5.2" + "@nodelib/fs.walk" "2.0.0" + "@npmcli/map-workspaces" "3.0.4" + "@npmcli/package-json" "5.0.0" + "@pnpm/logger" "5.0.0" + "@pnpm/workspace.pkgs-graph" "^2.0.14" + "@snyk/github-codeowners" "1.1.0" + "@types/picomatch" "2.3.3" + easy-table "1.2.0" + fast-glob "3.3.2" + jiti "1.21.0" + js-yaml "4.1.0" + micromatch "4.0.5" + minimist "1.2.8" + picocolors "1.0.0" + picomatch "4.0.1" + pretty-ms "9.0.0" + semver "7.6.0" + smol-toml "1.1.4" + strip-json-comments "5.0.1" + summary "2.1.0" + zod "3.22.4" + zod-validation-error "3.0.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libsodium-wrappers@^0.7.13: version "0.7.13" resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" integrity sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw== @@ -1394,6 +3711,44 @@ libsodium@^0.7.13: resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== +lilconfig@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^15.2.2: + version "15.2.2" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.2.tgz#ad7cbb5b3ab70e043fa05bff82a09ed286bc4c5f" + integrity sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== + dependencies: + chalk "5.3.0" + commander "11.1.0" + debug "4.3.4" + execa "8.0.1" + lilconfig "3.0.0" + listr2 "8.0.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.4" + +listr2@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.0.1.tgz#4d3f50ae6cec3c62bdf0e94f5c2c9edebd4b9c34" + integrity sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.0.0" + rfdc "^1.3.0" + wrap-ansi "^9.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -1404,11 +3759,210 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +load-json-file@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.curry@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + +lodash.snakecase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== + +lodash.startcase@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" + integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash.upperfirst@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" + integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== + +lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-update@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.0.0.tgz#0ddeb7ac6ad658c944c1de902993fce7c33f5e59" + integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== + dependencies: + ansi-escapes "^6.2.0" + cli-cursor "^4.0.0" + slice-ansi "^7.0.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + +lru-cache@^10.0.1, lru-cache@^10.0.2, "lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.16.0.tgz#970ebb0da7193301285fb1aa650f39bdd81eb45a" + integrity sha512-c4BEos3y6G2qO0B9X7K0FVLOPT9uGrjYwYRLFmDqyl5YMboUviyecnXWp94fJTSMwPw2/sf+CEYt5AGpmklkkQ== + dependencies: + vlq "^0.2.1" + +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +mem@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-6.1.1.tgz#ea110c2ebc079eca3022e6b08c85a795e77f6318" + integrity sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.0.0" + +mem@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== +meow@^12.0.1: + version "12.1.1" + resolved "https://registry.yarnpkg.com/meow/-/meow-12.1.1.tgz#e558dddbab12477b69b2e9a2728c327f191bace6" + integrity sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw== + +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@4.0.5, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -1421,6 +3975,26 @@ mime-types@^2.1.12: dependencies: mime-db "1.52.0" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^3.0.0, mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -1431,26 +4005,74 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.4: +minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@1.2.8, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +ndjson@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-2.0.0.tgz#320ac86f6fe53f5681897349b86ac6f43bfa3a19" + integrity sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ== + dependencies: + json-stringify-safe "^5.0.1" + minimist "^1.2.5" + readable-stream "^3.6.0" + split2 "^3.0.0" + through2 "^4.0.0" + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== +node-fetch@3.0.0-beta.9: + version "3.0.0-beta.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.0.0-beta.9.tgz#0a7554cfb824380dd6812864389923c783c80d9b" + integrity sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg== dependencies: - whatwg-url "^5.0.0" + data-uri-to-buffer "^3.0.1" + fetch-blob "^2.1.1" -normalize-package-data@^2.3.2: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -1460,6 +4082,63 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.0.tgz#68a96b3c11edd462af7189c837b6b1064a484196" + integrity sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg== + dependencies: + hosted-git-info "^7.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-install-checks@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@^11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" + integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-pick-manifest@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz#f87a4c134504a2c7931f2bb8733126e3c3bb7e8f" + integrity sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + npm-run-all@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -1475,7 +4154,21 @@ npm-run-all@^4.1.5: shell-quote "^1.6.1" string.prototype.padend "^3.0.0" -object-inspect@^1.13.1, object-inspect@^1.9.0: +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.2.0.tgz#224cdd22c755560253dd71b83a1ef2f758b2e955" + integrity sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg== + dependencies: + path-key "^4.0.0" + +object-inspect@^1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -1485,7 +4178,17 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4: +object-pairs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-pairs/-/object-pairs-0.1.0.tgz#8276eed81d60b8549d69c5f73a682ab9da4ff32f" + integrity sha512-3ECr6K831I4xX/Mduxr9UC+HPOz/d6WKKYj9p4cmC8Lg8p7g8gitzsxNX5IWlSIgFWN/a4JgrJaoAMKn20oKwA== + +object-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/object-values/-/object-values-1.0.0.tgz#72af839630119e5b98c3b02bb8c27e3237158105" + integrity sha512-+8hwcz/JnQ9EpLIXzN0Rs7DLsBpJNT/xYehtB/jU93tHYr5BFEO8E+JGQNOSqE7opVzz5cGksKFHt7uUJVLSjQ== + +object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -1495,13 +4198,106 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -once@^1.4.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-memoize@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/p-memoize/-/p-memoize-4.0.1.tgz#6f4231857fec10de2504611fe820c808fa8c5f8b" + integrity sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog== + dependencies: + mem "^6.0.1" + mimic-fn "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parent-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-2.0.0.tgz#fa71f88ff1a50c27e15d8ff74e0e3a9523bf8708" + integrity sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg== + dependencies: + callsites "^3.1.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -1510,16 +4306,73 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-ms@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4" + integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw== + +parse-npm-tarball-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/parse-npm-tarball-url/-/parse-npm-tarball-url-3.0.0.tgz#4bcdd84b7eb824b9539182dea082f7bde2cbb24f" + integrity sha512-InpdgIdNe5xWMEUcrVQUniQKwnggBtJ7+SCwh7zQAZwbbIYZV9XdgJyhtmDSSvykFyQXoe4BINnzKTfCwWLs5g== + dependencies: + semver "^6.1.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-temp@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-temp/-/path-temp-2.1.0.tgz#cc68bb26d4fc301df799bb40b8c005cab0e62786" + integrity sha512-cMMJTAZlion/RWRRC48UbrDymEIt+/YSD/l8NqjneyDw2rDOBQcP5yRkMB4CYGn47KMhZvbblBP7Z79OsMw72w== + dependencies: + unique-string "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -1527,6 +4380,31 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.1.tgz#68c26c8837399e5819edce48590412ea07f17a07" + integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -1537,16 +4415,90 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -prettier@^2.8.7: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + +pretty-ms@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.0.0.tgz#53c57f81171c53be7ce3fd20bdd4265422bc5929" + integrity sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng== + dependencies: + parse-ms "^4.0.0" + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +"ramda@npm:@pnpm/ramda@0.28.1": + version "0.28.1" + resolved "https://registry.yarnpkg.com/@pnpm/ramda/-/ramda-0.28.1.tgz#0f32abc5275d586a03e0dc1dd90a009ac668ff33" + integrity sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw== + +read-package-json-fast@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -1556,14 +4508,82 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +rename-overwrite@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/rename-overwrite/-/rename-overwrite-5.0.0.tgz#ccd1f85aef47d41647ccc1c681d9b6d054cf5fc8" + integrity sha512-vSxE5Ww7Jnyotvaxi3Dj0vOMoojH8KMkBfs9xYeW/qNfJiLTcC1fmwTjrbGUq3mQSOCxkG0DbdcvwTUrpvBN4w== + dependencies: + "@zkochan/rimraf" "^2.1.2" + fs-extra "10.1.0" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-global@1.0.0, resolve-global@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== + dependencies: + global-dirs "^0.1.1" resolve-pkg-maps@^1.0.0: version "1.0.0" @@ -1579,28 +4599,82 @@ resolve@^1.10.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -retry-axios@^3.0.0: +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry-axios@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-3.1.3.tgz#c263313e5148e8747b13d4861e3f8316f49088ed" integrity sha512-uwnlAjqg6twTcQB7RvH3OSgAqjqBDS9GFUOT+BhgADDYjoxsB7KfvS6SqYHOPjxM/Z/jVwSwGYdJnPE8at1PoA== -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +reverse-arguments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/reverse-arguments/-/reverse-arguments-1.0.0.tgz#c28095a3a921ac715d61834ddece9027992667cd" + integrity sha512-/x8uIPdTafBqakK0TmPNJzgkLP+3H+yxpUJhCQHsLBg1rYEVNR2D8BRYNWQhVBjyOd7oo1dZRVzIkwMY2oqfYQ== + +rfdc@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" + glob "^7.1.3" + +rimraf@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf" + integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== + dependencies: + glob "^10.3.7" + +run-parallel@^1.1.9, run-parallel@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" has-symbols "^1.0.3" isarray "^2.0.5" -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" + call-bind "^1.0.6" + es-errors "^1.3.0" is-regex "^1.1.4" scrypt-js@3.0.1: @@ -1613,17 +4687,31 @@ scrypt-js@3.0.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== +semver@7.6.0, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.4.0, semver@^7.5.3, semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.1.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" gopd "^1.0.1" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.1" -set-function-name@^2.0.0: +set-function-name@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== @@ -1639,37 +4727,78 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote-word@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/shell-quote-word/-/shell-quote-word-1.0.1.tgz#e2bdfd22d599fd68886491677e38f560f9d469c9" + integrity sha512-lT297f1WLAdq0A4O+AknIFRP6kkiI3s8C913eJ0XqBxJbZPGWUNkRQk2u8zk4bEAjUJ5i+fSLwB6z1HzeT+DEg== + shell-quote@^1.6.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + version "1.0.5" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" + integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" -source-map-support@^0.5.21: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +slice-ansi@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +smol-toml@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/smol-toml/-/smol-toml-1.1.4.tgz#08c23b105f56f17e57b0a77c7edcb10b75a62c5c" + integrity sha512-Y0OT8HezWsTNeEOSVxDnKOW/AyNXHQ4BwJNbAXlLTF5wWsBvrcHhIkE5Rf8kQMLmgf7nDX3PVOlgC6/Aiggu3Q== spdx-correct@^3.0.0: version "3.2.0" @@ -1680,9 +4809,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== spdx-expression-parse@^3.0.0: version "3.0.1" @@ -1693,9 +4822,65 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.16" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" - integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + version "3.0.17" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" + integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +ssri@10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== + dependencies: + minipass "^7.0.3" + +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string-width@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + +string.fromcodepoint@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz#8d978333c0bc92538f50f383e4888f3e5619d653" + integrity sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg== string.prototype.padend@^3.0.0: version "3.1.5" @@ -1733,11 +4918,69 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.1.tgz#0d8b7d01b23848ed7dbdf4baaaa31a8250d8cfa0" + integrity sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +summary@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/summary/-/summary-2.1.0.tgz#be8a49a0aa34eb6ceea56042cae88f8add4b0885" + integrity sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -1745,40 +4988,149 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + +text-extensions@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" + integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + tiny-invariant@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +to-no-case@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" + integrity sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg== -tsx@^3.12.6: - version "3.14.0" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.14.0.tgz#be6e2176b6f210fe8f48124fb6e22e0f075e927b" - integrity sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg== +to-pascal-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-pascal-case/-/to-pascal-case-1.0.0.tgz#0bbdc8df448886ba01535e543327048d0aa1ce78" + integrity sha512-QGMWHqM6xPrcQW57S23c5/3BbYb0Tbe9p+ur98ckRnGDwD4wbbtDiYI38CfmMKNB5Iv0REjs5SNDntTwvDxzZA== dependencies: - esbuild "~0.18.20" + to-space-case "^1.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-space-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" + integrity sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA== + dependencies: + to-no-case "^1.0.0" + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +ts-api-utils@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" + integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== + +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsx@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.1.tgz#27af6cbf4e1cdfcb9b5425b1c61bb7e668eb5e84" + integrity sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g== + dependencies: + esbuild "~0.19.10" get-tsconfig "^4.7.2" - source-map-support "^0.5.21" optionalDependencies: fsevents "~2.3.3" -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" + prelude-ls "^1.2.1" + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^3.0.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +typed-array-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz#0608ffe6bca71bf15a45bff0ca2604107a1325f5" + integrity sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-typed-array "^1.1.13" typed-array-byte-length@^1.0.0: version "1.0.0" @@ -1791,15 +5143,16 @@ typed-array-byte-length@^1.0.0: is-typed-array "^1.1.10" typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.1.tgz#5e2bcc1d93e1a332d50e8b363a48604a134692f8" + integrity sha512-tcqKMrTRXjqvHN9S3553NPCaGL0VPgFI92lXszmrE8DMhiDPLBYLlvo8Uu4WZAAX/aGqp/T1sbA4ph8EWjDF9Q== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.6" + call-bind "^1.0.7" for-each "^0.3.3" + gopd "^1.0.1" has-proto "^1.0.1" - is-typed-array "^1.1.10" + is-typed-array "^1.1.13" typed-array-length@^1.0.4: version "1.0.4" @@ -1810,7 +5163,14 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typescript@^5.1.6: +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== @@ -1830,12 +5190,50 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +unescape-js@^1.0.5: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unescape-js/-/unescape-js-1.1.4.tgz#4bc6389c499cb055a98364a0b3094e1c3d5da395" + integrity sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g== + dependencies: + string.fromcodepoint "^0.2.1" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unique-string@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" + integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== + dependencies: + crypto-random-string "^4.0.0" + universal-user-agent@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== -validate-npm-package-license@^3.0.1: +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -1843,18 +5241,48 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" -whatwg-url@^5.0.0: +validate-npm-package-name@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz#f16afd48318e6f90a1ec101377fa0384cfc8c713" + integrity sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ== + dependencies: + builtins "^5.0.0" + +version-selector-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/version-selector-type/-/version-selector-type-3.0.0.tgz#47c365fb4d9ca4a54e6dabcad6fb7a46265f7955" + integrity sha512-PSvMIZS7C1MuVNBXl/CDG2pZq8EXy/NW2dHIdm3bVP5N0PC8utDK8ttXLXj44Gn3J0lQE3U7Mpm1estAOd+eiA== + dependencies: + semver "^7.3.2" + +vlq@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + +vscode-languageserver-textdocument@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#0822a000e7d4dc083312580d7575fe9e3ba2e2bf" + integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA== + +vscode-uri@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" + integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" + defaults "^1.0.3" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -1867,16 +5295,16 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.11, which-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== +which-typed-array@^1.1.14: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.1" which@^1.2.9: version "1.3.1" @@ -1885,17 +5313,131 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -yaml@^2.2.2: +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xdg-basedir@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-5.1.0.tgz#1efba19425e73be1bc6f2a6ceb52a3d2c884c0c9" + integrity sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@2.3.4, yaml@^2.3.4: version "2.3.4" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== \ No newline at end of file + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.0.0: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + 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.5" + yargs-parser "^21.1.1" + +yarn-upgrade-all@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/yarn-upgrade-all/-/yarn-upgrade-all-0.7.2.tgz#5d2afa9230661c55f22d3f848f22258db732ae20" + integrity sha512-iVxmoBuNdpxeahAIehJ039Pp6S8zQ/qTENQRMV5hp7x/2tLGUzytCODIKZFjfUwcRRKT3boGgHheUEWC7+VlQw== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod-validation-error@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.0.0.tgz#69dee45a03ccf9739456bddb50b4d27f121c6f45" + integrity sha512-x+agsJJG9rvC7axF0xqTEdZhJkLHyIZkdOAWDJSmwGPzxNHMHwtU6w2yDOAAP6yuSfTAUhAMJRBfhVGY64ySEQ== + +zod@3.22.4: + version "3.22.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" + integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==