From 8e3d9220ce01d63af7eb6074e43679e9cc77b96c Mon Sep 17 00:00:00 2001 From: GuillaumeSD Date: Wed, 14 Feb 2024 04:40:43 +0100 Subject: [PATCH] init --- .eslintrc.json | 30 + .gitignore | 20 + LICENSE | 21 + README.md | 41 + firebase.json | 10 + next-env.d.ts | 5 + next.config.js | 11 + package-lock.json | 4141 +++++++++++++++++ package.json | 30 + public/analysis_icon.png | Bin 0 -> 25394 bytes public/back.png | Bin 0 -> 795 bytes public/back_to_start.png | Bin 0 -> 1122 bytes public/best.png | Bin 0 -> 1482 bytes public/black_bishop.svg | 12 + public/black_king.svg | 12 + public/black_knight.svg | 22 + public/black_pawn.svg | 5 + public/black_queen.svg | 27 + public/black_rook.svg | 39 + public/blunder.png | Bin 0 -> 1688 bytes public/book.png | Bin 0 -> 1341 bytes public/brilliant.png | Bin 0 -> 1272 bytes public/capture.mp3 | Bin 0 -> 6889 bytes public/castle.mp3 | Bin 0 -> 5353 bytes public/check.mp3 | Bin 0 -> 6121 bytes public/discord.png | Bin 0 -> 3100 bytes public/excellent.png | Bin 0 -> 1328 bytes public/favicon.png | Bin 0 -> 1250 bytes public/flip.png | Bin 0 -> 520 bytes public/forced.png | Bin 0 -> 1297 bytes public/game_end.mp3 | Bin 0 -> 5353 bytes public/go_to_end.png | Bin 0 -> 1084 bytes public/good.png | Bin 0 -> 1452 bytes public/great.png | Bin 0 -> 1557 bytes public/inaccuracy.png | Bin 0 -> 1523 bytes public/mistake.png | Bin 0 -> 1360 bytes public/move.mp3 | Bin 0 -> 3433 bytes public/next.png | Bin 0 -> 823 bytes public/promote.mp3 | Bin 0 -> 4969 bytes public/save.png | Bin 0 -> 376 bytes public/white_bishop.svg | 12 + public/white_king.svg | 9 + public/white_knight.svg | 19 + public/white_pawn.svg | 5 + public/white_queen.svg | 15 + public/white_rook.svg | 25 + src/lib/board.ts | 268 ++ src/lib/evalBar.ts | 55 + src/pages/_app.tsx | 15 + src/pages/_document.tsx | 15 + src/pages/index.tsx | 24 + src/sections/index/board.tsx | 37 + src/sections/index/reviewPanelBody.tsx | 30 + src/sections/index/reviewPanelToolbar.tsx | 43 + src/sections/index/reviewResult.tsx | 28 + src/sections/index/selectDepth.tsx | 22 + src/sections/index/selectGame/inputGame.tsx | 16 + .../index/selectGame/selectGameAccount.tsx | 22 + .../index/selectGame/selectGameOrigin.tsx | 46 + src/sections/index/topBar.tsx | 7 + src/types/index.tsx | 6 + styles/global.css | 44 + styles/index.css | 510 ++ tsconfig.json | 32 + 64 files changed, 5731 insertions(+) create mode 100644 .eslintrc.json create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 firebase.json create mode 100644 next-env.d.ts create mode 100644 next.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/analysis_icon.png create mode 100644 public/back.png create mode 100644 public/back_to_start.png create mode 100644 public/best.png create mode 100644 public/black_bishop.svg create mode 100644 public/black_king.svg create mode 100644 public/black_knight.svg create mode 100644 public/black_pawn.svg create mode 100644 public/black_queen.svg create mode 100644 public/black_rook.svg create mode 100644 public/blunder.png create mode 100644 public/book.png create mode 100644 public/brilliant.png create mode 100644 public/capture.mp3 create mode 100644 public/castle.mp3 create mode 100644 public/check.mp3 create mode 100644 public/discord.png create mode 100644 public/excellent.png create mode 100644 public/favicon.png create mode 100644 public/flip.png create mode 100644 public/forced.png create mode 100644 public/game_end.mp3 create mode 100644 public/go_to_end.png create mode 100644 public/good.png create mode 100644 public/great.png create mode 100644 public/inaccuracy.png create mode 100644 public/mistake.png create mode 100644 public/move.mp3 create mode 100644 public/next.png create mode 100644 public/promote.mp3 create mode 100644 public/save.png create mode 100644 public/white_bishop.svg create mode 100644 public/white_king.svg create mode 100644 public/white_knight.svg create mode 100644 public/white_pawn.svg create mode 100644 public/white_queen.svg create mode 100644 public/white_rook.svg create mode 100644 src/lib/board.ts create mode 100644 src/lib/evalBar.ts create mode 100644 src/pages/_app.tsx create mode 100644 src/pages/_document.tsx create mode 100644 src/pages/index.tsx create mode 100644 src/sections/index/board.tsx create mode 100644 src/sections/index/reviewPanelBody.tsx create mode 100644 src/sections/index/reviewPanelToolbar.tsx create mode 100644 src/sections/index/reviewResult.tsx create mode 100644 src/sections/index/selectDepth.tsx create mode 100644 src/sections/index/selectGame/inputGame.tsx create mode 100644 src/sections/index/selectGame/selectGameAccount.tsx create mode 100644 src/sections/index/selectGame/selectGameOrigin.tsx create mode 100644 src/sections/index/topBar.tsx create mode 100644 src/types/index.tsx create mode 100644 styles/global.css create mode 100644 styles/index.css create mode 100644 tsconfig.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..879e56b --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "root": true, + "env": { + "browser": true, + "node": true, + "es2017": true + }, + "extends": [ + "eslint:recommended", + "plugin:import/recommended", + "plugin:import/typescript", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended", + "next" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "sourceType": "module" + }, + "ignorePatterns": [".out/*"], + "plugins": ["@typescript-eslint", "import", "prettier"], + "rules": { + "quotes": ["error", "double", { "avoidEscape": true }], + "prettier/prettier": ["error", {"endOfLine": "auto"}], + "require-jsdoc": "off", + "@typescript-eslint/no-unused-vars": "error", + "react/no-unescaped-entities": 0 + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..014c0e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# dependencies +node_modules + +# next.js +.next/ +out/ + +# misc +.DS_Store +*.pem + +# env files +.env*.local +.env + +# firebase +.firebase + +# ts build +tsconfig.tsbuildinfo diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..c8f5b95 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 GuillaumeSD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..937d7f9 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# FreeChess + +This project is solely a frontend with tools for the chess community. + +It is built with [Next.js](https://nextjs.org/docs), [React](https://react.dev/learn/describing-the-ui) and [TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html). + +It is deployed on [Firebase](https://firebase.google.com/docs/hosting), you can see it live [here](https://freechess.web.app). + +## Getting Started + +First, you need at least node18 & npm installed on your machine. Then, you can install the dependencies : + +```bash +npm i +``` + +Then, you can run the development server : + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the app running. + +The development server will automatically reload if you change any of the source files. + +## Lint + +ESLint is configured with this project. You can run it with : + +```bash +npm run lint +``` + +## Deploy + +To deploy the app, you first need to install the firebase CLI, then run : + +```bash +npm run deploy +``` diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..aebd3e6 --- /dev/null +++ b/firebase.json @@ -0,0 +1,10 @@ +{ + "hosting": { + "site": "freechess", + "public": "out", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "cleanUrls": true, + "trailingSlash": false, + "predeploy": ["npm run lint", "npm run build"] + } +} diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..4f11a03 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..2a02684 --- /dev/null +++ b/next.config.js @@ -0,0 +1,11 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: "export", + trailingSlash: false, + reactStrictMode: true, + images: { + unoptimized: true, + }, +}; + +module.exports = nextConfig; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cf72028 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4141 @@ +{ + "name": "freechess", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "freechess", + "version": "0.1.0", + "dependencies": { + "next": "13.4.5", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "20.3.0", + "@types/react": "18.2.11", + "@types/react-dom": "18.2.4", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/parser": "^5.59.11", + "eslint": "8.42.0", + "eslint-config-next": "13.4.5", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "typescript": "5.1.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.2", + "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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", + "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@next/env": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.5.tgz", + "integrity": "sha512-SG/gKH6eij4vwQy87b/3mbpQ1X3x2vUdnpwq6/qL2IQWjtq58EY/UuNAp9CoEZoC9sI4L9AD1r+73Z9r4d3uug==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.5.tgz", + "integrity": "sha512-/xD/kyJhXmBZq+0xGKOdjL22c9/4i3mBAXaU9aOGEHTXqqFeOz8scJbScWF13aMqigeoFCsDqngIB2MIatcn4g==", + "dev": true, + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.5.tgz", + "integrity": "sha512-XvTzi2ASUN5bECFIAAcBiSoDb0xsq+KLj4F0bof4d4rdc+FgOqLvseGQaOXwVi1TIh5bHa7o4b6droSJMO5+2g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.5.tgz", + "integrity": "sha512-NQdqal/VKAqlJTuzhjZmNtdo8QSqwmfO7b2xJSAengTEVxQvsH76oGEzQeIv8Ci4NP6DysAFtFrJq++TmIxcUA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.5.tgz", + "integrity": "sha512-nB8TjtpJCXtzIFjYOMbnQu68ajkA8QK58TreHjTGojSQjsF0StDqo5zFHglVVVHrd8d3N/+EjC18yFNSWnd/ZA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.5.tgz", + "integrity": "sha512-W126XUW599OV3giSH9Co40VpT8VAOT47xONVHXZaYEpeca0qEevjj6WUr5IJu/8u+XGWm5xI1S0DYWjR6W+olw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.5.tgz", + "integrity": "sha512-ZbPLO/oztQdtjGmWvGhRmtkZ6j9kQqg65kiO7F7Ijj7ojTtu3hh/vY+XRsHa/4Cse6HgyJ8XGZJMGoLb8ecQfQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.5.tgz", + "integrity": "sha512-f+/h8KMNixVUoRB+2vza8I+jsthJ4KcvopGUsDIUHe7Q4t+m8nKwGFBeyNu9qNIenYK5g5QYEsSwYFEqZylrTQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.5.tgz", + "integrity": "sha512-dvtPQZ5+J+zUE1uq7gP853Oj63e+n0T1ydZ/yRdVh7d8zW9ZFuC9fFrg3MqP1cv1NPPur8rrTqDKN2mRBkSSBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.5.tgz", + "integrity": "sha512-gK9zwGe25x31S4AjPy3Bf2niQvHIAbmwgkzmqWG3OmD4K2Z/Dh2ju4vuyzPzIt0pwQe4B520meP9NizTBmVWSg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.5.tgz", + "integrity": "sha512-iyNQVc7eGehrik9RJt9xGcnO6b/pi8C7GCfg8RGenx1IlalEKbYRgBJloF7DQzwlrV47E9bQl8swT+JawaNcKA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgr/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "fast-glob": "^3.2.12", + "is-glob": "^4.0.3", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.1.tgz", + "integrity": "sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.0.tgz", + "integrity": "sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.11.tgz", + "integrity": "sha512-+hsJr9hmwyDecSMQAmX7drgbDpyE+EgSF6t7+5QEBAn1tQK7kl1vWZ4iRf6SjQ8lk7dyEULxUmZOIpN0W5baZA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz", + "integrity": "sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.11.tgz", + "integrity": "sha512-XxuOfTkCUiOSyBWIvHlUraLw/JT/6Io1365RO6ZuI88STKMavJZPNMU0lFcUTeQXEhHiv64CbxYxBNoDVSmghg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/type-utils": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.11.tgz", + "integrity": "sha512-s9ZF3M+Nym6CAZEkJJeO2TFHHDsKAM3ecNkLuH4i4s8/RCPnF5JRip2GyviYkeEAcwGMJxkqG9h2dAsnA1nZpA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.11.tgz", + "integrity": "sha512-dHFOsxoLFtrIcSj5h0QoBT/89hxQONwmn3FOQ0GOQcLOOXm+MIrS8zEAhs4tWl5MraxCY3ZJpaXQQdFMc2Tu+Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.11.tgz", + "integrity": "sha512-LZqVY8hMiVRF2a7/swmkStMYSoXMFlzL6sXV6U/2gL5cwnLWQgLEG8tjWPpaE4rMIdZ6VKWwcffPlo1jPfk43g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.59.11", + "@typescript-eslint/utils": "5.59.11", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.11.tgz", + "integrity": "sha512-epoN6R6tkvBYSc+cllrz+c2sOFWkbisJZWkOE+y3xHtvYaOE6Wk6B8e114McRJwFRjGvYdJwLXQH5c9osME/AA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.11.tgz", + "integrity": "sha512-YupOpot5hJO0maupJXixi6l5ETdrITxeo5eBOeuV7RSKgYdU3G5cxO49/9WRnJq9EMrB7AuTSLH/bqOsXi7wPA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/visitor-keys": "5.59.11", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.11.tgz", + "integrity": "sha512-didu2rHSOMUdJThLk4aZ1Or8IcO3HzCw/ZvEjTTIfjIrcdd5cvSIwwDy2AOlE7htSNp7QIZ10fLMyRCveesMLg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.11", + "@typescript-eslint/types": "5.59.11", + "@typescript-eslint/typescript-estree": "5.59.11", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.11", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.11.tgz", + "integrity": "sha512-KGYniTGG3AMTuKF9QBD7EIrvufkB6O6uX3knP73xbKLMpH+QRPcgnCxjWXSHjMRuOxFLovljqQgQpR0c7GvjoA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.11", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "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" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001499", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001499.tgz", + "integrity": "sha512-IhoQqRrW6WiecFcfZgoJS1YLEN1/HR1vHP5WNgjCARRW7KUNToHHTX3FrwCM+y4zkRa48D9rE90WFYc2IWhDWQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", + "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.0", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "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.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", + "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.42.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", + "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", + "import-fresh": "^3.0.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.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.4.5.tgz", + "integrity": "sha512-7qgJmRp9ClRzPgkzEz7ahK+Rasiv4k2aU3eqkkORzseNUGdtImZVYomcXUhUheHwkxzdN2p//nbIA7zJrCxsCg==", + "dev": true, + "dependencies": { + "@next/eslint-plugin-next": "13.4.5", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", + "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz", + "integrity": "sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "get-tsconfig": "^4.5.0", + "globby": "^13.1.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "synckit": "^0.8.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.0.tgz", + "integrity": "sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/next": { + "version": "13.4.5", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.5.tgz", + "integrity": "sha512-pfNsRLVM9e5Y1/z02VakJRfD6hMQkr24FaN2xc9GbcZDBxoOgiNAViSg5cXwlWCoMhtm4U315D7XYhgOr96Q3Q==", + "dependencies": { + "@next/env": "13.4.5", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=16.8.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.4.5", + "@next/swc-darwin-x64": "13.4.5", + "@next/swc-linux-arm64-gnu": "13.4.5", + "@next/swc-linux-arm64-musl": "13.4.5", + "@next/swc-linux-x64-gnu": "13.4.5", + "@next/swc-linux-x64-musl": "13.4.5", + "@next/swc-win32-arm64-msvc": "13.4.5", + "@next/swc-win32-ia32-msvc": "13.4.5", + "@next/swc-win32-x64-msvc": "13.4.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "fibers": ">= 3.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "fibers": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-applescript/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e9c6098 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "freechess", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint && tsc --noEmit", + "deploy": "firebase deploy --project=freechess --only hosting" + }, + "dependencies": { + "next": "13.4.5", + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@types/node": "20.3.0", + "@types/react": "18.2.11", + "@types/react-dom": "18.2.4", + "@typescript-eslint/eslint-plugin": "^5.59.11", + "@typescript-eslint/parser": "^5.59.11", + "eslint": "8.42.0", + "eslint-config-next": "13.4.5", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "typescript": "5.1.3" + } +} diff --git a/public/analysis_icon.png b/public/analysis_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dc093ddd1c312d069a2ca654111cf3a147bfb0 GIT binary patch literal 25394 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 literal 0 HcmV?d00001 diff --git a/public/back_to_start.png b/public/back_to_start.png new file mode 100644 index 0000000000000000000000000000000000000000..9baf52733ce29904d869101d419f1e11303f4fea GIT binary patch literal 1122 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*HX>F!~1ggt!8^42(d?zzD=37LaEA z4*~z6G%?h_fB*je{R>t}ls3GIV3O!GibKHG!Bn8g06AcB49UNL{zAlnu7&7;Gf)ix z$r9lmpebO3fXaae{rkUOe_1Rr6f;VK{DMIN3j~%?Q9c|p{8nCEd%m%@-DOwZHF@P{ z?ugfp-T&P6j)um(fv32eK%F?Q`!$LZ8d0*Tf1_q`WPZ!6KiaD*J<@J{xc&5fq zZ<{)eDYakZ)V<9Pr|+q*+4SA5&v*a-`8F??e700S$JrnFbf2#Ipvs>pTOe%kK zWf8;Ot+Oi+R4a9_+D!Wrw-m+?Ky0*=}7hVP`x4!gVQE9-ZWuZM(GkqlM72 z;x7@Y4s8*i3oHD5if#t0NqMOId(LC`vU^fe_$)^vtG9T@sh`~SCOmDY1ZV1>^D2ux ztTxZPdVHc# z^B5_lOD$b~Hd!a#=uXiV$%xzbPwLo>lL8unk9O5DpHJJKe`)RQ zG9{*FgY2H=E3231sTGMI|9G!9hH<$hbNYkI4+8Aw6Q(&tRkXO+esG8}ny{}z&c1M! z|KZ-sZ!)f0_O?wiy05;TiQD7zsbGKCIqlss>zf~+jo$z6{k`sgigEw@=R3XZJinuT46lR_pOn_U0^ literal 0 HcmV?d00001 diff --git a/public/best.png b/public/best.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bc8af6c796bc67b0a8dbaeb8775092579ce5d6 GIT binary patch literal 1482 zcmV;*1vUDKP)0s2HK#sB~S8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11y@N# zK~z|UomX2-6jvDj&Y78IFYZl*Sq*jlHO=)?PG?Z6BIyOl@srd@(U? zQv1+oZPS>5(x$0tv?WbTL|3c|g?a&71+O4V6;}loS-QZk3+&G2^nr-%1$LJIWzPJU z@B7X_GiS~rP-%P5tgs@8R~hge0a*Yr8vrW+9>4&Ay8tdThGSYCSG~UYh+hpZiI-4X zv#N-IZ3Ea!07)wKh5#H^DBZDniL+%=0!r%~X;8=>!mw72&~Z#*KslAgt(%sf>`^VC ztj6)O%y5tpk~&G^Fk=i|93g8ycX^hr+^$&Lrw?*A@Q3-2r^_Sr}kDm z-j0fmz1dgoc#{$GD*!GoDuCDL?FNH_%BF2<(!sz)O4zbZFaA;c$T!-7vXd)k$_ziL zCAXRFNVCjBx@9&}OfyvpARvMwlS6xJmlcKyU<^c3lyXXmK@}2!Lfg{Ov3<-qt_Vs@ zQjmNXCZM#&v6k{=o>~wMZ$Lr%3y;NQEQW^Hs}{ivbWusQWA&&2MN)RCt_DzGTLOW9 zyd(&`7Bf;7B?19OX1f4@mesDD%L|-6kz#v#bjxRFE>B1R&(p$^6OM(v-xqqU-&#he=jm}1Vuil;tDP<#kc9!5|axr)*dg3?2@_cTD1 zhr()x0@50uf-H;#%bEHtiVHR-G$R1WPM$w*Oq4{ldrpV>I3C4R(9(j)W zjj*QZ5br-F1(jYp=$Bg60Ow~!eJrsBP!2QFi&W+M2SQhK3%n1XZ76=-$UM~k%;fspZ^JphQJ;ytqeS|xv_ zwxg@#jhsU{cFTL?C1+W}TiWGm!{PdG;FH=ROA0Qu7GYKK7FdmG004cG88(w0-2>Oh z72v+(bGljr-5dajvf`Rkl=>Fsh%Q$0yxezSF{EQC=tosU363{?3yozEI)eb6K|nxq zqyBOwAX8-7W`Pn4f4~d(z}48Z56S3rzn0HE`>-;kEQ0z+~0L-2=)JgRgHGNm?FyqYxFp*VbRL^TYa$0K7o>_G|b; zP0v41FSgA!7&WX}!?Ck*13*Z4pPRwy_vWHG! kHBLDyZ literal 0 HcmV?d00001 diff --git a/public/black_bishop.svg b/public/black_bishop.svg new file mode 100644 index 0000000..e88c406 --- /dev/null +++ b/public/black_bishop.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/black_king.svg b/public/black_king.svg new file mode 100644 index 0000000..ba2ac9f --- /dev/null +++ b/public/black_king.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/black_knight.svg b/public/black_knight.svg new file mode 100644 index 0000000..04541a8 --- /dev/null +++ b/public/black_knight.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/public/black_pawn.svg b/public/black_pawn.svg new file mode 100644 index 0000000..b534de8 --- /dev/null +++ b/public/black_pawn.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/black_queen.svg b/public/black_queen.svg new file mode 100644 index 0000000..e557734 --- /dev/null +++ b/public/black_queen.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/black_rook.svg b/public/black_rook.svg new file mode 100644 index 0000000..4eec43c --- /dev/null +++ b/public/black_rook.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + diff --git a/public/blunder.png b/public/blunder.png new file mode 100644 index 0000000000000000000000000000000000000000..783af846dc99e9046cd76c7aeea855ed4d29cada GIT binary patch literal 1688 zcmV;J250$+P)0s2HK#sB~S8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11|>;E zK~z|Ut(R?VTh$%Lf9Lx8+OZS6d2z_{(mI4fo6wRpNwcjTnf z+KT2Y$B4(79y~{=ryFB>I>V8W#1I?WdV7yp40N_NE*B|25JI>CoPIym_dm#z^^a6J-XZ0~MHcl-ls7yuX$vZ1eSJ=QlsdZZG> zP({U?HX)V)xRx)ce$PH!b=M&j%POHboOoJVaa7kZdiZs&*?KRU*K6fz8lIL`R9_jv z_IJ}Gb|ek4YRBl4w`_vZk4VJ%os2PkInr+jm7AA;Aey{TtJV-`0vXv(Y5VSKHB{pQrAt%OYYu8 z?AUQq(I^8i?4$d)+c^KPLlzURn{PH@UGfBg+O@XnCSkB*Zl?gsLP6f%x&_^4L%Vbl zw_+nC4ICa1*WUG=&l3Cn$O}Upy!94bQz0}(Vf>X>DDe5HX#4VKNj>HzvI}uTNAv17 zHJsA76e%{cLlJ`VU;qi&?DiQkMWwi|&cusPUO_Vqs-~kTvpkQcQCLx7;!TfVwrGTP zHY-TlEIo5f*u>065jGpOk8Y!Q)oK%G_>IGeSuTL$a8UQeQxq=qXE;*Vx%lrlEcsQz zdey0j>+=~%ht1`p?#bWdojaw#ME@xQ2M^#*C-it({>Nu1Tx~Xade;ur;bF+yQJPS$ zRTQCk7BW!#`0p&@!SjRkJoIziv-?{p3Uz;Y+9H1Lzf`0n4yo%XTVlkYQmFUUHDX+rHra&WhNZ% z>c*?iJGsQAF)m)avHsN>r(;t-(qvH)`kds>kx`1`F$-_Py9A@8ID-p^hbhP^SlRJO zEcT*09FM&TCH&!uyy6LIO#bxD*#`B<#Kg!CeWm*w3f(`-MJ)a9 z_wcM-nZdfI#_awYI|-Y>r3crOrmwmlsF2+UWq;=T1Z?7ZIPy3@qI zbpx*2+6)Z$^q?F+W=Sf(y^(^dstlfbzXMyJbqUTyqpxi}J@6A?GTQ)NsNH#E!;WgF z_KkE~)G*NJOs6J9&SN#I8>Z!Q2!WQx8;Zr>{_&~P_XXj6y3JIF;}Cc~5bSO%Dy%58 z+v@@Bvx4cLDsn#&?24IZ%i;}0qX+KoKl4xoOjj+-MIfQ;2$8Rzp~=?dbg{kT+>$PJG7EghAzbueJ3N4&fOzpZ=H?D zPXePr-aYww-h4}da-giu<5{}W?X2{wb{9Zgmx=CB=zqQ8@GvkATm*uPNqV)9PMEnz iXv~Z*38bzj$^QYwqAH_PPYNXf0000 literal 0 HcmV?d00001 diff --git a/public/book.png b/public/book.png new file mode 100644 index 0000000000000000000000000000000000000000..65c83312b1a8d4c26a9194746fb55ce7a56aee80 GIT binary patch literal 1341 zcmV-D1;YA?P)0s2HK#sB~S8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11jEpRYerWe>3;C(DrrT;IUY!mQ@x}7A0!pzJ$iGMA2Z31)?#=m>3We6JkP3 zO^h02AP|hfQV@+G0TB>vM2Zl0D3rC9+Lpe)*X7Zc_uid5{!v<6+Slb)zrXICGiSbU z&dfP8Bj_Uva^FfcrJAF)o&{n$=yV_vFo6c(FW?kH?~cOWm%VJGzc1s8-a2f_UHlM& zWx$KTpg!siBG_STRxMn<{=6dr-{rqOMA@Ow1{Y4+Ft?9FX&1-U= z5?XvKAk86hCunq~VH@)ntXNlkw@u#Nur)X56{*GU|B4(yAlypYMTL1w7Iw9DB40dL z3$_Bre?{IA8bVs@XBU3B;XoGw1^G+w6H1+wLd5(Z|v@ zvmAi<6gLxR&tYih{TOCMw|=!=FP=I-sfn>f7{+4-c{$myF5j?20@zxuYU`+!jk0yv z5K6=KY6_@%5+PjJY0wPRfw3JfBIil9#H)>xY4H+-FlZpd@(+CIpR)Yt9?7m$~@I3p!Xau`E2Rj+1U}Mk!YF*d$+A;@3!^-_Le3IsYAJU+!V%7 zok>R4#CB0_DX6vPdg)otpD5;9=^5&4t3X+uNK+DB00b?|yKT>je7I8s4xPMocIuen zpFT1r^W&5R7byv@E;CXpK*hNtN{;+OWLzqn1n@!UyWj0Yr?3AxbKPWJVS-`EsDTh$mhv4ucJY(^Z}zTMifeb z-p1xLm&^N|0|BV{oS)hs@ibj9RSOTrDrIbloBSvNpOLDuSqM`u;AuD+9N<~@8 z_38?s7Pv|4i@8?};4H%gB59pn2(WtY-aY;S-{jwHb=)2F00000NkvXXu0mjfJT!#F literal 0 HcmV?d00001 diff --git a/public/brilliant.png b/public/brilliant.png new file mode 100644 index 0000000000000000000000000000000000000000..20fa69da5b601ba689ea0677ed8fe46c9084ab2b GIT binary patch literal 1272 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

6xw5_*x|QA(%=1f@$+ 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®G3NK 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 Cseq^e literal 0 HcmV?d00001 diff --git a/public/discord.png b/public/discord.png new file mode 100644 index 0000000000000000000000000000000000000000..94bcf4a5ed830a08d99a452c5f4450783d9d2d89 GIT binary patch literal 3100 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 literal 0 HcmV?d00001 diff --git a/public/forced.png b/public/forced.png new file mode 100644 index 0000000000000000000000000000000000000000..18006b62cd95e2a2a22bfbf54fbba14134d64ed8 GIT binary patch literal 1297 zcmV+s1@8KZP)0s2HK#sB~S8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11fEGm zK~z|UwO3nAR7V*8X3jalUf5+tS-MD7EZ!Qi8j;p$`_d9^S~X}d)TVtfZ8R}WYeF@? z`OsF8n%Wf9L~4wt)>Z_hpe-PwrBYA>Xe`B8U2xe&SXWn2*mIjcP>g#&yXyBg|2Ol0 z-^@9g`F{e9DEs9r3q)ZR1AB=OECFBzU;)4b@B-)s(8(C7OX8IJ4Xd{fYspKZO(?A> z$t9F+1@H!dM2&t$5K^sDdB^5e+pffAp!BEWbO>ZG0p8MLGz?Tm*fFY-Et?981~nVl zf3oB?1?o{kNLrl2eqf9_IgoW53yN9;IT{!!tt=^239EZj;s8Jhu_-`vS=H|Mg1AQq z`znjqGLYi{xF;q4C>Vo8ffbtyiq1~N9-hGd6UEtzio>ypFPfEyDJkii4G;oB1*{2qvT1FLul0#F_SLJQ%yL!G!c8KYaiG`v#*fh_p_621cDJ zVgjBI-mP_#4FxZ+$C^Ek>aqe6l(D-_987MJ)01YW?3yw%8^vo!pi1R;x3jz&J`#{$9PIZN@%3;Cg0 zO3jpj@K4XcIHp@?h9(FIl@&Sq@A??HH{!*Sn(~mGBFSDV`XuMm5_b*uqr9RFGB*~I zmqpplKNuP9HW>Bu0?FHV-Qc;%UneP12SP%Z3YU61aQa*|l2Z&}=L~yCy7(dI?S?7o zscQqtqqXIbL@Au&Y8KB<2k=8 zEj7&&aWR0PoyoF literal 0 HcmV?d00001 diff --git a/public/game_end.mp3 b/public/game_end.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d5efe4e30147e0cad6b9a8a6999de577db4e6601 GIT binary patch literal 5353 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 literal 0 HcmV?d00001 diff --git a/public/good.png b/public/good.png new file mode 100644 index 0000000000000000000000000000000000000000..0028e0fa9463b2a1841e5b9a78f4dd537a079347 GIT binary patch literal 1452 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 Z{{hf(5&%lFdW`@8002ovPDHLkV1n3evBCfV literal 0 HcmV?d00001 diff --git a/public/mistake.png b/public/mistake.png new file mode 100644 index 0000000000000000000000000000000000000000..3151cab3507214cd6438e9920540885e2f5ed4e1 GIT binary patch literal 1360 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 PY_s%b_xV5n)xf_1g6Wdu`ut+xFH%e#8ReJc4} z3%2`VRS(*(QBfni$Wz zC|2sb*t)r|Hy@}|k^0`bFSk~}`rPKy`@+^Y1#AB|zI7|(dhzPOp`VNn0qjTF-NH*x z7Ig}G_{T1oZ@fS0z%Ne+4b@*$-&S5&_`5DVKou_5PhpCUk?1g9V z59&R0aK^!zaaXDqq|CZ%RMnI4*l0D&2TccyKCMG@3@bO($osmm;*4T0&$t4E zP@7|I>(eW@?46W7E&6@_lS8XNSkL-#=&~@^TK^R-a#JWAQ!W)E3j+Ne^`;PWw($`>J+nhglWIFkLhsTEy(4{772GOa z0YR!=lq#TZMZj%A#9UTvnQU}T4P(L5PAX<2E=-E)ZH$9XdVpd zOSC?$06jRYhQ;Y9V>Oi3aQ~D*9c07(0_p$bGEQ3!k39siwXrcexXFKThD?j}*2Jr* z>8RiiHvYr@uI+yo|4U>RbXtvvS71ugAYX_mO{tK#CX*yFxrexXE@mz}kZq4b%GJL=|A=JB#7@XD_$68GGU zYlIPs@|L7zm))byI&HJo3cLAMR&72rmZnNF00;nh1zlfA44$HH;=aqqB}9EtY3;kM zG$|m>Gj@7^A#t?Z+)7-hWviUO!&$u+r~m}?|S=b{?abl+u!KL zmT^ZsZ@6Mv_G11-;G-=A;k+9mO;LN4Zr52@LwrzRb1R~Ui@G#Pb72g*{<#-<;T)oM zK9|ywd?_3M6vm6Q=e%|LvyIQF!yYTDI)GZE(Q`pBCK2%nIYOxL<; zimVM0uGUWj>z|cjRp%-uKx@sL`DA|FxZo}uRESkLSFZCbY#GtNaMHr`jLy2~R!!%a zE9;8d+WT<2|N7{Q)+P<=wtW_Huz{A_`rWu#h>#F9Xbn<_O{-+3@unq}@>b8z*QZy; zb9AbJXSt2!rAf(XEf_vo+my)$s$c&+V+DmWr7RL+$mhn-q-xS^ua$Z|yO#$j z=CgI@Bp&*Q0T9xOal6w1Sh*^3s!AGwp?i&bngLi3pS0n@b7fN<7^8o9d_fb&)ES}V z^eQn^y5e3u2va~Df@^`wbdZH|dcI^u# zsO9R?OVXO^a+ z5aM990FfJu?uhS9Og(Syo@S9kzgDUcMXay4j8usCfAwrg-x>gO$=^WpG63#0Y7OW4 z5YcS^09$-Uk;3M7*J+DHCIGUJhZ3?2yU5SScH=4FWenURG$Gd~mpOJx(J&P05xiD8 zv2t5S?5>e`0xe<#;pgOf@f@_GqRaZ#PUU#}cu)@T+lFaey#oM$Ce-kh zW`Mit;~I(T^{NYto>n|)I>b9RI%W_On8=|YQ87u1{|djxI>{ALIA=C|&Z5Hkb{rSN zK0os>#V3Aqx3e_gRMiIOedHZ)__Uzzv#g>}VsN7%+3{tXSb(ox5vxt58C^idU#%10 z+D}zuFF*J^Yth^|Hxox(ZPzYVFpF9qz96o`as+rd#RP9+tcPpql9M)iQ_rU;4T+li zfNPF{tR%!YUY4xj0^`x?V`G7w>UddJTrqqFgy&^KqL*+N$PDNRYy$J@wWNHi(ALdI znP%a=O}ZxZ`Dl@_X8rZqF%K=@x{Vg+`qQ}6C1$6RetvS|1C=W9CXR{=Ok~MWwIa=Xa`*~cj>(Bz*1ukc~> zF@;QaXBkf-zZvB`2IN8R8B|d29WZ&WdrFhij~0AK78Hcz4*f&Zw^vjjWM3w1s!2IX zoE*$aol8Jj&=MFQpv%mJg349|#Rq3d7VuQdQ1As(7e&ho#T5bx(@z@`4ws-~?&SxpxZYlaWbK4O@%y{_0;1 z0bS2uGUn@&n>3$1heiLj@~jBvNk}oST4cqMWmk#mgy#yV{ z58d7EJGV5@(+*X{zbYE-06TZ!obECGC$YlOK|Gu%sYRnX3IdPJ8d3Y|wd|4i#EHY~ zhyLMwv$`_F*{T|?L^j`kAE+)5Gz3XrjAI_-lVqk=_rO@DBV`@Rn42tGwR(amyNgQe z^zcK|PJfB-kW!I)E3=^&J@1sGscrQ&-J`DKk1vhoz2^Xy#VxIU_s;Ixm+kNT7~uK* zHVkpZ)Tt`NPc%}%y;5R{4|~cp&h>BbqS;QK^-keM)WeJRzR+Vz)RsTomoG(t(+Qux z6s@Lo2(nq~ju8{4N$EGCm9=84J+jqnQ2odpUzB8BC`VilAaEawzAxeVm`H=)=Q<#Cw8!GJGbk0mU;&9mc7i4;BkfDD4^ z*Cd{b6`XNJWjM<(1iq}N0Dz-2y3@rxm4R5u2(-Wr?a`1@9r4zrPZtg*kJ@>x=hvBp zzP=UN=pKO#Z?wA zaBez(^i!AJMvC{e_{?Xo3Hi_2j9L{DV2vzD8#myDj>i(1W#%nB^Pu{X zLiYPU#vaV`RvR{b9}}BIxS@~;{RdgLA#$D9tn89Xx8qKB?XY%xvq@n`XU_`Tu~%O` zM?lVnv|4k-6vlWDq5P4E!G-4+>lQvVet>M8NUf;hL#fQ=Ue1$&=pelFd@;LM+N8nd zi$^Nxg%L71UxBQdwof9bbl1Bq8)NxH7>tXkn->3`eyLaL;dI~$xa)QXJfX?C1~Nv|uxn3Xti6-9rh zt`f`%5Gp?u*MPVMxn@Ph6O|;Qd0HlNhn&2-(|;-dwCK7*?+|1a^Qd!HUOAk9L;e{n zv4I#-QXh%PN%NQ0~O777)Q7+ ze=O(5f}h!2D~_i4y{hxa2l|A#MMM^mT@012S3Z;&y(0HnwN|NzDy-hP94$xULshq$ z+qbVbUIcq_252m}={>ttT|L)5r}SViF7Nz(Qyk-xv8Fel6+o@mSjW;_g-bm_d83fV zTxjNWoe6SW6P+9oE{&rKvX7oI=2nr{PRMMUS7<1bT(kp`@BL6|^$!I4yq2=T{9iDR=36MnTxC zySJi#+WEf7T{H`aDK3zzfN-Y`f(?gqWTDKO!TRZUQ_pvCa9v9Tc*FBxr*iP%oHS@mQ12`mZq zY<*b6;BtWw*Gh7&;p%6#IX6P(jTi42+_}f>l|faeBdK>_f*leXC~Qlakk$6Kgqgj+ z*F%=Y8Rz~sF#{wsnaHf76(j&(Jzh`FW$RdgDX$a+Y1N# zWW>!4wg(8S&Cjp=>RETL-f?kk&e*+J>o_-E$w!bo@5jvGMPrVJoZjy5>~Wsa~w+p0B6f4a=s)E8mM*$42Jc}_u42Lbl}Kjp!2onI$xNPq z0hGs=fir@!L}7(X6Y3hR(mwDc~+E~KiE7*xeMbl%z z5@dM2*D2M!FX}o1CZN`x*>1YqF zxQ6hbe-3ctU3J9FE4`8?a3+v(r1P1&+qv=spC~y;&8PI;0AD>QL&l{VBU$t(;tT zXwrI-8!NWyjQTMXDcsy;Z3tz^oKKl~A6_y7DK4g43^ CKtRR- literal 0 HcmV?d00001 diff --git a/public/save.png b/public/save.png new file mode 100644 index 0000000000000000000000000000000000000000..ec26b43b723a8e3dddd1a48503707d070e49fa81 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*FxKn*g5>SN8&+|Kx)HlN-JQ%@HmM z@(X5o;3mf0Aji68+pje_C!?M&=>9lO{$2`D`i7^AV~EA+w^u!dniT|CFNhiFGBFkX z-+iocri4X9eX{tzORYZ`Ee?I)V?Hn=Tk=zY<}~dZ=Byp_d0Tsny^YmlPVmUfru}XF zxuZj6>FI|e&tA598hw;^>-1)4yV)MccObg&fH$9Gdi0K8Qzj%c>MC?PZg_bv$jPmb$?Mge7X4#_IN#yek7`-@3zdE-yIc*J{O7s9szV7Y?}D6oT|pn# z&u8ZfmA~h%zHmK`olC513v=q4XM3gwmjv!kzxmvD{v+x56A|aHo(!C;_{JpO=S_(8 Uj#Urm1O3S0>FVdQ&MBb@03x5dS^xk5 literal 0 HcmV?d00001 diff --git a/public/white_bishop.svg b/public/white_bishop.svg new file mode 100644 index 0000000..3a8eaa2 --- /dev/null +++ b/public/white_bishop.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/white_king.svg b/public/white_king.svg new file mode 100644 index 0000000..632ca1a --- /dev/null +++ b/public/white_king.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/white_knight.svg b/public/white_knight.svg new file mode 100644 index 0000000..a5f31c6 --- /dev/null +++ b/public/white_knight.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/public/white_pawn.svg b/public/white_pawn.svg new file mode 100644 index 0000000..b265fe1 --- /dev/null +++ b/public/white_pawn.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/white_queen.svg b/public/white_queen.svg new file mode 100644 index 0000000..8df7c8f --- /dev/null +++ b/public/white_queen.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/white_rook.svg b/public/white_rook.svg new file mode 100644 index 0000000..0574ca6 --- /dev/null +++ b/public/white_rook.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/src/lib/board.ts b/src/lib/board.ts new file mode 100644 index 0000000..31228c0 --- /dev/null +++ b/src/lib/board.ts @@ -0,0 +1,268 @@ +const boardFlipped = false; +const currentMoveIndex = 0; +const reportResults: any = undefined; + +export async function drawBoard( + ctx: CanvasRenderingContext2D, + fen = startingPositionFen +) { + // Draw surface of board + let colours = ["#f6dfc0", "#b88767"]; + + for (let y = 0; y < 8; y++) { + for (let x = 0; x < 8; x++) { + ctx.fillStyle = colours[(x + y) % 2]; + + ctx.fillRect(x * 90, y * 90, 90, 90); + } + } + + // Draw coordinates + ctx.font = "20px Arial"; + + let files = "abcdefgh".split(""); + for (let x = 0; x < 8; x++) { + ctx.fillStyle = colours[x % 2]; + ctx.fillText(boardFlipped ? files[7 - x] : files[x], x * 90 + 5, 715); + } + for (let y = 0; y < 8; y++) { + ctx.fillStyle = colours[(y + 1) % 2]; + ctx.fillText( + boardFlipped ? (y + 1).toString() : (8 - y).toString(), + 5, + y * 90 + 22 + ); + } + + // Draw last move highlight and top move arrows + let lastMove = reportResults?.positions[currentMoveIndex]; + + let lastMoveCoordinates = { + from: { x: 0, y: 0 }, + to: { x: 0, y: 0 }, + }; + + if (currentMoveIndex > 0 && lastMove) { + let lastMoveUCI = lastMove.move?.uci; + if (!lastMoveUCI) return; + + lastMoveCoordinates.from = getBoardCoordinates(lastMoveUCI.slice(0, 2)); + lastMoveCoordinates.to = getBoardCoordinates(lastMoveUCI.slice(2, 4)); + + ctx.globalAlpha = 0.7; + ctx.fillStyle = + classificationColours[ + reportResults?.positions[currentMoveIndex].classification ?? "book" + ]; + ctx.fillRect( + lastMoveCoordinates.from.x * 90, + lastMoveCoordinates.from.y * 90, + 90, + 90 + ); + ctx.fillRect( + lastMoveCoordinates.to.x * 90, + lastMoveCoordinates.to.y * 90, + 90, + 90 + ); + ctx.globalAlpha = 1; + } + + // Draw pieces + let fenBoard = fen.split(" ")[0]; + let x = boardFlipped ? 7 : 0, + y = x; + + for (let character of fenBoard) { + if (character == "/") { + x = boardFlipped ? 7 : 0; + y += boardFlipped ? -1 : 1; + } else if (/\d/g.test(character)) { + x += parseInt(character) * (boardFlipped ? -1 : 1); + } else { + const pieceSrc = pieceImagesSrc[character]; + if (!pieceSrc) throw new Error(`No image source for piece ${character}`); + const pieceImage = await loadImage(pieceSrc); + + ctx.drawImage(pieceImage, x * 90, y * 90, 90, 90); + x += boardFlipped ? -1 : 1; + } + } + + // Draw last move classification + if (currentMoveIndex > 0 && reportResults) { + let classification = + reportResults?.positions[currentMoveIndex]?.classification; + + if (!classification) return; + + const iconSrc = classificationIconsSrc[classification]; + if (!iconSrc) + throw new Error(`No image source for classification ${classification}`); + const classificationIcon = await loadImage(iconSrc); + + ctx.drawImage( + classificationIcon, + lastMoveCoordinates.to.x * 90 + 68, + lastMoveCoordinates.to.y * 90 - 10, + 32, + 32 + ); + } + + // Draw engine suggestion arrows + if (true) { + let arrowAttributes = [ + { + width: 20, + opacity: 0.8, + }, + { + width: 12, + opacity: 0.55, + }, + ]; + + let topLineIndex = -1; + for (let topLine of lastMove?.topLines ?? []) { + topLineIndex++; + + let from = getBoardCoordinates(topLine.moveUCI.slice(0, 2)); + let to = getBoardCoordinates(topLine.moveUCI.slice(2, 4)); + + let arrow = drawArrow( + from.x * 90 + 45, + from.y * 90 + 45, + to.x * 90 + 45, + to.y * 90 + 45, + arrowAttributes[topLineIndex].width, + ctx + ); + if (!arrow) continue; + + ctx.globalAlpha = arrowAttributes[topLineIndex].opacity; + ctx.drawImage(arrow, 0, 0); + ctx.globalAlpha = 1; + } + } +} + +function getBoardCoordinates(square: string): { x: number; y: number } { + if (boardFlipped) { + return { + x: 7 - "abcdefgh".split("").indexOf(square.slice(0, 1)), + y: parseInt(square.slice(1)) - 1, + }; + } else { + return { + x: "abcdefgh".split("").indexOf(square.slice(0, 1)), + y: 8 - parseInt(square.slice(1)), + }; + } +} + +function drawArrow( + fromX: number, + fromY: number, + toX: number, + toY: number, + width: number, + arrowCtx: CanvasRenderingContext2D +) { + if (!arrowCtx) return; + + arrowCtx.canvas.width = 720; + arrowCtx.canvas.height = 720; + + let headlen = 15; + let angle = Math.atan2(toY - fromY, toX - fromX); + toX -= Math.cos(angle) * (width * 1.15); + toY -= Math.sin(angle) * (width * 1.15); + + arrowCtx.beginPath(); + arrowCtx.moveTo(fromX, fromY); + arrowCtx.lineTo(toX, toY); + arrowCtx.strokeStyle = classificationColours.best; + arrowCtx.lineWidth = width; + arrowCtx.stroke(); + + arrowCtx.beginPath(); + arrowCtx.moveTo(toX, toY); + arrowCtx.lineTo( + toX - headlen * Math.cos(angle - Math.PI / 7), + toY - headlen * Math.sin(angle - Math.PI / 7) + ); + + arrowCtx.lineTo( + toX - headlen * Math.cos(angle + Math.PI / 7), + toY - headlen * Math.sin(angle + Math.PI / 7) + ); + + arrowCtx.lineTo(toX, toY); + arrowCtx.lineTo( + toX - headlen * Math.cos(angle - Math.PI / 7), + toY - headlen * Math.sin(angle - Math.PI / 7) + ); + + arrowCtx.strokeStyle = classificationColours.best; + arrowCtx.lineWidth = width; + arrowCtx.stroke(); + arrowCtx.fillStyle = classificationColours.best; + arrowCtx.fill(); + + return arrowCtx.canvas; +} + +const startingPositionFen = + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; + +const classificationColours: { [key: string]: string } = { + brilliant: "#1baaa6", + great: "#5b8baf", + best: "#98bc49", + excellent: "#98bc49", + good: "#97af8b", + inaccuracy: "#f4bf44", + mistake: "#e28c28", + blunder: "#c93230", + forced: "#97af8b", + book: "#a88764", +}; + +const pieceImagesSrc: Record = { + P: "white_pawn.svg", + N: "white_knight.svg", + B: "white_bishop.svg", + R: "white_rook.svg", + Q: "white_queen.svg", + K: "white_king.svg", + p: "black_pawn.svg", + n: "black_knight.svg", + b: "black_bishop.svg", + r: "black_rook.svg", + q: "black_queen.svg", + k: "black_king.svg", +}; + +const classificationIconsSrc: Record = { + brilliant: "brilliant.png", + great: "great.png", + best: "best.png", + excellent: "excellent.png", + good: "good.png", + inaccuracy: "inaccuracy.png", + mistake: "mistake.png", + blunder: "blunder.png", + forced: "forced.png", + book: "book.png", +}; + +async function loadImage(filename: string): Promise { + return new Promise((res) => { + const image = new Image(); + image.src = filename; + + image.addEventListener("load", () => res(image)); + }); +} diff --git a/src/lib/evalBar.ts b/src/lib/evalBar.ts new file mode 100644 index 0000000..925c577 --- /dev/null +++ b/src/lib/evalBar.ts @@ -0,0 +1,55 @@ +export async function drawEvaluationBar( + evaluationBarCtx: CanvasRenderingContext2D, + evaluation = initialEvaluation +) { + evaluationBarCtx.clearRect(0, 0, 30, 720); + evaluationBarCtx.font = "16px Arial"; + evaluationBarCtx.fillStyle = "#1e1e1e"; + + if (evaluation.type == "cp") { + let height = Math.max(Math.min(360 - evaluation.value / 3, 680), 40); + evaluationBarCtx.fillRect(0, 0, 30, height); + + let evaluationText = Math.abs(evaluation.value / 100).toFixed(1); + let evaluationTextWidth = + evaluationBarCtx.measureText(evaluationText).width; + + let evaluationTextY = evaluation.value >= 0 ? 710 : 20; + evaluationBarCtx.fillStyle = evaluation.value >= 0 ? "#1e1e1e" : "#ffffff"; + evaluationBarCtx.fillText( + evaluationText, + 15 - evaluationTextWidth / 2, + evaluationTextY, + 30 + ); + } else { + let evaluationText = "M" + Math.abs(evaluation.value).toString(); + let evaluationTextWidth = + evaluationBarCtx.measureText(evaluationText).width; + + if (evaluation.value > 0) { + evaluationBarCtx.fillStyle = "#1e1e1e"; + evaluationBarCtx.fillText( + evaluationText, + 15 - evaluationTextWidth / 2, + 710, + 30 + ); + } else if (evaluation.value < 0) { + evaluationBarCtx.fillRect(0, 0, 30, 720); + + evaluationBarCtx.fillStyle = "#ffffff"; + evaluationBarCtx.fillText( + evaluationText, + 15 - evaluationTextWidth / 2, + 20, + 30 + ); + } else if (evaluation.value == 0) { + evaluationBarCtx.fillStyle = "#676767"; + evaluationBarCtx.fillRect(0, 0, 30, 720); + } + } +} + +const initialEvaluation = { type: "cp", value: 0 }; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000..c7611eb --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,15 @@ +import { AppProps } from "next/app"; +import Head from "next/head"; +import "../../styles/global.css"; +import "../../styles/index.css"; + +export default function MyApp({ Component, pageProps }: AppProps) { + return ( + <> + + Free Chess + + + + ); +} diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx new file mode 100644 index 0000000..beb928c --- /dev/null +++ b/src/pages/_document.tsx @@ -0,0 +1,15 @@ +import { Head, Html, Main, NextScript } from "next/document"; + +export default function Document() { + return ( + + + + + +

+ + + + ); +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000..d4068ba --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,24 @@ +import TopBar from "@/sections/index/topBar"; +import Board from "@/sections/index/board"; +import ReviewPanelBody from "@/sections/index/reviewPanelBody"; +import ReviewPanelToolBar from "@/sections/index/reviewPanelToolbar"; + +export default function HomePage() { + return ( + <> + + +
+
+ + +
+ + + +
+
+
+ + ); +} diff --git a/src/sections/index/board.tsx b/src/sections/index/board.tsx new file mode 100644 index 0000000..ad6011e --- /dev/null +++ b/src/sections/index/board.tsx @@ -0,0 +1,37 @@ +import { drawBoard } from "@/lib/board"; +import { drawEvaluationBar } from "@/lib/evalBar"; +import { useEffect, useRef } from "react"; + +export default function Board() { + const boardRef = useRef(null); + const evalBarRef = useRef(null); + + useEffect(() => { + const ctx = boardRef.current?.getContext("2d"); + if (!ctx) return; + + drawBoard(ctx); + + const evalCtx = evalBarRef.current?.getContext("2d"); + if (!evalCtx) return; + drawEvaluationBar(evalCtx); + }, []); + + return ( +
+ + +
+
+ Black Player (?) +
+ + + +
+ White Player (?) +
+
+
+ ); +} diff --git a/src/sections/index/reviewPanelBody.tsx b/src/sections/index/reviewPanelBody.tsx new file mode 100644 index 0000000..51c7249 --- /dev/null +++ b/src/sections/index/reviewPanelBody.tsx @@ -0,0 +1,30 @@ +import ReviewResult from "./reviewResult"; +import SelectDepth from "./selectDepth"; +import SelectGameOrigin from "./selectGame/selectGameOrigin"; + +export default function ReviewPanelBody() { + return ( +
+

+ 📑 Game Report +

+ + + + + + + + {false && } + + + + + + {false && } +
+ ); +} diff --git a/src/sections/index/reviewPanelToolbar.tsx b/src/sections/index/reviewPanelToolbar.tsx new file mode 100644 index 0000000..2b8454f --- /dev/null +++ b/src/sections/index/reviewPanelToolbar.tsx @@ -0,0 +1,43 @@ +export default function ReviewPanelToolBar() { + return ( +
+
+ Flip Board + Back to start + Back + Next + Go to end + Save analysis +
+ +
+ + Suggestion Arrows +
+
+ ); +} diff --git a/src/sections/index/reviewResult.tsx b/src/sections/index/reviewResult.tsx new file mode 100644 index 0000000..5f23f8d --- /dev/null +++ b/src/sections/index/reviewResult.tsx @@ -0,0 +1,28 @@ +export default function ReviewResult() { + return ( +
+

+ Accuracies +

+
+ 0% + 0% +
+ +
+ + +
+ + Qxf2+ was best + +
+

+ Engine +

+
+ + +
+ ); +} diff --git a/src/sections/index/selectDepth.tsx b/src/sections/index/selectDepth.tsx new file mode 100644 index 0000000..b87e445 --- /dev/null +++ b/src/sections/index/selectDepth.tsx @@ -0,0 +1,22 @@ +export default function SelectDepth() { + return ( + <> + ⚙️ Search depth +
+ + + 16 🐇 + +
+
+ Lower depths recommended for slower devices. +
+ + ); +} diff --git a/src/sections/index/selectGame/inputGame.tsx b/src/sections/index/selectGame/inputGame.tsx new file mode 100644 index 0000000..d295f70 --- /dev/null +++ b/src/sections/index/selectGame/inputGame.tsx @@ -0,0 +1,16 @@ +interface Props { + placeholder?: string; +} + +export default function InputGame({ placeholder }: Props) { + return ( +