├── src ├── vite-env.d.ts ├── main.tsx ├── App.css ├── App.tsx ├── index.css ├── components │ └── hands-capture │ │ └── hooks │ │ ├── useKeyPointClassifier.ts │ │ └── index.ts └── assets │ └── react.svg ├── .eslintrc.json ├── public ├── tf-models │ ├── key-point-classifier │ │ ├── group1-shard1of1.bin │ │ └── model.json │ ├── layers-kepoint-classifier │ │ ├── group1-shard1of1.bin │ │ └── model.json │ └── model_graph_point_history │ │ ├── group1-shard1of1.bin │ │ └── model.json ├── js │ ├── hands.worker.js │ ├── cv.worker.js │ └── hands.js └── vite.svg ├── constants.ts ├── vite.config.ts ├── tsconfig.node.json ├── index.html ├── .gitignore ├── tsconfig.json ├── .travis.yml ├── .github └── workflows │ └── node.js.yml ├── package.json ├── README.md ├── services ├── hands.js └── cv.js └── yarn.lock /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /public/tf-models/key-point-classifier/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TomasGonzalez/hand-gesture-recognition-using-mediapipe-in-react/HEAD/public/tf-models/key-point-classifier/group1-shard1of1.bin -------------------------------------------------------------------------------- /constants.ts: -------------------------------------------------------------------------------- 1 | const prefix = 'http://localhost:3000'; 2 | 3 | export { prefix }; 4 | 5 | const CONFIGS = { 6 | keypointClassifierLabels: ['Open', 'Closed', 'Pointing'], 7 | }; 8 | 9 | export default CONFIGS; 10 | -------------------------------------------------------------------------------- /public/tf-models/layers-kepoint-classifier/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TomasGonzalez/hand-gesture-recognition-using-mediapipe-in-react/HEAD/public/tf-models/layers-kepoint-classifier/group1-shard1of1.bin -------------------------------------------------------------------------------- /public/tf-models/model_graph_point_history/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TomasGonzalez/hand-gesture-recognition-using-mediapipe-in-react/HEAD/public/tf-models/model_graph_point_history/group1-shard1of1.bin -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | server: { 7 | port: 3000 8 | }, 9 | plugins: [react()], 10 | }) 11 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | import App from './App.tsx' 4 | import './index.css' 5 | 6 | ReactDOM.createRoot(document.getElementById('root')!).render( 7 | 8 | 9 | , 10 | ) 11 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | 14 | # production 15 | /build 16 | 17 | # misc 18 | .DS_Store 19 | *.pem 20 | 21 | # debug 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | .pnpm-debug.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noFallthroughCasesInSwitch": true 22 | }, 23 | "include": ["src"], 24 | "references": [{ "path": "./tsconfig.node.json" }] 25 | } 26 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | #root { 2 | max-width: 1280px; 3 | margin: 0 auto; 4 | padding: 2rem; 5 | text-align: center; 6 | } 7 | 8 | .logo { 9 | height: 6em; 10 | padding: 1.5em; 11 | will-change: filter; 12 | transition: filter 300ms; 13 | } 14 | .logo:hover { 15 | filter: drop-shadow(0 0 2em #646cffaa); 16 | } 17 | .logo.react:hover { 18 | filter: drop-shadow(0 0 2em #61dafbaa); 19 | } 20 | 21 | @keyframes logo-spin { 22 | from { 23 | transform: rotate(0deg); 24 | } 25 | to { 26 | transform: rotate(360deg); 27 | } 28 | } 29 | 30 | @media (prefers-reduced-motion: no-preference) { 31 | a:nth-of-type(2) .logo { 32 | animation: logo-spin infinite 20s linear; 33 | } 34 | } 35 | 36 | .card { 37 | padding: 2em; 38 | } 39 | 40 | .read-the-docs { 41 | color: #888; 42 | } 43 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js # Node.js based project 2 | node_js: 3 | - 12 # Level of Node.js to use 4 | cache: 5 | directories: 6 | - node_modules # Cache the node_modules folder for quicker build times 7 | script: 8 | - npm run build # Runs next build 9 | - npm run export # Runs next export and generates the out directory 10 | - touch out/.nojekyll # Creates a file telling Github not to build the project using Jekyll 11 | deploy: 12 | provider: pages # Informs Travis this is a deployment to GitHub Pages 13 | skip_cleanup: true # Prevents Travis from resetting the working directory made during the build 14 | github_token: $github_token # GitHub access token to use when pushing to the gh-pages branch 15 | local_dir: out # Directory to push to the gh-pages branch 16 | on: 17 | all_branches: true 18 | condition: $TRAVIS_BRANCH =~ ^(master|main)$ 19 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useRef } from "react"; 2 | import useGestureRecognition from "./components/hands-capture/hooks"; 3 | 4 | function App() { 5 | const videoElement = useRef() 6 | const canvasEl = useRef() 7 | const { maxVideoWidth, maxVideoHeight } = useGestureRecognition({ 8 | videoElement, 9 | canvasEl 10 | }); 11 | 12 | return ( 13 |
21 |
33 | ); 34 | } 35 | 36 | export default App -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to GitHub Pages 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | 11 | env: 12 | NEXT_PUBLIC_BASE_PATH: /hand-gesture-recognition-using-mediapipe-in-react 13 | 14 | strategy: 15 | matrix: 16 | node-version: [16.x] 17 | 18 | steps: 19 | - name: Get files 20 | uses: actions/checkout@v2 21 | - name: Use Node.js ${{ matrix.node-version }} 22 | uses: actions/setup-node@v2 23 | with: 24 | node-version: ${{ matrix.node-version }} 25 | - name: Install packages 26 | run: npm ci 27 | - name: Build project & Export static files 28 | run: npm run build 29 | - name: Add .nojekyll file 30 | run: touch ./out/.nojekyll 31 | - name: Deploy 32 | uses: JamesIves/github-pages-deploy-action@4.1.1 33 | with: 34 | branch: gh-pages 35 | folder: out 36 | -------------------------------------------------------------------------------- /public/js/hands.worker.js: -------------------------------------------------------------------------------- 1 | // import * as comlink from 'comlink'; 2 | importScripts('@mediapipe/hands/hands.js'); 3 | // importScripts( 4 | // 'https://cdn.jsdelivr.net/npm/@mediapipe/hands@0.4.1635986972/hands.js' 5 | // ); 6 | let hands; 7 | 8 | async function loadModel(e) { 9 | hands = new this.Hands({ 10 | locateFile: (file, base) => { 11 | return `https://cdn.jsdelivr.net/npm/@mediapipe/hands@${this.VERSION}/${file}`; 12 | }, 13 | }); 14 | 15 | hands.setOptions({ 16 | modelComplexity: 1, 17 | maxNumHands: 2, 18 | minDetectionConfidence: 0.5, 19 | minTrackingConfidence: 0.5, 20 | }); 21 | 22 | await hands.initialize(); 23 | 24 | hands.onResults((results) => { 25 | postMessage({ msg, payload: result }); 26 | }); 27 | 28 | postMessage({ msg: e.data.msg }); 29 | } 30 | 31 | onmessage = function (e) { 32 | switch (e.data.msg) { 33 | case 'load': { 34 | loadModel(e); 35 | break; 36 | } 37 | case 'imageProcessing': 38 | console.log(e.data, 'running image processing'); 39 | console.log('is this loading 5'); 40 | return hands.send({ image: e.data.payload }); 41 | default: 42 | break; 43 | } 44 | }; 45 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hand-gesture-recognition-using-mediapipe-in-react", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "react": "^18.2.0", 14 | "react-dom": "^18.2.0", 15 | "@mediapipe/camera_utils": "^0.3.1640029074", 16 | "@mediapipe/control_utils": "^0.6.1629159505", 17 | "@mediapipe/drawing_utils": "^0.3.1620248257", 18 | "@mediapipe/hands": "^0.4.1646424915", 19 | "@techstark/opencv-js": "^4.6.0-release.1", 20 | "@tensorflow/tfjs": "^3.21.0", 21 | "comlink": "^4.3.1", 22 | "lodash": "^4.17.21" 23 | }, 24 | "devDependencies": { 25 | "@types/react": "^18.2.15", 26 | "@types/react-dom": "^18.2.7", 27 | "@typescript-eslint/eslint-plugin": "^6.0.0", 28 | "@typescript-eslint/parser": "^6.0.0", 29 | "@vitejs/plugin-react": "^4.0.3", 30 | "eslint": "^8.45.0", 31 | "eslint-plugin-react-hooks": "^4.6.0", 32 | "eslint-plugin-react-refresh": "^0.4.3", 33 | "typescript": "^5.0.2", 34 | "vite": "^4.4.5", 35 | "gh-pages": "^4.0.0" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This is an implementation of the repo: 2 | 3 | https://github.com/Kazuhito00/hand-gesture-recognition-using-mediapipe 4 | 5 | but in React, and nextJS. 6 | The working demo is deployed in here https://tomasgonzalez.github.io/hand-gesture-recognition-using-mediapipe-in-react/ . 7 | 8 | https://user-images.githubusercontent.com/26396804/198848050-095785e7-9a83-444d-91d0-f432eb21a4a4.mp4 9 | 10 | I made It because I need it for another project, and thought that It would be a good idea to upload it in this rough form just in case It helps anyone. 11 | 12 | ## To convert the hdf5 model to tfjs you can use the [tensorflowjs_converter](https://www.tensorflow.org/js/guide/conversion) CLI following command: 13 | tensorflowjs_converter --input_format keras --output_format tfjs_graph_model model/keypoint_classifier/keypoint_classifier.hdf5 tfjs_model/ 14 | 15 | ## Getting Started 16 | 17 | First, run the development server: 18 | 19 | ```bash 20 | yarn dev 21 | ``` 22 | 23 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 24 | 25 | ## Warning 26 | This project originally was build in `NEXTJS` I migrated it to vite because of `SSR` issues, It should be working now. Although the github pages `CI` Pipeline is not working and also I removed the env variables for the `public` dir prefix so you will have to add it in order to load the gesture recognition model. 27 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | -webkit-text-size-adjust: 100%; 15 | } 16 | 17 | a { 18 | font-weight: 500; 19 | color: #646cff; 20 | text-decoration: inherit; 21 | } 22 | a:hover { 23 | color: #535bf2; 24 | } 25 | 26 | body { 27 | margin: 0; 28 | display: flex; 29 | place-items: center; 30 | min-width: 320px; 31 | min-height: 100vh; 32 | } 33 | 34 | h1 { 35 | font-size: 3.2em; 36 | line-height: 1.1; 37 | } 38 | 39 | button { 40 | border-radius: 8px; 41 | border: 1px solid transparent; 42 | padding: 0.6em 1.2em; 43 | font-size: 1em; 44 | font-weight: 500; 45 | font-family: inherit; 46 | background-color: #1a1a1a; 47 | cursor: pointer; 48 | transition: border-color 0.25s; 49 | } 50 | button:hover { 51 | border-color: #646cff; 52 | } 53 | button:focus, 54 | button:focus-visible { 55 | outline: 4px auto -webkit-focus-ring-color; 56 | } 57 | 58 | @media (prefers-color-scheme: light) { 59 | :root { 60 | color: #213547; 61 | background-color: #ffffff; 62 | } 63 | a:hover { 64 | color: #747bff; 65 | } 66 | button { 67 | background-color: #f9f9f9; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /services/hands.js: -------------------------------------------------------------------------------- 1 | class Hands { 2 | /** 3 | * We will use this method privately to communicate with the worker and 4 | * return a promise with the result of the event. This way we can call 5 | * the worker asynchronously. 6 | */ 7 | 8 | _dispatch(event) { 9 | const { msg } = event; 10 | this._status[msg] = ['loading']; 11 | this.worker.postMessage(event); 12 | return new Promise((res, rej) => { 13 | let interval = setInterval(() => { 14 | const status = this._status[msg]; 15 | if (status[0] === 'done') res(status[1]); 16 | if (status[0] === 'error') rej(status[1]); 17 | if (status[0] !== 'loading') { 18 | delete this._status[msg]; 19 | clearInterval(interval); 20 | } 21 | }, 50); 22 | }); 23 | } 24 | 25 | /** 26 | * First, we will load the worker and capture the onmessage 27 | * and onerror events to always know the status of the event 28 | * we have triggered. 29 | * 30 | * Then, we are going to call the 'load' event, as we've just 31 | * implemented it so that the worker can capture it. 32 | */ 33 | load() { 34 | this._status = {}; 35 | this.worker = new Worker('/js/hands.worker.js'); // load worker 36 | 37 | // Capture events and save [status, event] inside the _status object 38 | this.worker.onmessage = (e) => { 39 | this._status[e.data.msg] = ['done', e]; 40 | }; 41 | this.worker.onerror = (e) => { 42 | console.log(e, 'this is error'); 43 | this._status[e.message] = ['error', e]; 44 | }; 45 | return this._dispatch({ msg: 'load' }); 46 | } 47 | /** 48 | * We are going to use the _dispatch event we created before to 49 | * call the postMessage with the msg and the image as payload. 50 | * 51 | * Thanks to what we've implemented in the _dispatch, this will 52 | * return a promise with the processed image. 53 | */ 54 | imageProcessing(payload) { 55 | return this._dispatch({ msg: 'imageProcessing', payload }); 56 | } 57 | } 58 | 59 | // Export the same instant everywhere 60 | export default new Hands(); 61 | -------------------------------------------------------------------------------- /services/cv.js: -------------------------------------------------------------------------------- 1 | class CV { 2 | /** 3 | * We will use this method privately to communicate with the worker and 4 | * return a promise with the result of the event. This way we can call 5 | * the worker asynchronously. 6 | */ 7 | 8 | _dispatch(event) { 9 | const { msg } = event; 10 | this._status[msg] = ['loading']; 11 | this.worker.postMessage(event); 12 | return new Promise((res, rej) => { 13 | let interval = setInterval(() => { 14 | const status = this._status[msg]; 15 | if (status[0] === 'done') res(status[1]); 16 | if (status[0] === 'error') rej(status[1]); 17 | if (status[0] !== 'loading') { 18 | delete this._status[msg]; 19 | clearInterval(interval); 20 | } 21 | }, 50); 22 | }); 23 | } 24 | 25 | /** 26 | * First, we will load the worker and capture the onmessage 27 | * and onerror events to always know the status of the event 28 | * we have triggered. 29 | * 30 | * Then, we are going to call the 'load' event, as we've just 31 | * implemented it so that the worker can capture it. 32 | */ 33 | load() { 34 | this._status = {}; 35 | this.worker = new Worker('/js/cv.worker.js'); // load worker 36 | 37 | // Capture events and save [status, event] inside the _status object 38 | this.worker.onmessage = (e) => { 39 | console.log(['done', e], e.data.msg, e.data); 40 | this._status[e.data.msg] = ['done', e]; 41 | }; 42 | this.worker.onerror = (e) => { 43 | console.log(e, 'this is error'); 44 | this._status[e.message] = ['error', e]; 45 | }; 46 | return this._dispatch({ msg: 'load' }); 47 | } 48 | /** 49 | * We are going to use the _dispatch event we created before to 50 | * call the postMessage with the msg and the image as payload. 51 | * 52 | * Thanks to what we've implemented in the _dispatch, this will 53 | * return a promise with the processed image. 54 | */ 55 | imageProcessing(payload) { 56 | console.log('trying to run image prossessing'); 57 | return this._dispatch({ msg: 'imageProcessing', payload }); 58 | } 59 | } 60 | 61 | // Export the same instant everywhere 62 | export default new CV(); 63 | -------------------------------------------------------------------------------- /public/tf-models/layers-kepoint-classifier/model.json: -------------------------------------------------------------------------------- 1 | {"format": "layers-model", "generatedBy": "keras v2.4.0", "convertedBy": "TensorFlow.js Converter v3.18.0", "modelTopology": {"keras_version": "2.4.0", "backend": "tensorflow", "model_config": {"class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 42], "dtype": "float32", "sparse": false, "ragged": false, "name": "input_1"}}, {"class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": "float32", "rate": 0.2, "noise_shape": null, "seed": null}}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 20, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": "float32", "rate": 0.4, "noise_shape": null, "seed": null}}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 10, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 3, "activation": "softmax", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}]}}}, "weightsManifest": [{"paths": ["group1-shard1of1.bin"], "weights": [{"name": "dense/kernel", "shape": [42, 20], "dtype": "float32"}, {"name": "dense/bias", "shape": [20], "dtype": "float32"}, {"name": "dense_1/kernel", "shape": [20, 10], "dtype": "float32"}, {"name": "dense_1/bias", "shape": [10], "dtype": "float32"}, {"name": "dense_2/kernel", "shape": [10, 3], "dtype": "float32"}, {"name": "dense_2/bias", "shape": [3], "dtype": "float32"}]}]} -------------------------------------------------------------------------------- /src/components/hands-capture/hooks/useKeyPointClassifier.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | import { Landmark, Results } from '@mediapipe/hands'; 3 | 4 | import * as tf from '@tensorflow/tfjs'; 5 | 6 | import _ from 'lodash'; 7 | 8 | const calcLandmarkList = (image, landmarks) => { 9 | const { width: imageWidth, height: imageHeight } = image; 10 | 11 | const landmarkPoint: any = []; 12 | 13 | // Keypoint 14 | Object.values(landmarks).forEach((landmark: Landmark) => { 15 | const landmarkX = Math.min(landmark.x * imageWidth, imageWidth - 1); 16 | const landmarkY = Math.min(landmark.y * imageHeight, imageHeight - 1); 17 | 18 | landmarkPoint.push([landmarkX, landmarkY]); 19 | }); 20 | 21 | return landmarkPoint; 22 | }; 23 | 24 | const preProcessLandmark = (landmarkList) => { 25 | let tempLandmarkList = _.cloneDeep(landmarkList); 26 | 27 | let baseX = 0; 28 | let baseY = 0; 29 | 30 | //convert to realtive coordinates 31 | Object.values(tempLandmarkList).forEach((landmarkPoint, index) => { 32 | if (!index) { 33 | baseX = parseInt(landmarkPoint[0]); 34 | baseY = parseInt(landmarkPoint[1]); 35 | } 36 | 37 | tempLandmarkList[index][0] = tempLandmarkList[index][0] - baseX; 38 | tempLandmarkList[index][1] = tempLandmarkList[index][1] - baseY; 39 | }); 40 | 41 | //convert to one-dimensional list 42 | tempLandmarkList = _.flatten(tempLandmarkList); 43 | 44 | //normalize 45 | const maxValue = Math.max( 46 | ...tempLandmarkList.map((value) => Math.abs(value)) 47 | ); 48 | tempLandmarkList = tempLandmarkList.map((value) => value / maxValue); 49 | return tempLandmarkList; 50 | }; 51 | 52 | function useKeyPointClassifier() { 53 | const model = useRef(); 54 | 55 | const keyPointClassifier = async (landmarkList) => { 56 | return await model.current 57 | .execute(tf.tensor2d([landmarkList])) 58 | .squeeze() 59 | .argMax() 60 | .data(); 61 | }; 62 | 63 | const processLandmark = async (handLandmarks: Results, image) => { 64 | const landmarkList = calcLandmarkList(image, handLandmarks); 65 | const preProcessedLandmarkList = preProcessLandmark(landmarkList); 66 | const handSignId = await keyPointClassifier(preProcessedLandmarkList); 67 | return handSignId[0]; 68 | }; 69 | 70 | 71 | useEffect(() => { 72 | (async function loadModel () { 73 | model.current = await tf.loadGraphModel( 74 | `/tf-models/key-point-classifier/model.json` 75 | ); 76 | })() 77 | }, []); 78 | 79 | return { processLandmark }; 80 | } 81 | 82 | export default useKeyPointClassifier; -------------------------------------------------------------------------------- /public/js/cv.worker.js: -------------------------------------------------------------------------------- 1 | function waitForOpencv(callbackFn, waitTimeMs = 30000, stepTimeMs = 100) { 2 | if (cv.Mat) callbackFn(true); 3 | 4 | let timeSpentMs = 0; 5 | const interval = setInterval(() => { 6 | const limitReached = timeSpentMs > waitTimeMs; 7 | if (cv.Mat || limitReached) { 8 | clearInterval(interval); 9 | return callbackFn(!limitReached); 10 | } else { 11 | timeSpentMs += stepTimeMs; 12 | } 13 | }, stepTimeMs); 14 | } 15 | 16 | onmessage = function (e) { 17 | switch (e.data.msg) { 18 | case 'load': { 19 | // Import Webassembly script 20 | importScripts('./opencv.js'); 21 | waitForOpencv(function (success) { 22 | console.log(success, 'what is this?'); 23 | if (success) postMessage({ msg: e.data.msg }); 24 | else throw new Error('Error on loading OpenCV'); 25 | }); 26 | break; 27 | } 28 | case 'imageProcessing': 29 | console.log('running image processing'); 30 | return imageProcessing(e.data); 31 | default: 32 | break; 33 | } 34 | }; 35 | 36 | /** 37 | * With OpenCV we have to work with the images as cv.Mat (matrices), 38 | * so you'll have to transform the ImageData to it. 39 | */ 40 | function imageProcessing({ msg, payload }) { 41 | const img = cv.matFromImageData(payload); 42 | let result = new cv.Mat(); 43 | 44 | // This converts the image to a greyscale. 45 | cv.cvtColor(img, result, cv.COLOR_BGR2GRAY); 46 | postMessage({ msg, payload: imageDataFromMat(result) }); 47 | } 48 | 49 | /** 50 | * This function converts again from cv.Mat to ImageData 51 | */ 52 | function imageDataFromMat(mat) { 53 | // converts the mat type to cv.CV_8U 54 | const img = new cv.Mat(); 55 | const depth = mat.type() % 8; 56 | const scale = 57 | depth <= cv.CV_8S ? 1.0 : depth <= cv.CV_32S ? 1.0 / 256.0 : 255.0; 58 | const shift = depth === cv.CV_8S || depth === cv.CV_16S ? 128.0 : 0.0; 59 | mat.convertTo(img, cv.CV_8U, scale, shift); 60 | 61 | // converts the img type to cv.CV_8UC4 62 | switch (img.type()) { 63 | case cv.CV_8UC1: 64 | cv.cvtColor(img, img, cv.COLOR_GRAY2RGBA); 65 | break; 66 | case cv.CV_8UC3: 67 | cv.cvtColor(img, img, cv.COLOR_RGB2RGBA); 68 | break; 69 | case cv.CV_8UC4: 70 | break; 71 | default: 72 | throw new Error( 73 | 'Bad number of channels (Source image must have 1, 3 or 4 channels)' 74 | ); 75 | } 76 | const clampedArray = new ImageData( 77 | new Uint8ClampedArray(img.data), 78 | img.cols, 79 | img.rows 80 | ); 81 | img.delete(); 82 | return clampedArray; 83 | } 84 | -------------------------------------------------------------------------------- /src/components/hands-capture/hooks/index.ts: -------------------------------------------------------------------------------- 1 | import { Ref, useEffect, useRef } from 'react'; 2 | import { Camera } from '@mediapipe/camera_utils'; 3 | import { 4 | drawConnectors, 5 | drawLandmarks, 6 | drawRectangle, 7 | } from '@mediapipe/drawing_utils'; 8 | import { Hands, HAND_CONNECTIONS } from '@mediapipe/hands'; 9 | import useKeyPointClassifier from '../hooks/useKeyPointClassifier'; 10 | import CONFIGS from '../../../../constants'; 11 | 12 | const maxVideoWidth = 960; 13 | const maxVideoHeight = 540; 14 | 15 | interface IHandGestureLogic { 16 | videoElement: Ref 17 | canvasEl: Ref 18 | } 19 | 20 | function useGestureRecognition({videoElement, canvasEl}: IHandGestureLogic) { 21 | const hands = useRef(null); 22 | const camera = useRef(null); 23 | const handsGesture = useRef([]); 24 | 25 | const { processLandmark } = useKeyPointClassifier(); 26 | 27 | async function onResults(results) { 28 | if (canvasEl.current) { 29 | const ctx = canvasEl.current.getContext('2d'); 30 | 31 | ctx.save(); 32 | ctx.clearRect(0, 0, canvasEl.current.width, canvasEl.current.height); 33 | ctx.drawImage(results.image, 0, 0, maxVideoWidth, maxVideoHeight); 34 | 35 | if (results.multiHandLandmarks) { 36 | // Runs once for every hand 37 | for (const [index, landmarks] of results.multiHandLandmarks.entries()) { 38 | processLandmark(landmarks, results.image).then((val) => (handsGesture.current[index] = val)); 39 | const landmarksX = landmarks.map((landmark) => landmark.x); 40 | const landmarksY = landmarks.map((landmark) => landmark.y); 41 | ctx.fillStyle = '#ff0000'; 42 | ctx.font = '24px serif'; 43 | ctx.fillText( 44 | CONFIGS.keypointClassifierLabels[handsGesture.current[index]], 45 | maxVideoWidth * Math.min(...landmarksX), 46 | maxVideoHeight * Math.min(...landmarksY) - 15 47 | ); 48 | drawRectangle(ctx,{ 49 | xCenter: Math.min(...landmarksX) + (Math.max(...landmarksX) - Math.min(...landmarksX)) / 2, 50 | yCenter: Math.min(...landmarksY) + (Math.max(...landmarksY) - Math.min(...landmarksY)) / 2, 51 | width: Math.max(...landmarksX) - Math.min(...landmarksX), 52 | height: Math.max(...landmarksY) - Math.min(...landmarksY), 53 | rotation: 0, 54 | }, 55 | { 56 | fillColor: 'transparent', 57 | color: '#ff0000', 58 | lineWidth: 1, 59 | } 60 | ); 61 | drawConnectors(ctx, landmarks, HAND_CONNECTIONS, { 62 | color: '#00ffff', 63 | lineWidth: 2, 64 | }); 65 | drawLandmarks(ctx, landmarks, { 66 | color: '#ffff29', 67 | lineWidth: 1, 68 | }); 69 | } 70 | } 71 | ctx.restore(); 72 | } 73 | } 74 | 75 | const loadHands = () => { 76 | hands.current = new Hands({ 77 | locateFile: (file) => `https://cdn.jsdelivr.net/npm/@mediapipe/hands/${file}`, 78 | }); 79 | hands.current.setOptions({ 80 | maxNumHands: 2, 81 | modelComplexity: 1, 82 | minDetectionConfidence: 0.5, 83 | minTrackingConfidence: 0.5, 84 | }); 85 | hands.current.onResults(onResults); 86 | }; 87 | 88 | useEffect(() => { 89 | (async function initCamara() { 90 | camera.current = new Camera(videoElement.current, { 91 | onFrame: async () => { 92 | await hands.current.send({ image: videoElement.current }); 93 | }, 94 | width: maxVideoWidth, 95 | height: maxVideoHeight, 96 | }); 97 | camera.current.start(); 98 | })() 99 | 100 | loadHands(); 101 | }, []); 102 | 103 | return { maxVideoHeight, maxVideoWidth, canvasEl, videoElement }; 104 | } 105 | 106 | export default useGestureRecognition; 107 | -------------------------------------------------------------------------------- /src/assets/react.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/tf-models/model_graph_point_history/model.json: -------------------------------------------------------------------------------- 1 | {"format": "graph-model", "generatedBy": "2.6.2", "convertedBy": "TensorFlow.js Converter v3.18.0", "signature": {"inputs": {"input_1": {"name": "input_1:0", "dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "-1"}, {"size": "32"}]}}}, "outputs": {"dense_2": {"name": "Identity:0", "dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "-1"}, {"size": "4"}]}}}}, "modelTopology": {"node": [{"name": "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", "op": "Const", "attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "32"}, {"size": "24"}]}}}}}, {"name": "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp", "op": "Const", "attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "24"}]}}}}}, {"name": "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", "op": "Const", "attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "24"}, {"size": "10"}]}}}}}, {"name": "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp", "op": "Const", "attr": {"value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "10"}]}}}, "dtype": {"type": "DT_FLOAT"}}}, {"name": "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", "op": "Const", "attr": {"value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "10"}, {"size": "4"}]}}}, "dtype": {"type": "DT_FLOAT"}}}, {"name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp", "op": "Const", "attr": {"dtype": {"type": "DT_FLOAT"}, "value": {"tensor": {"dtype": "DT_FLOAT", "tensorShape": {"dim": [{"size": "4"}]}}}}}, {"name": "input_1", "op": "Placeholder", "attr": {"dtype": {"type": "DT_FLOAT"}, "shape": {"shape": {"dim": [{"size": "-1"}, {"size": "32"}]}}}}, {"name": "StatefulPartitionedCall/sequential/dense/Relu", "op": "_FusedMatMul", "input": ["input_1", "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp"], "device": "/device:CPU:0", "attr": {"T": {"type": "DT_FLOAT"}, "num_args": {"i": "1"}, "transpose_a": {"b": false}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdQ=="]}}, "transpose_b": {"b": false}, "epsilon": {"f": 0.0}}}, {"name": "StatefulPartitionedCall/sequential/dense_1/Relu", "op": "_FusedMatMul", "input": ["StatefulPartitionedCall/sequential/dense/Relu", "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp"], "device": "/device:CPU:0", "attr": {"num_args": {"i": "1"}, "transpose_b": {"b": false}, "T": {"type": "DT_FLOAT"}, "epsilon": {"f": 0.0}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA==", "UmVsdQ=="]}}, "transpose_a": {"b": false}}}, {"name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd", "op": "_FusedMatMul", "input": ["StatefulPartitionedCall/sequential/dense_1/Relu", "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp"], "device": "/device:CPU:0", "attr": {"T": {"type": "DT_FLOAT"}, "transpose_b": {"b": false}, "num_args": {"i": "1"}, "fused_ops": {"list": {"s": ["Qmlhc0FkZA=="]}}, "epsilon": {"f": 0.0}, "transpose_a": {"b": false}}}, {"name": "StatefulPartitionedCall/sequential/dense_2/Softmax", "op": "Softmax", "input": ["StatefulPartitionedCall/sequential/dense_2/BiasAdd"], "attr": {"T": {"type": "DT_FLOAT"}}}, {"name": "Identity", "op": "Identity", "input": ["StatefulPartitionedCall/sequential/dense_2/Softmax"], "attr": {"T": {"type": "DT_FLOAT"}}}], "library": {}, "versions": {"producer": 808}}, "weightsManifest": [{"paths": ["group1-shard1of1.bin"], "weights": [{"name": "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", "shape": [32, 24], "dtype": "float32"}, {"name": "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp", "shape": [24], "dtype": "float32"}, {"name": "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", "shape": [24, 10], "dtype": "float32"}, {"name": "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp", "shape": [10], "dtype": "float32"}, {"name": "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", "shape": [10, 4], "dtype": "float32"}, {"name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp", "shape": [4], "dtype": "float32"}]}]} -------------------------------------------------------------------------------- /public/tf-models/key-point-classifier/model.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "graph-model", 3 | "generatedBy": "2.6.2", 4 | "convertedBy": "TensorFlow.js Converter v3.18.0", 5 | "signature": { 6 | "inputs": { 7 | "input_1": { 8 | "name": "input_1:0", 9 | "dtype": "DT_FLOAT", 10 | "tensorShape": { "dim": [{ "size": "-1" }, { "size": "42" }] } 11 | } 12 | }, 13 | "outputs": { 14 | "dense_2": { 15 | "name": "Identity:0", 16 | "dtype": "DT_FLOAT", 17 | "tensorShape": { "dim": [{ "size": "-1" }, { "size": "3" }] } 18 | } 19 | } 20 | }, 21 | "modelTopology": { 22 | "node": [ 23 | { 24 | "name": "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", 25 | "op": "Const", 26 | "attr": { 27 | "value": { 28 | "tensor": { 29 | "dtype": "DT_FLOAT", 30 | "tensorShape": { "dim": [{ "size": "42" }, { "size": "20" }] } 31 | } 32 | }, 33 | "dtype": { "type": "DT_FLOAT" } 34 | } 35 | }, 36 | { 37 | "name": "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp", 38 | "op": "Const", 39 | "attr": { 40 | "dtype": { "type": "DT_FLOAT" }, 41 | "value": { 42 | "tensor": { 43 | "dtype": "DT_FLOAT", 44 | "tensorShape": { "dim": [{ "size": "20" }] } 45 | } 46 | } 47 | } 48 | }, 49 | { 50 | "name": "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", 51 | "op": "Const", 52 | "attr": { 53 | "dtype": { "type": "DT_FLOAT" }, 54 | "value": { 55 | "tensor": { 56 | "dtype": "DT_FLOAT", 57 | "tensorShape": { "dim": [{ "size": "20" }, { "size": "10" }] } 58 | } 59 | } 60 | } 61 | }, 62 | { 63 | "name": "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp", 64 | "op": "Const", 65 | "attr": { 66 | "dtype": { "type": "DT_FLOAT" }, 67 | "value": { 68 | "tensor": { 69 | "dtype": "DT_FLOAT", 70 | "tensorShape": { "dim": [{ "size": "10" }] } 71 | } 72 | } 73 | } 74 | }, 75 | { 76 | "name": "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", 77 | "op": "Const", 78 | "attr": { 79 | "dtype": { "type": "DT_FLOAT" }, 80 | "value": { 81 | "tensor": { 82 | "dtype": "DT_FLOAT", 83 | "tensorShape": { "dim": [{ "size": "10" }, { "size": "3" }] } 84 | } 85 | } 86 | } 87 | }, 88 | { 89 | "name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp", 90 | "op": "Const", 91 | "attr": { 92 | "dtype": { "type": "DT_FLOAT" }, 93 | "value": { 94 | "tensor": { 95 | "dtype": "DT_FLOAT", 96 | "tensorShape": { "dim": [{ "size": "3" }] } 97 | } 98 | } 99 | } 100 | }, 101 | { 102 | "name": "input_1", 103 | "op": "Placeholder", 104 | "attr": { 105 | "dtype": { "type": "DT_FLOAT" }, 106 | "shape": { "shape": { "dim": [{ "size": "-1" }, { "size": "42" }] } } 107 | } 108 | }, 109 | { 110 | "name": "StatefulPartitionedCall/sequential/dense/Relu", 111 | "op": "_FusedMatMul", 112 | "input": [ 113 | "input_1", 114 | "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", 115 | "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp" 116 | ], 117 | "device": "/device:CPU:0", 118 | "attr": { 119 | "transpose_a": { "b": false }, 120 | "transpose_b": { "b": false }, 121 | "T": { "type": "DT_FLOAT" }, 122 | "num_args": { "i": "1" }, 123 | "fused_ops": { "list": { "s": ["Qmlhc0FkZA==", "UmVsdQ=="] } }, 124 | "epsilon": { "f": 0.0 } 125 | } 126 | }, 127 | { 128 | "name": "StatefulPartitionedCall/sequential/dense_1/Relu", 129 | "op": "_FusedMatMul", 130 | "input": [ 131 | "StatefulPartitionedCall/sequential/dense/Relu", 132 | "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", 133 | "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp" 134 | ], 135 | "device": "/device:CPU:0", 136 | "attr": { 137 | "num_args": { "i": "1" }, 138 | "transpose_b": { "b": false }, 139 | "T": { "type": "DT_FLOAT" }, 140 | "fused_ops": { "list": { "s": ["Qmlhc0FkZA==", "UmVsdQ=="] } }, 141 | "transpose_a": { "b": false }, 142 | "epsilon": { "f": 0.0 } 143 | } 144 | }, 145 | { 146 | "name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd", 147 | "op": "_FusedMatMul", 148 | "input": [ 149 | "StatefulPartitionedCall/sequential/dense_1/Relu", 150 | "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", 151 | "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp" 152 | ], 153 | "device": "/device:CPU:0", 154 | "attr": { 155 | "transpose_a": { "b": false }, 156 | "transpose_b": { "b": false }, 157 | "fused_ops": { "list": { "s": ["Qmlhc0FkZA=="] } }, 158 | "num_args": { "i": "1" }, 159 | "epsilon": { "f": 0.0 }, 160 | "T": { "type": "DT_FLOAT" } 161 | } 162 | }, 163 | { 164 | "name": "StatefulPartitionedCall/sequential/dense_2/Softmax", 165 | "op": "Softmax", 166 | "input": ["StatefulPartitionedCall/sequential/dense_2/BiasAdd"], 167 | "attr": { "T": { "type": "DT_FLOAT" } } 168 | }, 169 | { 170 | "name": "Identity", 171 | "op": "Identity", 172 | "input": ["StatefulPartitionedCall/sequential/dense_2/Softmax"], 173 | "attr": { "T": { "type": "DT_FLOAT" } } 174 | } 175 | ], 176 | "library": {}, 177 | "versions": { "producer": 808 } 178 | }, 179 | "weightsManifest": [ 180 | { 181 | "paths": ["group1-shard1of1.bin"], 182 | "weights": [ 183 | { 184 | "name": "StatefulPartitionedCall/sequential/dense/MatMul/ReadVariableOp", 185 | "shape": [42, 20], 186 | "dtype": "float32" 187 | }, 188 | { 189 | "name": "StatefulPartitionedCall/sequential/dense/BiasAdd/ReadVariableOp", 190 | "shape": [20], 191 | "dtype": "float32" 192 | }, 193 | { 194 | "name": "StatefulPartitionedCall/sequential/dense_1/MatMul/ReadVariableOp", 195 | "shape": [20, 10], 196 | "dtype": "float32" 197 | }, 198 | { 199 | "name": "StatefulPartitionedCall/sequential/dense_1/BiasAdd/ReadVariableOp", 200 | "shape": [10], 201 | "dtype": "float32" 202 | }, 203 | { 204 | "name": "StatefulPartitionedCall/sequential/dense_2/MatMul/ReadVariableOp", 205 | "shape": [10, 3], 206 | "dtype": "float32" 207 | }, 208 | { 209 | "name": "StatefulPartitionedCall/sequential/dense_2/BiasAdd/ReadVariableOp", 210 | "shape": [3], 211 | "dtype": "float32" 212 | } 213 | ] 214 | } 215 | ] 216 | } 217 | -------------------------------------------------------------------------------- /public/js/hands.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | /* 3 | 4 | Copyright The Closure Library Authors. 5 | SPDX-License-Identifier: Apache-2.0 6 | */ 7 | 'use strict'; 8 | var x; 9 | function aa(a) { 10 | var b = 0; 11 | return function () { 12 | return b < a.length ? { done: !1, value: a[b++] } : { done: !0 }; 13 | }; 14 | } 15 | var ba = 16 | 'function' == typeof Object.defineProperties 17 | ? Object.defineProperty 18 | : function (a, b, c) { 19 | if (a == Array.prototype || a == Object.prototype) return a; 20 | a[b] = c.value; 21 | return a; 22 | }; 23 | function ca(a) { 24 | a = [ 25 | 'object' == typeof globalThis && globalThis, 26 | a, 27 | 'object' == typeof window && window, 28 | 'object' == typeof self && self, 29 | 'object' == typeof global && global, 30 | ]; 31 | for (var b = 0; b < a.length; ++b) { 32 | var c = a[b]; 33 | if (c && c.Math == Math) return c; 34 | } 35 | throw Error('Cannot find global object'); 36 | } 37 | var y = ca(this); 38 | function B(a, b) { 39 | if (b) 40 | a: { 41 | var c = y; 42 | a = a.split('.'); 43 | for (var d = 0; d < a.length - 1; d++) { 44 | var e = a[d]; 45 | if (!(e in c)) break a; 46 | c = c[e]; 47 | } 48 | a = a[a.length - 1]; 49 | d = c[a]; 50 | b = b(d); 51 | b != d && 52 | null != b && 53 | ba(c, a, { configurable: !0, writable: !0, value: b }); 54 | } 55 | } 56 | B('Symbol', function (a) { 57 | function b(g) { 58 | if (this instanceof b) throw new TypeError('Symbol is not a constructor'); 59 | return new c(d + (g || '') + '_' + e++, g); 60 | } 61 | function c(g, f) { 62 | this.g = g; 63 | ba(this, 'description', { configurable: !0, writable: !0, value: f }); 64 | } 65 | if (a) return a; 66 | c.prototype.toString = function () { 67 | return this.g; 68 | }; 69 | var d = 'jscomp_symbol_' + ((1e9 * Math.random()) >>> 0) + '_', 70 | e = 0; 71 | return b; 72 | }); 73 | B('Symbol.iterator', function (a) { 74 | if (a) return a; 75 | a = Symbol('Symbol.iterator'); 76 | for ( 77 | var b = 78 | 'Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array'.split( 79 | ' ' 80 | ), 81 | c = 0; 82 | c < b.length; 83 | c++ 84 | ) { 85 | var d = y[b[c]]; 86 | 'function' === typeof d && 87 | 'function' != typeof d.prototype[a] && 88 | ba(d.prototype, a, { 89 | configurable: !0, 90 | writable: !0, 91 | value: function () { 92 | return da(aa(this)); 93 | }, 94 | }); 95 | } 96 | return a; 97 | }); 98 | function da(a) { 99 | a = { next: a }; 100 | a[Symbol.iterator] = function () { 101 | return this; 102 | }; 103 | return a; 104 | } 105 | function C(a) { 106 | var b = 107 | 'undefined' != typeof Symbol && Symbol.iterator && a[Symbol.iterator]; 108 | return b ? b.call(a) : { next: aa(a) }; 109 | } 110 | function ea(a) { 111 | if (!(a instanceof Array)) { 112 | a = C(a); 113 | for (var b, c = []; !(b = a.next()).done; ) c.push(b.value); 114 | a = c; 115 | } 116 | return a; 117 | } 118 | var fa = 119 | 'function' == typeof Object.create 120 | ? Object.create 121 | : function (a) { 122 | function b() {} 123 | b.prototype = a; 124 | return new b(); 125 | }, 126 | ha; 127 | if ('function' == typeof Object.setPrototypeOf) ha = Object.setPrototypeOf; 128 | else { 129 | var ia; 130 | a: { 131 | var ja = { a: !0 }, 132 | ka = {}; 133 | try { 134 | ka.__proto__ = ja; 135 | ia = ka.a; 136 | break a; 137 | } catch (a) {} 138 | ia = !1; 139 | } 140 | ha = ia 141 | ? function (a, b) { 142 | a.__proto__ = b; 143 | if (a.__proto__ !== b) throw new TypeError(a + ' is not extensible'); 144 | return a; 145 | } 146 | : null; 147 | } 148 | var la = ha; 149 | function D(a, b) { 150 | a.prototype = fa(b.prototype); 151 | a.prototype.constructor = a; 152 | if (la) la(a, b); 153 | else 154 | for (var c in b) 155 | if ('prototype' != c) 156 | if (Object.defineProperties) { 157 | var d = Object.getOwnPropertyDescriptor(b, c); 158 | d && Object.defineProperty(a, c, d); 159 | } else a[c] = b[c]; 160 | a.ra = b.prototype; 161 | } 162 | function ma() { 163 | this.l = !1; 164 | this.i = null; 165 | this.h = void 0; 166 | this.g = 1; 167 | this.u = this.o = 0; 168 | this.j = null; 169 | } 170 | function na(a) { 171 | if (a.l) throw new TypeError('Generator is already running'); 172 | a.l = !0; 173 | } 174 | ma.prototype.s = function (a) { 175 | this.h = a; 176 | }; 177 | function oa(a, b) { 178 | a.j = { fa: b, ga: !0 }; 179 | a.g = a.o || a.u; 180 | } 181 | ma.prototype.return = function (a) { 182 | this.j = { return: a }; 183 | this.g = this.u; 184 | }; 185 | function F(a, b, c) { 186 | a.g = c; 187 | return { value: b }; 188 | } 189 | function pa(a) { 190 | this.g = new ma(); 191 | this.h = a; 192 | } 193 | function qa(a, b) { 194 | na(a.g); 195 | var c = a.g.i; 196 | if (c) 197 | return ra( 198 | a, 199 | 'return' in c 200 | ? c['return'] 201 | : function (d) { 202 | return { value: d, done: !0 }; 203 | }, 204 | b, 205 | a.g.return 206 | ); 207 | a.g.return(b); 208 | return G(a); 209 | } 210 | function ra(a, b, c, d) { 211 | try { 212 | var e = b.call(a.g.i, c); 213 | if (!(e instanceof Object)) 214 | throw new TypeError('Iterator result ' + e + ' is not an object'); 215 | if (!e.done) return (a.g.l = !1), e; 216 | var g = e.value; 217 | } catch (f) { 218 | return (a.g.i = null), oa(a.g, f), G(a); 219 | } 220 | a.g.i = null; 221 | d.call(a.g, g); 222 | return G(a); 223 | } 224 | function G(a) { 225 | for (; a.g.g; ) 226 | try { 227 | var b = a.h(a.g); 228 | if (b) return (a.g.l = !1), { value: b.value, done: !1 }; 229 | } catch (c) { 230 | (a.g.h = void 0), oa(a.g, c); 231 | } 232 | a.g.l = !1; 233 | if (a.g.j) { 234 | b = a.g.j; 235 | a.g.j = null; 236 | if (b.ga) throw b.fa; 237 | return { value: b.return, done: !0 }; 238 | } 239 | return { value: void 0, done: !0 }; 240 | } 241 | function sa(a) { 242 | this.next = function (b) { 243 | na(a.g); 244 | a.g.i ? (b = ra(a, a.g.i.next, b, a.g.s)) : (a.g.s(b), (b = G(a))); 245 | return b; 246 | }; 247 | this.throw = function (b) { 248 | na(a.g); 249 | a.g.i ? (b = ra(a, a.g.i['throw'], b, a.g.s)) : (oa(a.g, b), (b = G(a))); 250 | return b; 251 | }; 252 | this.return = function (b) { 253 | return qa(a, b); 254 | }; 255 | this[Symbol.iterator] = function () { 256 | return this; 257 | }; 258 | } 259 | function ta(a) { 260 | function b(d) { 261 | return a.next(d); 262 | } 263 | function c(d) { 264 | return a.throw(d); 265 | } 266 | return new Promise(function (d, e) { 267 | function g(f) { 268 | f.done ? d(f.value) : Promise.resolve(f.value).then(b, c).then(g, e); 269 | } 270 | g(a.next()); 271 | }); 272 | } 273 | function I(a) { 274 | return ta(new sa(new pa(a))); 275 | } 276 | B('Promise', function (a) { 277 | function b(f) { 278 | this.h = 0; 279 | this.i = void 0; 280 | this.g = []; 281 | this.s = !1; 282 | var h = this.j(); 283 | try { 284 | f(h.resolve, h.reject); 285 | } catch (k) { 286 | h.reject(k); 287 | } 288 | } 289 | function c() { 290 | this.g = null; 291 | } 292 | function d(f) { 293 | return f instanceof b 294 | ? f 295 | : new b(function (h) { 296 | h(f); 297 | }); 298 | } 299 | if (a) return a; 300 | c.prototype.h = function (f) { 301 | if (null == this.g) { 302 | this.g = []; 303 | var h = this; 304 | this.i(function () { 305 | h.l(); 306 | }); 307 | } 308 | this.g.push(f); 309 | }; 310 | var e = y.setTimeout; 311 | c.prototype.i = function (f) { 312 | e(f, 0); 313 | }; 314 | c.prototype.l = function () { 315 | for (; this.g && this.g.length; ) { 316 | var f = this.g; 317 | this.g = []; 318 | for (var h = 0; h < f.length; ++h) { 319 | var k = f[h]; 320 | f[h] = null; 321 | try { 322 | k(); 323 | } catch (l) { 324 | this.j(l); 325 | } 326 | } 327 | } 328 | this.g = null; 329 | }; 330 | c.prototype.j = function (f) { 331 | this.i(function () { 332 | throw f; 333 | }); 334 | }; 335 | b.prototype.j = function () { 336 | function f(l) { 337 | return function (m) { 338 | k || ((k = !0), l.call(h, m)); 339 | }; 340 | } 341 | var h = this, 342 | k = !1; 343 | return { resolve: f(this.D), reject: f(this.l) }; 344 | }; 345 | b.prototype.D = function (f) { 346 | if (f === this) 347 | this.l(new TypeError('A Promise cannot resolve to itself')); 348 | else if (f instanceof b) this.H(f); 349 | else { 350 | a: switch (typeof f) { 351 | case 'object': 352 | var h = null != f; 353 | break a; 354 | case 'function': 355 | h = !0; 356 | break a; 357 | default: 358 | h = !1; 359 | } 360 | h ? this.A(f) : this.o(f); 361 | } 362 | }; 363 | b.prototype.A = function (f) { 364 | var h = void 0; 365 | try { 366 | h = f.then; 367 | } catch (k) { 368 | this.l(k); 369 | return; 370 | } 371 | 'function' == typeof h ? this.I(h, f) : this.o(f); 372 | }; 373 | b.prototype.l = function (f) { 374 | this.u(2, f); 375 | }; 376 | b.prototype.o = function (f) { 377 | this.u(1, f); 378 | }; 379 | b.prototype.u = function (f, h) { 380 | if (0 != this.h) 381 | throw Error( 382 | 'Cannot settle(' + 383 | f + 384 | ', ' + 385 | h + 386 | '): Promise already settled in state' + 387 | this.h 388 | ); 389 | this.h = f; 390 | this.i = h; 391 | 2 === this.h && this.G(); 392 | this.B(); 393 | }; 394 | b.prototype.G = function () { 395 | var f = this; 396 | e(function () { 397 | if (f.C()) { 398 | var h = y.console; 399 | 'undefined' !== typeof h && h.error(f.i); 400 | } 401 | }, 1); 402 | }; 403 | b.prototype.C = function () { 404 | if (this.s) return !1; 405 | var f = y.CustomEvent, 406 | h = y.Event, 407 | k = y.dispatchEvent; 408 | if ('undefined' === typeof k) return !0; 409 | 'function' === typeof f 410 | ? (f = new f('unhandledrejection', { cancelable: !0 })) 411 | : 'function' === typeof h 412 | ? (f = new h('unhandledrejection', { cancelable: !0 })) 413 | : ((f = y.document.createEvent('CustomEvent')), 414 | f.initCustomEvent('unhandledrejection', !1, !0, f)); 415 | f.promise = this; 416 | f.reason = this.i; 417 | return k(f); 418 | }; 419 | b.prototype.B = function () { 420 | if (null != this.g) { 421 | for (var f = 0; f < this.g.length; ++f) g.h(this.g[f]); 422 | this.g = null; 423 | } 424 | }; 425 | var g = new c(); 426 | b.prototype.H = function (f) { 427 | var h = this.j(); 428 | f.M(h.resolve, h.reject); 429 | }; 430 | b.prototype.I = function (f, h) { 431 | var k = this.j(); 432 | try { 433 | f.call(h, k.resolve, k.reject); 434 | } catch (l) { 435 | k.reject(l); 436 | } 437 | }; 438 | b.prototype.then = function (f, h) { 439 | function k(p, n) { 440 | return 'function' == typeof p 441 | ? function (q) { 442 | try { 443 | l(p(q)); 444 | } catch (t) { 445 | m(t); 446 | } 447 | } 448 | : n; 449 | } 450 | var l, 451 | m, 452 | r = new b(function (p, n) { 453 | l = p; 454 | m = n; 455 | }); 456 | this.M(k(f, l), k(h, m)); 457 | return r; 458 | }; 459 | b.prototype.catch = function (f) { 460 | return this.then(void 0, f); 461 | }; 462 | b.prototype.M = function (f, h) { 463 | function k() { 464 | switch (l.h) { 465 | case 1: 466 | f(l.i); 467 | break; 468 | case 2: 469 | h(l.i); 470 | break; 471 | default: 472 | throw Error('Unexpected state: ' + l.h); 473 | } 474 | } 475 | var l = this; 476 | null == this.g ? g.h(k) : this.g.push(k); 477 | this.s = !0; 478 | }; 479 | b.resolve = d; 480 | b.reject = function (f) { 481 | return new b(function (h, k) { 482 | k(f); 483 | }); 484 | }; 485 | b.race = function (f) { 486 | return new b(function (h, k) { 487 | for (var l = C(f), m = l.next(); !m.done; m = l.next()) 488 | d(m.value).M(h, k); 489 | }); 490 | }; 491 | b.all = function (f) { 492 | var h = C(f), 493 | k = h.next(); 494 | return k.done 495 | ? d([]) 496 | : new b(function (l, m) { 497 | function r(q) { 498 | return function (t) { 499 | p[q] = t; 500 | n--; 501 | 0 == n && l(p); 502 | }; 503 | } 504 | var p = [], 505 | n = 0; 506 | do 507 | p.push(void 0), 508 | n++, 509 | d(k.value).M(r(p.length - 1), m), 510 | (k = h.next()); 511 | while (!k.done); 512 | }); 513 | }; 514 | return b; 515 | }); 516 | function ua(a, b) { 517 | a instanceof String && (a += ''); 518 | var c = 0, 519 | d = !1, 520 | e = { 521 | next: function () { 522 | if (!d && c < a.length) { 523 | var g = c++; 524 | return { value: b(g, a[g]), done: !1 }; 525 | } 526 | d = !0; 527 | return { done: !0, value: void 0 }; 528 | }, 529 | }; 530 | e[Symbol.iterator] = function () { 531 | return e; 532 | }; 533 | return e; 534 | } 535 | var va = 536 | 'function' == typeof Object.assign 537 | ? Object.assign 538 | : function (a, b) { 539 | for (var c = 1; c < arguments.length; c++) { 540 | var d = arguments[c]; 541 | if (d) 542 | for (var e in d) 543 | Object.prototype.hasOwnProperty.call(d, e) && (a[e] = d[e]); 544 | } 545 | return a; 546 | }; 547 | B('Object.assign', function (a) { 548 | return a || va; 549 | }); 550 | B('Object.is', function (a) { 551 | return a 552 | ? a 553 | : function (b, c) { 554 | return b === c ? 0 !== b || 1 / b === 1 / c : b !== b && c !== c; 555 | }; 556 | }); 557 | B('Array.prototype.includes', function (a) { 558 | return a 559 | ? a 560 | : function (b, c) { 561 | var d = this; 562 | d instanceof String && (d = String(d)); 563 | var e = d.length; 564 | c = c || 0; 565 | for (0 > c && (c = Math.max(c + e, 0)); c < e; c++) { 566 | var g = d[c]; 567 | if (g === b || Object.is(g, b)) return !0; 568 | } 569 | return !1; 570 | }; 571 | }); 572 | B('String.prototype.includes', function (a) { 573 | return a 574 | ? a 575 | : function (b, c) { 576 | if (null == this) 577 | throw new TypeError( 578 | "The 'this' value for String.prototype.includes must not be null or undefined" 579 | ); 580 | if (b instanceof RegExp) 581 | throw new TypeError( 582 | 'First argument to String.prototype.includes must not be a regular expression' 583 | ); 584 | return -1 !== this.indexOf(b, c || 0); 585 | }; 586 | }); 587 | B('Array.prototype.keys', function (a) { 588 | return a 589 | ? a 590 | : function () { 591 | return ua(this, function (b) { 592 | return b; 593 | }); 594 | }; 595 | }); 596 | var wa = this || self; 597 | function J(a, b) { 598 | a = a.split('.'); 599 | var c = wa; 600 | a[0] in c || 601 | 'undefined' == typeof c.execScript || 602 | c.execScript('var ' + a[0]); 603 | for (var d; a.length && (d = a.shift()); ) 604 | a.length || void 0 === b 605 | ? c[d] && c[d] !== Object.prototype[d] 606 | ? (c = c[d]) 607 | : (c = c[d] = {}) 608 | : (c[d] = b); 609 | } 610 | function K() { 611 | throw Error('Invalid UTF8'); 612 | } 613 | function xa(a, b) { 614 | b = String.fromCharCode.apply(null, b); 615 | return null == a ? b : a + b; 616 | } 617 | var ya, 618 | za = 'undefined' !== typeof TextDecoder, 619 | Aa, 620 | Ba = 'undefined' !== typeof TextEncoder; 621 | var Ca = {}, 622 | L = null; 623 | function Da(a) { 624 | var b; 625 | void 0 === b && (b = 0); 626 | Ea(); 627 | b = Ca[b]; 628 | for ( 629 | var c = Array(Math.floor(a.length / 3)), d = b[64] || '', e = 0, g = 0; 630 | e < a.length - 2; 631 | e += 3 632 | ) { 633 | var f = a[e], 634 | h = a[e + 1], 635 | k = a[e + 2], 636 | l = b[f >> 2]; 637 | f = b[((f & 3) << 4) | (h >> 4)]; 638 | h = b[((h & 15) << 2) | (k >> 6)]; 639 | k = b[k & 63]; 640 | c[g++] = l + f + h + k; 641 | } 642 | l = 0; 643 | k = d; 644 | switch (a.length - e) { 645 | case 2: 646 | (l = a[e + 1]), (k = b[(l & 15) << 2] || d); 647 | case 1: 648 | (a = a[e]), (c[g] = b[a >> 2] + b[((a & 3) << 4) | (l >> 4)] + k + d); 649 | } 650 | return c.join(''); 651 | } 652 | function Fa(a) { 653 | var b = a.length, 654 | c = (3 * b) / 4; 655 | c % 3 656 | ? (c = Math.floor(c)) 657 | : -1 != '=.'.indexOf(a[b - 1]) && 658 | (c = -1 != '=.'.indexOf(a[b - 2]) ? c - 2 : c - 1); 659 | var d = new Uint8Array(c), 660 | e = 0; 661 | Ga(a, function (g) { 662 | d[e++] = g; 663 | }); 664 | return e !== c ? d.subarray(0, e) : d; 665 | } 666 | function Ga(a, b) { 667 | function c(k) { 668 | for (; d < a.length; ) { 669 | var l = a.charAt(d++), 670 | m = L[l]; 671 | if (null != m) return m; 672 | if (!/^[\s\xa0]*$/.test(l)) 673 | throw Error('Unknown base64 encoding at char: ' + l); 674 | } 675 | return k; 676 | } 677 | Ea(); 678 | for (var d = 0; ; ) { 679 | var e = c(-1), 680 | g = c(0), 681 | f = c(64), 682 | h = c(64); 683 | if (64 === h && -1 === e) break; 684 | b((e << 2) | (g >> 4)); 685 | 64 != f && 686 | (b(((g << 4) & 240) | (f >> 2)), 64 != h && b(((f << 6) & 192) | h)); 687 | } 688 | } 689 | function Ea() { 690 | if (!L) { 691 | L = {}; 692 | for ( 693 | var a = 694 | 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split( 695 | '' 696 | ), 697 | b = ['+/=', '+/', '-_=', '-_.', '-_'], 698 | c = 0; 699 | 5 > c; 700 | c++ 701 | ) { 702 | var d = a.concat(b[c].split('')); 703 | Ca[c] = d; 704 | for (var e = 0; e < d.length; e++) { 705 | var g = d[e]; 706 | void 0 === L[g] && (L[g] = e); 707 | } 708 | } 709 | } 710 | } 711 | var Ha = 'function' === typeof Uint8Array; 712 | function Ia(a) { 713 | return Ha && null != a && a instanceof Uint8Array; 714 | } 715 | var Ja; 716 | function Ka(a) { 717 | this.L = a; 718 | if (null !== a && 0 === a.length) 719 | throw Error('ByteString should be constructed with non-empty values'); 720 | } 721 | var La = 'function' === typeof Uint8Array.prototype.slice, 722 | M = 0, 723 | N = 0; 724 | function Ma(a, b) { 725 | if (a.constructor === Uint8Array) return a; 726 | if (a.constructor === ArrayBuffer) return new Uint8Array(a); 727 | if (a.constructor === Array) return new Uint8Array(a); 728 | if (a.constructor === String) return Fa(a); 729 | if (a.constructor === Ka) { 730 | if (!b && (b = a.L) && b.constructor === Uint8Array) return b; 731 | b = a.L; 732 | b = null == b || Ia(b) ? b : 'string' === typeof b ? Fa(b) : null; 733 | return (a = a.L = b) ? new Uint8Array(a) : Ja || (Ja = new Uint8Array(0)); 734 | } 735 | if (a instanceof Uint8Array) 736 | return new Uint8Array(a.buffer, a.byteOffset, a.byteLength); 737 | throw Error( 738 | 'Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, or Array of numbers' 739 | ); 740 | } 741 | function Na(a, b) { 742 | return Error('Invalid wire type: ' + a + ' (at position ' + b + ')'); 743 | } 744 | function Oa() { 745 | return Error('Failed to read varint, encoding is invalid.'); 746 | } 747 | function Pa(a, b) { 748 | b = void 0 === b ? {} : b; 749 | b = void 0 === b.v ? !1 : b.v; 750 | this.h = null; 751 | this.g = this.i = this.j = 0; 752 | this.v = b; 753 | a && Qa(this, a); 754 | } 755 | function Qa(a, b) { 756 | a.h = Ma(b, a.v); 757 | a.j = 0; 758 | a.i = a.h.length; 759 | a.g = a.j; 760 | } 761 | Pa.prototype.reset = function () { 762 | this.g = this.j; 763 | }; 764 | function O(a) { 765 | if (a.g > a.i) 766 | throw Error( 767 | 'Tried to read past the end of the data ' + a.g + ' > ' + a.i 768 | ); 769 | } 770 | function Q(a) { 771 | var b = a.h, 772 | c = b[a.g], 773 | d = c & 127; 774 | if (128 > c) return (a.g += 1), O(a), d; 775 | c = b[a.g + 1]; 776 | d |= (c & 127) << 7; 777 | if (128 > c) return (a.g += 2), O(a), d; 778 | c = b[a.g + 2]; 779 | d |= (c & 127) << 14; 780 | if (128 > c) return (a.g += 3), O(a), d; 781 | c = b[a.g + 3]; 782 | d |= (c & 127) << 21; 783 | if (128 > c) return (a.g += 4), O(a), d; 784 | c = b[a.g + 4]; 785 | a.g += 5; 786 | d |= (c & 15) << 28; 787 | if (128 > c) return O(a), d; 788 | if ( 789 | 128 <= b[a.g++] && 790 | 128 <= b[a.g++] && 791 | 128 <= b[a.g++] && 792 | 128 <= b[a.g++] && 793 | 128 <= b[a.g++] 794 | ) 795 | throw Oa(); 796 | O(a); 797 | return d; 798 | } 799 | var Ra = []; 800 | function Sa() { 801 | this.g = []; 802 | } 803 | Sa.prototype.length = function () { 804 | return this.g.length; 805 | }; 806 | Sa.prototype.end = function () { 807 | var a = this.g; 808 | this.g = []; 809 | return a; 810 | }; 811 | function R(a, b) { 812 | for (; 127 < b; ) a.g.push((b & 127) | 128), (b >>>= 7); 813 | a.g.push(b); 814 | } 815 | function Ta(a) { 816 | var b = {}, 817 | c = void 0 === b.W ? !1 : b.W; 818 | this.l = { v: void 0 === b.v ? !1 : b.v }; 819 | this.W = c; 820 | b = this.l; 821 | Ra.length 822 | ? ((c = Ra.pop()), b && (c.v = b.v), a && Qa(c, a), (a = c)) 823 | : (a = new Pa(a, b)); 824 | this.g = a; 825 | this.j = this.g.g; 826 | this.h = this.i = -1; 827 | } 828 | Ta.prototype.reset = function () { 829 | this.g.reset(); 830 | this.j = this.g.g; 831 | this.h = this.i = -1; 832 | }; 833 | function Ua(a) { 834 | var b = a.g; 835 | if (b.g == b.i) return !1; 836 | a.j = a.g.g; 837 | var c = Q(a.g) >>> 0; 838 | b = c >>> 3; 839 | c &= 7; 840 | if (!(0 <= c && 5 >= c)) throw Na(c, a.j); 841 | if (1 > b) 842 | throw Error('Invalid field number: ' + b + ' (at position ' + a.j + ')'); 843 | a.i = b; 844 | a.h = c; 845 | return !0; 846 | } 847 | function Va(a) { 848 | switch (a.h) { 849 | case 0: 850 | if (0 != a.h) Va(a); 851 | else 852 | a: { 853 | a = a.g; 854 | for (var b = a.g, c = b + 10; b < c; ) 855 | if (0 === (a.h[b++] & 128)) { 856 | a.g = b; 857 | O(a); 858 | break a; 859 | } 860 | throw Oa(); 861 | } 862 | break; 863 | case 1: 864 | a = a.g; 865 | a.g += 8; 866 | O(a); 867 | break; 868 | case 2: 869 | 2 != a.h ? Va(a) : ((b = Q(a.g) >>> 0), (a = a.g), (a.g += b), O(a)); 870 | break; 871 | case 5: 872 | a = a.g; 873 | a.g += 4; 874 | O(a); 875 | break; 876 | case 3: 877 | b = a.i; 878 | do { 879 | if (!Ua(a)) throw Error('Unmatched start-group tag: stream EOF'); 880 | if (4 == a.h) { 881 | if (a.i != b) throw Error('Unmatched end-group tag'); 882 | break; 883 | } 884 | Va(a); 885 | } while (1); 886 | break; 887 | default: 888 | throw Na(a.h, a.j); 889 | } 890 | } 891 | var Wa = []; 892 | function Xa() { 893 | this.i = []; 894 | this.h = 0; 895 | this.g = new Sa(); 896 | } 897 | function S(a, b) { 898 | 0 !== b.length && (a.i.push(b), (a.h += b.length)); 899 | } 900 | function Ya(a, b) { 901 | if ((b = b.ca)) { 902 | S(a, a.g.end()); 903 | for (var c = 0; c < b.length; c++) S(a, b[c]); 904 | } 905 | } 906 | var T = 907 | 'function' === typeof Symbol && 'symbol' === typeof Symbol() 908 | ? Symbol(void 0) 909 | : void 0; 910 | function Za(a, b) { 911 | Object.isFrozen(a) || 912 | (T 913 | ? (a[T] |= b) 914 | : void 0 !== a.N 915 | ? (a.N |= b) 916 | : Object.defineProperties(a, { 917 | N: { value: b, configurable: !0, writable: !0, enumerable: !1 }, 918 | })); 919 | } 920 | function $a(a) { 921 | var b; 922 | T ? (b = a[T]) : (b = a.N); 923 | return null == b ? 0 : b; 924 | } 925 | function U(a) { 926 | Za(a, 1); 927 | return a; 928 | } 929 | function ab(a) { 930 | return Array.isArray(a) ? !!($a(a) & 2) : !1; 931 | } 932 | function bb(a) { 933 | if (!Array.isArray(a)) throw Error('cannot mark non-array as immutable'); 934 | Za(a, 2); 935 | } 936 | function cb(a) { 937 | return ( 938 | null !== a && 939 | 'object' === typeof a && 940 | !Array.isArray(a) && 941 | a.constructor === Object 942 | ); 943 | } 944 | var db = Object.freeze(U([])); 945 | function eb(a) { 946 | if (ab(a.m)) throw Error('Cannot mutate an immutable Message'); 947 | } 948 | var fb = 949 | 'undefined' != typeof Symbol && 'undefined' != typeof Symbol.hasInstance; 950 | function gb(a) { 951 | return { value: a, configurable: !1, writable: !1, enumerable: !1 }; 952 | } 953 | function V(a, b, c) { 954 | return -1 === b 955 | ? null 956 | : b >= a.i 957 | ? a.g 958 | ? a.g[b] 959 | : void 0 960 | : (void 0 === c ? 0 : c) && a.g && ((c = a.g[b]), null != c) 961 | ? c 962 | : a.m[b + a.h]; 963 | } 964 | function W(a, b, c, d) { 965 | d = void 0 === d ? !1 : d; 966 | eb(a); 967 | b < a.i && !d 968 | ? (a.m[b + a.h] = c) 969 | : ((a.g || (a.g = a.m[a.i + a.h] = {}))[b] = c); 970 | } 971 | function hb(a, b, c, d) { 972 | c = void 0 === c ? !0 : c; 973 | d = void 0 === d ? !1 : d; 974 | var e = V(a, b, d); 975 | null == e && (e = db); 976 | if (ab(a.m)) c && (bb(e), Object.freeze(e)); 977 | else if (e === db || ab(e)) (e = U(e.slice())), W(a, b, e, d); 978 | return e; 979 | } 980 | function X(a, b, c) { 981 | a = V(a, b); 982 | a = null == a ? a : +a; 983 | return null == a ? (void 0 === c ? 0 : c) : a; 984 | } 985 | function ib(a, b, c, d) { 986 | a.j || (a.j = {}); 987 | var e = ab(a.m), 988 | g = a.j[c]; 989 | if (!g) { 990 | d = hb(a, c, !0, void 0 === d ? !1 : d); 991 | g = []; 992 | e = e || ab(d); 993 | for (var f = 0; f < d.length; f++) (g[f] = new b(d[f])), e && bb(g[f].m); 994 | e && (bb(g), Object.freeze(g)); 995 | a.j[c] = g; 996 | } 997 | return g; 998 | } 999 | function jb(a, b, c, d, e) { 1000 | var g = void 0 === g ? !1 : g; 1001 | eb(a); 1002 | g = ib(a, c, b, g); 1003 | c = d ? d : new c(); 1004 | a = hb(a, b); 1005 | void 0 != e 1006 | ? (g.splice(e, 0, c), a.splice(e, 0, c.m)) 1007 | : (g.push(c), a.push(c.m)); 1008 | return c; 1009 | } 1010 | function kb(a, b) { 1011 | a = V(a, b); 1012 | return null == a ? 0 : a; 1013 | } 1014 | function lb(a, b) { 1015 | a = V(a, b); 1016 | return null == a ? '' : a; 1017 | } 1018 | function mb(a) { 1019 | switch (typeof a) { 1020 | case 'number': 1021 | return isFinite(a) ? a : String(a); 1022 | case 'object': 1023 | if (a && !Array.isArray(a)) { 1024 | if (Ia(a)) return Da(a); 1025 | if (a instanceof Ka) { 1026 | var b = a.L; 1027 | b = 1028 | null == b || 'string' === typeof b 1029 | ? b 1030 | : Ha && b instanceof Uint8Array 1031 | ? Da(b) 1032 | : null; 1033 | return (a.L = b) || ''; 1034 | } 1035 | } 1036 | } 1037 | return a; 1038 | } 1039 | function nb(a) { 1040 | var b = ob; 1041 | b = void 0 === b ? pb : b; 1042 | return qb(a, b); 1043 | } 1044 | function rb(a, b) { 1045 | if (null != a) { 1046 | if (Array.isArray(a)) a = qb(a, b); 1047 | else if (cb(a)) { 1048 | var c = {}, 1049 | d; 1050 | for (d in a) c[d] = rb(a[d], b); 1051 | a = c; 1052 | } else a = b(a); 1053 | return a; 1054 | } 1055 | } 1056 | function qb(a, b) { 1057 | for (var c = a.slice(), d = 0; d < c.length; d++) c[d] = rb(c[d], b); 1058 | Array.isArray(a) && $a(a) & 1 && U(c); 1059 | return c; 1060 | } 1061 | function ob(a) { 1062 | if (a && 'object' == typeof a && a.toJSON) return a.toJSON(); 1063 | a = mb(a); 1064 | return Array.isArray(a) ? nb(a) : a; 1065 | } 1066 | function pb(a) { 1067 | return Ia(a) ? new Uint8Array(a) : a; 1068 | } 1069 | function sb(a, b, c) { 1070 | a || (a = tb); 1071 | tb = null; 1072 | var d = this.constructor.h; 1073 | a || (a = d ? [d] : []); 1074 | this.h = (d ? 0 : -1) - (this.constructor.g || 0); 1075 | this.j = void 0; 1076 | this.m = a; 1077 | a: { 1078 | d = this.m.length; 1079 | a = d - 1; 1080 | if (d && ((d = this.m[a]), cb(d))) { 1081 | this.i = a - this.h; 1082 | this.g = d; 1083 | break a; 1084 | } 1085 | void 0 !== b && -1 < b 1086 | ? ((this.i = Math.max(b, a + 1 - this.h)), (this.g = void 0)) 1087 | : (this.i = Number.MAX_VALUE); 1088 | } 1089 | if (c) 1090 | for (b = 0; b < c.length; b++) 1091 | if (((a = c[b]), a < this.i)) 1092 | (a += this.h), 1093 | (d = this.m[a]) ? Array.isArray(d) && U(d) : (this.m[a] = db); 1094 | else { 1095 | d = this.g || (this.g = this.m[this.i + this.h] = {}); 1096 | var e = d[a]; 1097 | e ? Array.isArray(e) && U(e) : (d[a] = db); 1098 | } 1099 | } 1100 | sb.prototype.toJSON = function () { 1101 | return nb(this.m); 1102 | }; 1103 | sb.prototype.toString = function () { 1104 | return this.m.toString(); 1105 | }; 1106 | var tb; 1107 | function ub() { 1108 | sb.apply(this, arguments); 1109 | } 1110 | D(ub, sb); 1111 | if (fb) { 1112 | var vb = {}; 1113 | Object.defineProperties( 1114 | ub, 1115 | ((vb[Symbol.hasInstance] = gb(function () { 1116 | throw Error('Cannot perform instanceof checks for MutableMessage'); 1117 | })), 1118 | vb) 1119 | ); 1120 | } 1121 | function wb(a, b, c) { 1122 | if (c) { 1123 | var d = {}, 1124 | e; 1125 | for (e in c) { 1126 | var g = c[e], 1127 | f = g.ja; 1128 | f || 1129 | ((d.F = g.pa || g.ha.P), 1130 | g.ba 1131 | ? ((d.U = xb(g.ba)), 1132 | (f = (function (h) { 1133 | return function (k, l, m) { 1134 | return h.F(k, l, m, h.U); 1135 | }; 1136 | })(d))) 1137 | : g.da 1138 | ? ((d.T = yb(g.X.g, g.da)), 1139 | (f = (function (h) { 1140 | return function (k, l, m) { 1141 | return h.F(k, l, m, h.T); 1142 | }; 1143 | })(d))) 1144 | : (f = d.F), 1145 | (g.ja = f)); 1146 | f(b, a, g.X); 1147 | d = { F: d.F, U: d.U, T: d.T }; 1148 | } 1149 | } 1150 | Ya(b, a); 1151 | } 1152 | var zb = Symbol(); 1153 | function Ab(a, b, c) { 1154 | return ( 1155 | a[zb] || 1156 | (a[zb] = function (d, e) { 1157 | return b(d, e, c); 1158 | }) 1159 | ); 1160 | } 1161 | function Bb(a) { 1162 | var b = a[zb]; 1163 | if (!b) { 1164 | var c = Cb(a); 1165 | b = function (d, e) { 1166 | return Db(d, e, c); 1167 | }; 1168 | a[zb] = b; 1169 | } 1170 | return b; 1171 | } 1172 | function Eb(a) { 1173 | var b = a.ba; 1174 | if (b) return Bb(b); 1175 | if ((b = a.oa)) return Ab(a.X.g, b, a.da); 1176 | } 1177 | function Fb(a) { 1178 | var b = Eb(a), 1179 | c = a.X, 1180 | d = a.ha.O; 1181 | return b 1182 | ? function (e, g) { 1183 | return d(e, g, c, b); 1184 | } 1185 | : function (e, g) { 1186 | return d(e, g, c); 1187 | }; 1188 | } 1189 | function Gb(a, b, c, d, e, g) { 1190 | a = a(); 1191 | var f = 0; 1192 | a.length && 'number' !== typeof a[0] && (c(b, a[0]), f++); 1193 | for (; f < a.length; ) { 1194 | c = a[f++]; 1195 | for (var h = f + 1; h < a.length && 'number' !== typeof a[h]; ) h++; 1196 | var k = a[f++]; 1197 | h -= f; 1198 | switch (h) { 1199 | case 0: 1200 | d(b, c, k); 1201 | break; 1202 | case 1: 1203 | d(b, c, k, a[f++]); 1204 | break; 1205 | case 2: 1206 | e(b, c, k, a[f++], a[f++]); 1207 | break; 1208 | case 3: 1209 | h = a[f++]; 1210 | var l = a[f++], 1211 | m = a[f++]; 1212 | Array.isArray(m) ? e(b, c, k, h, l, m) : g(b, c, k, h, l, m); 1213 | break; 1214 | case 4: 1215 | g(b, c, k, a[f++], a[f++], a[f++], a[f++]); 1216 | break; 1217 | default: 1218 | throw Error('unexpected number of binary field arguments: ' + h); 1219 | } 1220 | } 1221 | return b; 1222 | } 1223 | var Hb = Symbol(); 1224 | function xb(a) { 1225 | var b = a[Hb]; 1226 | if (!b) { 1227 | var c = Ib(a); 1228 | b = function (d, e) { 1229 | return Jb(d, e, c); 1230 | }; 1231 | a[Hb] = b; 1232 | } 1233 | return b; 1234 | } 1235 | function yb(a, b) { 1236 | var c = a[Hb]; 1237 | c || 1238 | ((c = function (d, e) { 1239 | return wb(d, e, b); 1240 | }), 1241 | (a[Hb] = c)); 1242 | return c; 1243 | } 1244 | var Kb = Symbol(); 1245 | function Lb(a, b) { 1246 | a.push(b); 1247 | } 1248 | function Mb(a, b, c) { 1249 | a.push(b, c.P); 1250 | } 1251 | function Nb(a, b, c, d, e) { 1252 | var g = xb(e), 1253 | f = c.P; 1254 | a.push(b, function (h, k, l) { 1255 | return f(h, k, l, d, g); 1256 | }); 1257 | } 1258 | function Ob(a, b, c, d, e, g) { 1259 | var f = yb(d, g), 1260 | h = c.P; 1261 | a.push(b, function (k, l, m) { 1262 | return h(k, l, m, d, f); 1263 | }); 1264 | } 1265 | function Ib(a) { 1266 | var b = a[Kb]; 1267 | return b ? b : Gb(a, (a[Kb] = []), Lb, Mb, Nb, Ob); 1268 | } 1269 | var Pb = Symbol(); 1270 | function Qb(a, b) { 1271 | a[0] = b; 1272 | } 1273 | function Rb(a, b, c, d) { 1274 | var e = c.O; 1275 | a[b] = d 1276 | ? function (g, f, h) { 1277 | return e(g, f, h, d); 1278 | } 1279 | : e; 1280 | } 1281 | function Sb(a, b, c, d, e, g) { 1282 | var f = c.O, 1283 | h = Bb(e); 1284 | a[b] = function (k, l, m) { 1285 | return f(k, l, m, d, h, g); 1286 | }; 1287 | } 1288 | function Tb(a, b, c, d, e, g, f) { 1289 | var h = c.O, 1290 | k = Ab(d, e, g); 1291 | a[b] = function (l, m, r) { 1292 | return h(l, m, r, d, k, f); 1293 | }; 1294 | } 1295 | function Cb(a) { 1296 | var b = a[Pb]; 1297 | return b ? b : Gb(a, (a[Pb] = {}), Qb, Rb, Sb, Tb); 1298 | } 1299 | function Db(a, b, c) { 1300 | for (; Ua(b) && 4 != b.h; ) { 1301 | var d = b.i, 1302 | e = c[d]; 1303 | if (!e) { 1304 | var g = c[0]; 1305 | g && (g = g[d]) && (e = c[d] = Fb(g)); 1306 | } 1307 | if (!e || !e(b, a, d)) 1308 | if (((e = b), (d = a), (g = e.j), Va(e), !e.W)) { 1309 | var f = e.g.h; 1310 | e = e.g.g; 1311 | e = 1312 | g === e 1313 | ? Ja || (Ja = new Uint8Array(0)) 1314 | : La 1315 | ? f.slice(g, e) 1316 | : new Uint8Array(f.subarray(g, e)); 1317 | (g = d.ca) ? g.push(e) : (d.ca = [e]); 1318 | } 1319 | } 1320 | return a; 1321 | } 1322 | function Ub(a, b, c) { 1323 | if (Wa.length) { 1324 | var d = Wa.pop(); 1325 | a && (Qa(d.g, a), (d.i = -1), (d.h = -1)); 1326 | a = d; 1327 | } else a = new Ta(a); 1328 | try { 1329 | return Db(new b(), a, Cb(c)); 1330 | } finally { 1331 | (b = a.g), 1332 | (b.h = null), 1333 | (b.j = 0), 1334 | (b.i = 0), 1335 | (b.g = 0), 1336 | (b.v = !1), 1337 | (a.i = -1), 1338 | (a.h = -1), 1339 | 100 > Wa.length && Wa.push(a); 1340 | } 1341 | } 1342 | function Jb(a, b, c) { 1343 | for (var d = c.length, e = 1 == d % 2, g = e ? 1 : 0; g < d; g += 2) 1344 | (0, c[g + 1])(b, a, c[g]); 1345 | wb(a, b, e ? c[0] : void 0); 1346 | } 1347 | function Vb(a, b) { 1348 | var c = new Xa(); 1349 | Jb(a, c, Ib(b)); 1350 | S(c, c.g.end()); 1351 | a = new Uint8Array(c.h); 1352 | b = c.i; 1353 | for (var d = b.length, e = 0, g = 0; g < d; g++) { 1354 | var f = b[g]; 1355 | a.set(f, e); 1356 | e += f.length; 1357 | } 1358 | c.i = [a]; 1359 | return a; 1360 | } 1361 | function Wb(a, b) { 1362 | return { O: a, P: b }; 1363 | } 1364 | var Y = Wb( 1365 | function (a, b, c) { 1366 | if (5 !== a.h) return !1; 1367 | a = a.g; 1368 | var d = a.h[a.g]; 1369 | var e = a.h[a.g + 1]; 1370 | var g = a.h[a.g + 2], 1371 | f = a.h[a.g + 3]; 1372 | a.g += 4; 1373 | O(a); 1374 | e = ((d << 0) | (e << 8) | (g << 16) | (f << 24)) >>> 0; 1375 | a = 2 * (e >> 31) + 1; 1376 | d = (e >>> 23) & 255; 1377 | e &= 8388607; 1378 | W( 1379 | b, 1380 | c, 1381 | 255 == d 1382 | ? e 1383 | ? NaN 1384 | : Infinity * a 1385 | : 0 == d 1386 | ? a * Math.pow(2, -149) * e 1387 | : a * Math.pow(2, d - 150) * (e + Math.pow(2, 23)) 1388 | ); 1389 | return !0; 1390 | }, 1391 | function (a, b, c) { 1392 | b = V(b, c); 1393 | if (null != b) { 1394 | R(a.g, 8 * c + 5); 1395 | a = a.g; 1396 | var d = b; 1397 | d = (c = 0 > d ? 1 : 0) ? -d : d; 1398 | 0 === d 1399 | ? 0 < 1 / d 1400 | ? (M = N = 0) 1401 | : ((N = 0), (M = 2147483648)) 1402 | : isNaN(d) 1403 | ? ((N = 0), (M = 2147483647)) 1404 | : 3.4028234663852886e38 < d 1405 | ? ((N = 0), (M = ((c << 31) | 2139095040) >>> 0)) 1406 | : 1.1754943508222875e-38 > d 1407 | ? ((d = Math.round(d / Math.pow(2, -149))), 1408 | (N = 0), 1409 | (M = ((c << 31) | d) >>> 0)) 1410 | : ((b = Math.floor(Math.log(d) / Math.LN2)), 1411 | (d *= Math.pow(2, -b)), 1412 | (d = Math.round(8388608 * d)), 1413 | 16777216 <= d && ++b, 1414 | (N = 0), 1415 | (M = ((c << 31) | ((b + 127) << 23) | (d & 8388607)) >>> 0)); 1416 | c = M; 1417 | a.g.push((c >>> 0) & 255); 1418 | a.g.push((c >>> 8) & 255); 1419 | a.g.push((c >>> 16) & 255); 1420 | a.g.push((c >>> 24) & 255); 1421 | } 1422 | } 1423 | ), 1424 | Xb = Wb( 1425 | function (a, b, c) { 1426 | if (0 !== a.h) return !1; 1427 | for (var d = a.g, e = 128, g = 0, f = (a = 0); 4 > f && 128 <= e; f++) 1428 | (e = d.h[d.g++]), O(d), (g |= (e & 127) << (7 * f)); 1429 | 128 <= e && 1430 | ((e = d.h[d.g++]), 1431 | O(d), 1432 | (g |= (e & 127) << 28), 1433 | (a |= (e & 127) >> 4)); 1434 | if (128 <= e) 1435 | for (f = 0; 5 > f && 128 <= e; f++) 1436 | (e = d.h[d.g++]), O(d), (a |= (e & 127) << (7 * f + 3)); 1437 | if (128 > e) { 1438 | d = g >>> 0; 1439 | e = a >>> 0; 1440 | if ((a = e & 2147483648)) 1441 | (d = (~d + 1) >>> 0), (e = ~e >>> 0), 0 == d && (e = (e + 1) >>> 0); 1442 | d = 4294967296 * e + (d >>> 0); 1443 | } else throw Oa(); 1444 | W(b, c, a ? -d : d); 1445 | return !0; 1446 | }, 1447 | function (a, b, c) { 1448 | b = V(b, c); 1449 | if (null != b && null != b) { 1450 | R(a.g, 8 * c); 1451 | a = a.g; 1452 | var d = b; 1453 | c = 0 > d; 1454 | d = Math.abs(d); 1455 | b = d >>> 0; 1456 | d = Math.floor((d - b) / 4294967296); 1457 | d >>>= 0; 1458 | c && 1459 | ((d = ~d >>> 0), 1460 | (b = (~b >>> 0) + 1), 1461 | 4294967295 < b && ((b = 0), d++, 4294967295 < d && (d = 0))); 1462 | M = b; 1463 | N = d; 1464 | c = M; 1465 | for (b = N; 0 < b || 127 < c; ) 1466 | a.g.push((c & 127) | 128), 1467 | (c = ((c >>> 7) | (b << 25)) >>> 0), 1468 | (b >>>= 7); 1469 | a.g.push(c); 1470 | } 1471 | } 1472 | ), 1473 | Yb = Wb( 1474 | function (a, b, c) { 1475 | if (0 !== a.h) return !1; 1476 | W(b, c, Q(a.g)); 1477 | return !0; 1478 | }, 1479 | function (a, b, c) { 1480 | b = V(b, c); 1481 | if (null != b && null != b) 1482 | if ((R(a.g, 8 * c), (a = a.g), (c = b), 0 <= c)) R(a, c); 1483 | else { 1484 | for (b = 0; 9 > b; b++) a.g.push((c & 127) | 128), (c >>= 7); 1485 | a.g.push(1); 1486 | } 1487 | } 1488 | ), 1489 | Zb = Wb( 1490 | function (a, b, c) { 1491 | if (2 !== a.h) return !1; 1492 | var d = Q(a.g) >>> 0; 1493 | a = a.g; 1494 | var e = a.g; 1495 | a.g += d; 1496 | O(a); 1497 | a = a.h; 1498 | var g; 1499 | if (za) 1500 | (g = ya) || (g = ya = new TextDecoder('utf-8', { fatal: !0 })), 1501 | (g = g.decode(a.subarray(e, e + d))); 1502 | else { 1503 | d = e + d; 1504 | for (var f = [], h = null, k, l, m; e < d; ) 1505 | (k = a[e++]), 1506 | 128 > k 1507 | ? f.push(k) 1508 | : 224 > k 1509 | ? e >= d 1510 | ? K() 1511 | : ((l = a[e++]), 1512 | 194 > k || 128 !== (l & 192) 1513 | ? (e--, K()) 1514 | : f.push(((k & 31) << 6) | (l & 63))) 1515 | : 240 > k 1516 | ? e >= d - 1 1517 | ? K() 1518 | : ((l = a[e++]), 1519 | 128 !== (l & 192) || 1520 | (224 === k && 160 > l) || 1521 | (237 === k && 160 <= l) || 1522 | 128 !== ((g = a[e++]) & 192) 1523 | ? (e--, K()) 1524 | : f.push(((k & 15) << 12) | ((l & 63) << 6) | (g & 63))) 1525 | : 244 >= k 1526 | ? e >= d - 2 1527 | ? K() 1528 | : ((l = a[e++]), 1529 | 128 !== (l & 192) || 1530 | 0 !== ((k << 28) + (l - 144)) >> 30 || 1531 | 128 !== ((g = a[e++]) & 192) || 1532 | 128 !== ((m = a[e++]) & 192) 1533 | ? (e--, K()) 1534 | : ((k = 1535 | ((k & 7) << 18) | 1536 | ((l & 63) << 12) | 1537 | ((g & 63) << 6) | 1538 | (m & 63)), 1539 | (k -= 65536), 1540 | f.push(((k >> 10) & 1023) + 55296, (k & 1023) + 56320))) 1541 | : K(), 1542 | 8192 <= f.length && ((h = xa(h, f)), (f.length = 0)); 1543 | g = xa(h, f); 1544 | } 1545 | W(b, c, g); 1546 | return !0; 1547 | }, 1548 | function (a, b, c) { 1549 | b = V(b, c); 1550 | if (null != b) { 1551 | var d = !1; 1552 | d = void 0 === d ? !1 : d; 1553 | if (Ba) { 1554 | if ( 1555 | d && 1556 | /(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test( 1557 | b 1558 | ) 1559 | ) 1560 | throw Error('Found an unpaired surrogate'); 1561 | b = (Aa || (Aa = new TextEncoder())).encode(b); 1562 | } else { 1563 | for ( 1564 | var e = 0, g = new Uint8Array(3 * b.length), f = 0; 1565 | f < b.length; 1566 | f++ 1567 | ) { 1568 | var h = b.charCodeAt(f); 1569 | if (128 > h) g[e++] = h; 1570 | else { 1571 | if (2048 > h) g[e++] = (h >> 6) | 192; 1572 | else { 1573 | if (55296 <= h && 57343 >= h) { 1574 | if (56319 >= h && f < b.length) { 1575 | var k = b.charCodeAt(++f); 1576 | if (56320 <= k && 57343 >= k) { 1577 | h = 1024 * (h - 55296) + k - 56320 + 65536; 1578 | g[e++] = (h >> 18) | 240; 1579 | g[e++] = ((h >> 12) & 63) | 128; 1580 | g[e++] = ((h >> 6) & 63) | 128; 1581 | g[e++] = (h & 63) | 128; 1582 | continue; 1583 | } else f--; 1584 | } 1585 | if (d) throw Error('Found an unpaired surrogate'); 1586 | h = 65533; 1587 | } 1588 | g[e++] = (h >> 12) | 224; 1589 | g[e++] = ((h >> 6) & 63) | 128; 1590 | } 1591 | g[e++] = (h & 63) | 128; 1592 | } 1593 | } 1594 | b = g.subarray(0, e); 1595 | } 1596 | R(a.g, 8 * c + 2); 1597 | R(a.g, b.length); 1598 | S(a, a.g.end()); 1599 | S(a, b); 1600 | } 1601 | } 1602 | ), 1603 | $b = Wb( 1604 | function (a, b, c, d, e) { 1605 | if (2 !== a.h) return !1; 1606 | b = jb(b, c, d); 1607 | c = a.g.i; 1608 | d = Q(a.g) >>> 0; 1609 | var g = a.g.g + d, 1610 | f = g - c; 1611 | 0 >= f && ((a.g.i = g), e(b, a), (f = g - a.g.g)); 1612 | if (f) 1613 | throw Error( 1614 | 'Message parsing ended unexpectedly. Expected to read ' + 1615 | (d + 1616 | ' bytes, instead read ' + 1617 | (d - f) + 1618 | ' bytes, either the data ended unexpectedly or the message misreported its own length') 1619 | ); 1620 | a.g.g = g; 1621 | a.g.i = c; 1622 | return !0; 1623 | }, 1624 | function (a, b, c, d, e) { 1625 | b = ib(b, d, c); 1626 | if (null != b) 1627 | for (d = 0; d < b.length; d++) { 1628 | var g = a; 1629 | R(g.g, 8 * c + 2); 1630 | var f = g.g.end(); 1631 | S(g, f); 1632 | f.push(g.h); 1633 | g = f; 1634 | e(b[d], a); 1635 | f = a; 1636 | var h = g.pop(); 1637 | for (h = f.h + f.g.length() - h; 127 < h; ) 1638 | g.push((h & 127) | 128), (h >>>= 7), f.h++; 1639 | g.push(h); 1640 | f.h++; 1641 | } 1642 | } 1643 | ); 1644 | function Z() { 1645 | ub.apply(this, arguments); 1646 | } 1647 | D(Z, ub); 1648 | if (fb) { 1649 | var ac = {}; 1650 | Object.defineProperties( 1651 | Z, 1652 | ((ac[Symbol.hasInstance] = gb(Object[Symbol.hasInstance])), ac) 1653 | ); 1654 | } 1655 | function bc(a) { 1656 | Z.call(this, a); 1657 | } 1658 | D(bc, Z); 1659 | function cc() { 1660 | return [1, Yb, 2, Y, 3, Zb, 4, Zb]; 1661 | } 1662 | function dc(a) { 1663 | Z.call(this, a, -1, ec); 1664 | } 1665 | D(dc, Z); 1666 | dc.prototype.addClassification = function (a, b) { 1667 | jb(this, 1, bc, a, b); 1668 | return this; 1669 | }; 1670 | function fc() { 1671 | return [1, $b, bc, cc]; 1672 | } 1673 | var ec = [1]; 1674 | function gc(a) { 1675 | Z.call(this, a); 1676 | } 1677 | D(gc, Z); 1678 | function hc() { 1679 | return [1, Y, 2, Y, 3, Y, 4, Y, 5, Y]; 1680 | } 1681 | function ic(a) { 1682 | Z.call(this, a, -1, jc); 1683 | } 1684 | D(ic, Z); 1685 | function kc() { 1686 | return [1, $b, gc, hc]; 1687 | } 1688 | var jc = [1]; 1689 | function lc(a) { 1690 | Z.call(this, a); 1691 | } 1692 | D(lc, Z); 1693 | function mc() { 1694 | return [1, Y, 2, Y, 3, Y, 4, Y, 5, Y, 6, Xb]; 1695 | } 1696 | function nc(a, b, c) { 1697 | c = a.createShader(0 === c ? a.VERTEX_SHADER : a.FRAGMENT_SHADER); 1698 | a.shaderSource(c, b); 1699 | a.compileShader(c); 1700 | if (!a.getShaderParameter(c, a.COMPILE_STATUS)) 1701 | throw Error( 1702 | 'Could not compile WebGL shader.\n\n' + a.getShaderInfoLog(c) 1703 | ); 1704 | return c; 1705 | } 1706 | function oc(a) { 1707 | return ib(a, bc, 1).map(function (b) { 1708 | return { 1709 | index: kb(b, 1), 1710 | score: X(b, 2), 1711 | label: null != V(b, 3) ? lb(b, 3) : void 0, 1712 | displayName: null != V(b, 4) ? lb(b, 4) : void 0, 1713 | }; 1714 | }); 1715 | } 1716 | function pc(a) { 1717 | return { 1718 | x: X(a, 1), 1719 | y: X(a, 2), 1720 | z: X(a, 3), 1721 | visibility: null != V(a, 4) ? X(a, 4) : void 0, 1722 | }; 1723 | } 1724 | function qc(a) { 1725 | return a.map(function (b) { 1726 | return ib(Ub(b, ic, kc), gc, 1).map(pc); 1727 | }); 1728 | } 1729 | function rc(a, b) { 1730 | this.h = a; 1731 | this.g = b; 1732 | this.l = 0; 1733 | } 1734 | function sc(a, b, c) { 1735 | tc(a, b); 1736 | if ('function' === typeof a.g.canvas.transferToImageBitmap) 1737 | return Promise.resolve(a.g.canvas.transferToImageBitmap()); 1738 | if (c) return Promise.resolve(a.g.canvas); 1739 | if ('function' === typeof createImageBitmap) 1740 | return createImageBitmap(a.g.canvas); 1741 | void 0 === a.i && (a.i = document.createElement('canvas')); 1742 | return new Promise(function (d) { 1743 | a.i.height = a.g.canvas.height; 1744 | a.i.width = a.g.canvas.width; 1745 | a.i 1746 | .getContext('2d', {}) 1747 | .drawImage(a.g.canvas, 0, 0, a.g.canvas.width, a.g.canvas.height); 1748 | d(a.i); 1749 | }); 1750 | } 1751 | function tc(a, b) { 1752 | var c = a.g; 1753 | if (void 0 === a.o) { 1754 | var d = nc( 1755 | c, 1756 | '\n attribute vec2 aVertex;\n attribute vec2 aTex;\n varying vec2 vTex;\n void main(void) {\n gl_Position = vec4(aVertex, 0.0, 1.0);\n vTex = aTex;\n }', 1757 | 0 1758 | ), 1759 | e = nc( 1760 | c, 1761 | '\n precision mediump float;\n varying vec2 vTex;\n uniform sampler2D sampler0;\n void main(){\n gl_FragColor = texture2D(sampler0, vTex);\n }', 1762 | 1 1763 | ), 1764 | g = c.createProgram(); 1765 | c.attachShader(g, d); 1766 | c.attachShader(g, e); 1767 | c.linkProgram(g); 1768 | if (!c.getProgramParameter(g, c.LINK_STATUS)) 1769 | throw Error( 1770 | 'Could not compile WebGL program.\n\n' + c.getProgramInfoLog(g) 1771 | ); 1772 | d = a.o = g; 1773 | c.useProgram(d); 1774 | e = c.getUniformLocation(d, 'sampler0'); 1775 | a.j = { 1776 | K: c.getAttribLocation(d, 'aVertex'), 1777 | J: c.getAttribLocation(d, 'aTex'), 1778 | qa: e, 1779 | }; 1780 | a.u = c.createBuffer(); 1781 | c.bindBuffer(c.ARRAY_BUFFER, a.u); 1782 | c.enableVertexAttribArray(a.j.K); 1783 | c.vertexAttribPointer(a.j.K, 2, c.FLOAT, !1, 0, 0); 1784 | c.bufferData( 1785 | c.ARRAY_BUFFER, 1786 | new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]), 1787 | c.STATIC_DRAW 1788 | ); 1789 | c.bindBuffer(c.ARRAY_BUFFER, null); 1790 | a.s = c.createBuffer(); 1791 | c.bindBuffer(c.ARRAY_BUFFER, a.s); 1792 | c.enableVertexAttribArray(a.j.J); 1793 | c.vertexAttribPointer(a.j.J, 2, c.FLOAT, !1, 0, 0); 1794 | c.bufferData( 1795 | c.ARRAY_BUFFER, 1796 | new Float32Array([0, 1, 0, 0, 1, 0, 1, 1]), 1797 | c.STATIC_DRAW 1798 | ); 1799 | c.bindBuffer(c.ARRAY_BUFFER, null); 1800 | c.uniform1i(e, 0); 1801 | } 1802 | d = a.j; 1803 | c.useProgram(a.o); 1804 | c.canvas.width = b.width; 1805 | c.canvas.height = b.height; 1806 | c.viewport(0, 0, b.width, b.height); 1807 | c.activeTexture(c.TEXTURE0); 1808 | a.h.bindTexture2d(b.glName); 1809 | c.enableVertexAttribArray(d.K); 1810 | c.bindBuffer(c.ARRAY_BUFFER, a.u); 1811 | c.vertexAttribPointer(d.K, 2, c.FLOAT, !1, 0, 0); 1812 | c.enableVertexAttribArray(d.J); 1813 | c.bindBuffer(c.ARRAY_BUFFER, a.s); 1814 | c.vertexAttribPointer(d.J, 2, c.FLOAT, !1, 0, 0); 1815 | c.bindFramebuffer( 1816 | c.DRAW_FRAMEBUFFER ? c.DRAW_FRAMEBUFFER : c.FRAMEBUFFER, 1817 | null 1818 | ); 1819 | c.clearColor(0, 0, 0, 0); 1820 | c.clear(c.COLOR_BUFFER_BIT); 1821 | c.colorMask(!0, !0, !0, !0); 1822 | c.drawArrays(c.TRIANGLE_FAN, 0, 4); 1823 | c.disableVertexAttribArray(d.K); 1824 | c.disableVertexAttribArray(d.J); 1825 | c.bindBuffer(c.ARRAY_BUFFER, null); 1826 | a.h.bindTexture2d(0); 1827 | } 1828 | function uc(a) { 1829 | this.g = a; 1830 | } 1831 | var vc = new Uint8Array([ 1832 | 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 9, 1, 7, 0, 1833 | 65, 0, 253, 15, 26, 11, 1834 | ]); 1835 | function wc(a, b) { 1836 | return b + a; 1837 | } 1838 | function xc(a, b) { 1839 | window[a] = b; 1840 | } 1841 | function yc(a) { 1842 | var b = document.createElement('script'); 1843 | b.setAttribute('src', a); 1844 | b.setAttribute('crossorigin', 'anonymous'); 1845 | return new Promise(function (c) { 1846 | b.addEventListener( 1847 | 'load', 1848 | function () { 1849 | c(); 1850 | }, 1851 | !1 1852 | ); 1853 | b.addEventListener( 1854 | 'error', 1855 | function () { 1856 | c(); 1857 | }, 1858 | !1 1859 | ); 1860 | document.body.appendChild(b); 1861 | }); 1862 | } 1863 | function zc() { 1864 | return I(function (a) { 1865 | switch (a.g) { 1866 | case 1: 1867 | return (a.o = 2), F(a, WebAssembly.instantiate(vc), 4); 1868 | case 4: 1869 | a.g = 3; 1870 | a.o = 0; 1871 | break; 1872 | case 2: 1873 | return (a.o = 0), (a.j = null), a.return(!1); 1874 | case 3: 1875 | return a.return(!0); 1876 | } 1877 | }); 1878 | } 1879 | function Ac(a) { 1880 | this.g = a; 1881 | this.listeners = {}; 1882 | this.j = {}; 1883 | this.H = {}; 1884 | this.o = {}; 1885 | this.u = {}; 1886 | this.I = this.s = this.$ = !0; 1887 | this.D = Promise.resolve(); 1888 | this.Z = ''; 1889 | this.C = {}; 1890 | this.locateFile = (a && a.locateFile) || wc; 1891 | if ('object' === typeof window) 1892 | var b = 1893 | window.location.pathname 1894 | .toString() 1895 | .substring(0, window.location.pathname.toString().lastIndexOf('/')) + 1896 | '/'; 1897 | else if ('undefined' !== typeof location) 1898 | b = 1899 | location.pathname 1900 | .toString() 1901 | .substring(0, location.pathname.toString().lastIndexOf('/')) + '/'; 1902 | else 1903 | throw Error( 1904 | 'solutions can only be loaded on a web page or in a web worker' 1905 | ); 1906 | this.aa = b; 1907 | if (a.options) { 1908 | b = C(Object.keys(a.options)); 1909 | for (var c = b.next(); !c.done; c = b.next()) { 1910 | c = c.value; 1911 | var d = a.options[c].default; 1912 | void 0 !== d && (this.j[c] = 'function' === typeof d ? d() : d); 1913 | } 1914 | } 1915 | } 1916 | x = Ac.prototype; 1917 | x.close = function () { 1918 | this.i && this.i.delete(); 1919 | return Promise.resolve(); 1920 | }; 1921 | function Bc(a) { 1922 | var b, c, d, e, g, f, h, k, l, m, r; 1923 | return I(function (p) { 1924 | switch (p.g) { 1925 | case 1: 1926 | if (!a.$) return p.return(); 1927 | b = 1928 | void 0 === a.g.files 1929 | ? [] 1930 | : 'function' === typeof a.g.files 1931 | ? a.g.files(a.j) 1932 | : a.g.files; 1933 | return F(p, zc(), 2); 1934 | case 2: 1935 | c = p.h; 1936 | if ('object' === typeof window) 1937 | return ( 1938 | xc('createMediapipeSolutionsWasm', { locateFile: a.locateFile }), 1939 | xc('createMediapipeSolutionsPackedAssets', { 1940 | locateFile: a.locateFile, 1941 | }), 1942 | (f = b.filter(function (n) { 1943 | return void 0 !== n.data; 1944 | })), 1945 | (h = b.filter(function (n) { 1946 | return void 0 === n.data; 1947 | })), 1948 | (k = Promise.all( 1949 | f.map(function (n) { 1950 | var q = Cc(a, n.url); 1951 | if (void 0 !== n.path) { 1952 | var t = n.path; 1953 | q = q.then(function (w) { 1954 | a.overrideFile(t, w); 1955 | return Promise.resolve(w); 1956 | }); 1957 | } 1958 | return q; 1959 | }) 1960 | )), 1961 | (l = Promise.all( 1962 | h.map(function (n) { 1963 | return void 0 === n.simd || (n.simd && c) || (!n.simd && !c) 1964 | ? yc(a.locateFile(n.url, a.aa)) 1965 | : Promise.resolve(); 1966 | }) 1967 | ).then(function () { 1968 | var n, q, t; 1969 | return I(function (w) { 1970 | if (1 == w.g) 1971 | return ( 1972 | (n = window.createMediapipeSolutionsWasm), 1973 | (q = window.createMediapipeSolutionsPackedAssets), 1974 | (t = a), 1975 | F(w, n(q), 2) 1976 | ); 1977 | t.h = w.h; 1978 | w.g = 0; 1979 | }); 1980 | })), 1981 | (m = (function () { 1982 | return I(function (n) { 1983 | a.g.graph && a.g.graph.url 1984 | ? (n = F(n, Cc(a, a.g.graph.url), 0)) 1985 | : ((n.g = 0), (n = void 0)); 1986 | return n; 1987 | }); 1988 | })()), 1989 | F(p, Promise.all([l, k, m]), 7) 1990 | ); 1991 | if ('function' !== typeof importScripts) 1992 | throw Error( 1993 | 'solutions can only be loaded on a web page or in a web worker' 1994 | ); 1995 | d = b 1996 | .filter(function (n) { 1997 | return void 0 === n.simd || (n.simd && c) || (!n.simd && !c); 1998 | }) 1999 | .map(function (n) { 2000 | return a.locateFile(n.url, a.aa); 2001 | }); 2002 | importScripts.apply(null, ea(d)); 2003 | e = a; 2004 | return F(p, createMediapipeSolutionsWasm(Module), 6); 2005 | case 6: 2006 | e.h = p.h; 2007 | a.l = new OffscreenCanvas(1, 1); 2008 | a.h.canvas = a.l; 2009 | g = a.h.GL.createContext(a.l, { 2010 | antialias: !1, 2011 | alpha: !1, 2012 | na: 'undefined' !== typeof WebGL2RenderingContext ? 2 : 1, 2013 | }); 2014 | a.h.GL.makeContextCurrent(g); 2015 | console.log(a, 'thi si a'); 2016 | a.C = a.h.GL.currentContext.GLctx; 2017 | p.g = 4; 2018 | break; 2019 | case 7: 2020 | a.l = document.createElement('canvas'); 2021 | r = a.l.getContext('webgl2', {}); 2022 | if (!r && ((r = a.l.getContext('webgl', {})), !r)) 2023 | return ( 2024 | alert( 2025 | 'Failed to create WebGL canvas context when passing video frame.' 2026 | ), 2027 | p.return() 2028 | ); 2029 | a.G = r; 2030 | a.h.canvas = a.l; 2031 | a.h.createContext(a.l, !0, !0, {}); 2032 | case 4: 2033 | (a.i = new a.h.SolutionWasm()), (a.$ = !1), (p.g = 0); 2034 | } 2035 | }); 2036 | } 2037 | function Dc(a) { 2038 | var b, c, d, e, g, f, h, k; 2039 | return I(function (l) { 2040 | if (1 == l.g) { 2041 | if (a.g.graph && a.g.graph.url && a.Z === a.g.graph.url) 2042 | return l.return(); 2043 | a.s = !0; 2044 | if (!a.g.graph || !a.g.graph.url) { 2045 | l.g = 2; 2046 | return; 2047 | } 2048 | a.Z = a.g.graph.url; 2049 | return F(l, Cc(a, a.g.graph.url), 3); 2050 | } 2051 | 2 != l.g && ((b = l.h), a.i.loadGraph(b)); 2052 | c = C(Object.keys(a.C)); 2053 | for (d = c.next(); !d.done; d = c.next()) 2054 | (e = d.value), a.i.overrideFile(e, a.C[e]); 2055 | a.C = {}; 2056 | if (a.g.listeners) 2057 | for (g = C(a.g.listeners), f = g.next(); !f.done; f = g.next()) 2058 | (h = f.value), Ec(a, h); 2059 | k = a.j; 2060 | a.j = {}; 2061 | a.setOptions(k); 2062 | l.g = 0; 2063 | }); 2064 | } 2065 | x.reset = function () { 2066 | var a = this; 2067 | return I(function (b) { 2068 | a.i && (a.i.reset(), (a.o = {}), (a.u = {})); 2069 | b.g = 0; 2070 | }); 2071 | }; 2072 | x.setOptions = function (a, b) { 2073 | var c = this; 2074 | if ((b = b || this.g.options)) { 2075 | for ( 2076 | var d = [], e = [], g = {}, f = C(Object.keys(a)), h = f.next(); 2077 | !h.done; 2078 | g = { R: g.R, S: g.S }, h = f.next() 2079 | ) { 2080 | var k = h.value; 2081 | (k in this.j && this.j[k] === a[k]) || 2082 | ((this.j[k] = a[k]), 2083 | (h = b[k]), 2084 | void 0 !== h && 2085 | (h.onChange && 2086 | ((g.R = h.onChange), 2087 | (g.S = a[k]), 2088 | d.push( 2089 | (function (l) { 2090 | return function () { 2091 | var m; 2092 | return I(function (r) { 2093 | if (1 == r.g) return F(r, l.R(l.S), 2); 2094 | m = r.h; 2095 | !0 === m && (c.s = !0); 2096 | r.g = 0; 2097 | }); 2098 | }; 2099 | })(g) 2100 | )), 2101 | h.graphOptionXref && 2102 | ((k = { 2103 | valueNumber: 1 === h.type ? a[k] : 0, 2104 | valueBoolean: 0 === h.type ? a[k] : !1, 2105 | valueString: 2 === h.type ? a[k] : '', 2106 | }), 2107 | (h = Object.assign( 2108 | Object.assign( 2109 | Object.assign({}, { calculatorName: '', calculatorIndex: 0 }), 2110 | h.graphOptionXref 2111 | ), 2112 | k 2113 | )), 2114 | e.push(h)))); 2115 | } 2116 | if (0 !== d.length || 0 !== e.length) 2117 | (this.s = !0), 2118 | (this.B = (void 0 === this.B ? [] : this.B).concat(e)), 2119 | (this.A = (void 0 === this.A ? [] : this.A).concat(d)); 2120 | } 2121 | }; 2122 | function Fc(a) { 2123 | var b, c, d, e, g, f, h; 2124 | return I(function (k) { 2125 | switch (k.g) { 2126 | case 1: 2127 | if (!a.s) return k.return(); 2128 | if (!a.A) { 2129 | k.g = 2; 2130 | break; 2131 | } 2132 | b = C(a.A); 2133 | c = b.next(); 2134 | case 3: 2135 | if (c.done) { 2136 | k.g = 5; 2137 | break; 2138 | } 2139 | d = c.value; 2140 | return F(k, d(), 4); 2141 | case 4: 2142 | c = b.next(); 2143 | k.g = 3; 2144 | break; 2145 | case 5: 2146 | a.A = void 0; 2147 | case 2: 2148 | if (a.B) { 2149 | e = new a.h.GraphOptionChangeRequestList(); 2150 | g = C(a.B); 2151 | for (f = g.next(); !f.done; f = g.next()) 2152 | (h = f.value), e.push_back(h); 2153 | a.i.changeOptions(e); 2154 | e.delete(); 2155 | a.B = void 0; 2156 | } 2157 | a.s = !1; 2158 | k.g = 0; 2159 | } 2160 | }); 2161 | } 2162 | x.initialize = function () { 2163 | var a = this; 2164 | return I(function (b) { 2165 | return 1 == b.g 2166 | ? F(b, Bc(a), 2) 2167 | : 3 != b.g 2168 | ? F(b, Dc(a), 3) 2169 | : F(b, Fc(a), 0); 2170 | }); 2171 | }; 2172 | function Cc(a, b) { 2173 | var c, d; 2174 | return I(function (e) { 2175 | if (b in a.H) return e.return(a.H[b]); 2176 | c = a.locateFile(b, ''); 2177 | d = fetch(c).then(function (g) { 2178 | return g.arrayBuffer(); 2179 | }); 2180 | a.H[b] = d; 2181 | return e.return(d); 2182 | }); 2183 | } 2184 | x.overrideFile = function (a, b) { 2185 | this.i ? this.i.overrideFile(a, b) : (this.C[a] = b); 2186 | }; 2187 | x.clearOverriddenFiles = function () { 2188 | this.C = {}; 2189 | this.i && this.i.clearOverriddenFiles(); 2190 | }; 2191 | x.send = function (a, b) { 2192 | var c = this, 2193 | d, 2194 | e, 2195 | g, 2196 | f, 2197 | h, 2198 | k, 2199 | l, 2200 | m, 2201 | r; 2202 | return I(function (p) { 2203 | switch (p.g) { 2204 | case 1: 2205 | if (!c.g.inputs) return p.return(); 2206 | d = 1e3 * (void 0 === b || null === b ? performance.now() : b); 2207 | return F(p, c.D, 2); 2208 | case 2: 2209 | return F(p, c.initialize(), 3); 2210 | case 3: 2211 | e = new c.h.PacketDataList(); 2212 | g = C(Object.keys(a)); 2213 | for (f = g.next(); !f.done; f = g.next()) 2214 | if (((h = f.value), (k = c.g.inputs[h]))) { 2215 | a: { 2216 | var n = a[h]; 2217 | switch (k.type) { 2218 | case 'video': 2219 | var q = c.o[k.stream]; 2220 | q || ((q = new rc(c.h, c.G)), (c.o[k.stream] = q)); 2221 | 0 === q.l && (q.l = q.h.createTexture()); 2222 | if ( 2223 | 'undefined' !== typeof HTMLVideoElement && 2224 | n instanceof HTMLVideoElement 2225 | ) { 2226 | var t = n.videoWidth; 2227 | var w = n.videoHeight; 2228 | } else 2229 | 'undefined' !== typeof HTMLImageElement && 2230 | n instanceof HTMLImageElement 2231 | ? ((t = n.naturalWidth), (w = n.naturalHeight)) 2232 | : ((t = n.width), (w = n.height)); 2233 | w = { glName: q.l, width: t, height: w }; 2234 | t = q.g; 2235 | t.canvas.width = w.width; 2236 | t.canvas.height = w.height; 2237 | t.activeTexture(t.TEXTURE0); 2238 | q.h.bindTexture2d(q.l); 2239 | t.texImage2D( 2240 | t.TEXTURE_2D, 2241 | 0, 2242 | t.RGBA, 2243 | t.RGBA, 2244 | t.UNSIGNED_BYTE, 2245 | n 2246 | ); 2247 | q.h.bindTexture2d(0); 2248 | q = w; 2249 | break a; 2250 | case 'detections': 2251 | q = c.o[k.stream]; 2252 | q || ((q = new uc(c.h)), (c.o[k.stream] = q)); 2253 | q.data || (q.data = new q.g.DetectionListData()); 2254 | q.data.reset(n.length); 2255 | for (w = 0; w < n.length; ++w) { 2256 | t = n[w]; 2257 | var v = q.data, 2258 | A = v.setBoundingBox, 2259 | H = w; 2260 | var E = t.ea; 2261 | var u = new lc(); 2262 | W(u, 1, E.ka); 2263 | W(u, 2, E.la); 2264 | W(u, 3, E.height); 2265 | W(u, 4, E.width); 2266 | W(u, 5, E.rotation); 2267 | W(u, 6, E.ia); 2268 | E = Vb(u, mc); 2269 | A.call(v, H, E); 2270 | if (t.Y) 2271 | for (v = 0; v < t.Y.length; ++v) { 2272 | u = t.Y[v]; 2273 | var z = u.visibility ? !0 : !1; 2274 | A = q.data; 2275 | H = A.addNormalizedLandmark; 2276 | E = w; 2277 | u = Object.assign(Object.assign({}, u), { 2278 | visibility: z ? u.visibility : 0, 2279 | }); 2280 | z = new gc(); 2281 | W(z, 1, u.x); 2282 | W(z, 2, u.y); 2283 | W(z, 3, u.z); 2284 | u.visibility && W(z, 4, u.visibility); 2285 | u = Vb(z, hc); 2286 | H.call(A, E, u); 2287 | } 2288 | if (t.V) 2289 | for (v = 0; v < t.V.length; ++v) 2290 | (A = q.data), 2291 | (H = A.addClassification), 2292 | (E = w), 2293 | (u = t.V[v]), 2294 | (z = new bc()), 2295 | W(z, 2, u.score), 2296 | u.index && W(z, 1, u.index), 2297 | u.label && W(z, 3, u.label), 2298 | u.displayName && W(z, 4, u.displayName), 2299 | (u = Vb(z, cc)), 2300 | H.call(A, E, u); 2301 | } 2302 | q = q.data; 2303 | break a; 2304 | default: 2305 | q = {}; 2306 | } 2307 | } 2308 | l = q; 2309 | m = k.stream; 2310 | switch (k.type) { 2311 | case 'video': 2312 | e.pushTexture2d( 2313 | Object.assign(Object.assign({}, l), { 2314 | stream: m, 2315 | timestamp: d, 2316 | }) 2317 | ); 2318 | break; 2319 | case 'detections': 2320 | r = l; 2321 | r.stream = m; 2322 | r.timestamp = d; 2323 | e.pushDetectionList(r); 2324 | break; 2325 | default: 2326 | throw Error("Unknown input config type: '" + k.type + "'"); 2327 | } 2328 | } 2329 | c.i.send(e); 2330 | return F(p, c.D, 4); 2331 | case 4: 2332 | e.delete(), (p.g = 0); 2333 | } 2334 | }); 2335 | }; 2336 | function Gc(a, b, c) { 2337 | var d, e, g, f, h, k, l, m, r, p, n, q, t, w; 2338 | return I(function (v) { 2339 | switch (v.g) { 2340 | case 1: 2341 | if (!c) return v.return(b); 2342 | d = {}; 2343 | e = 0; 2344 | g = C(Object.keys(c)); 2345 | for (f = g.next(); !f.done; f = g.next()) 2346 | (h = f.value), 2347 | (k = c[h]), 2348 | 'string' !== typeof k && 2349 | 'texture' === k.type && 2350 | void 0 !== b[k.stream] && 2351 | ++e; 2352 | 1 < e && (a.I = !1); 2353 | l = C(Object.keys(c)); 2354 | f = l.next(); 2355 | case 2: 2356 | if (f.done) { 2357 | v.g = 4; 2358 | break; 2359 | } 2360 | m = f.value; 2361 | r = c[m]; 2362 | if ('string' === typeof r) 2363 | return (t = d), (w = m), F(v, Hc(a, m, b[r]), 14); 2364 | p = b[r.stream]; 2365 | if ('detection_list' === r.type) { 2366 | if (p) { 2367 | var A = p.getRectList(); 2368 | for ( 2369 | var H = p.getLandmarksList(), 2370 | E = p.getClassificationsList(), 2371 | u = [], 2372 | z = 0; 2373 | z < A.size(); 2374 | ++z 2375 | ) { 2376 | var P = Ub(A.get(z), lc, mc); 2377 | P = { 2378 | ea: { 2379 | ka: X(P, 1), 2380 | la: X(P, 2), 2381 | height: X(P, 3), 2382 | width: X(P, 4), 2383 | rotation: X(P, 5, 0), 2384 | ia: kb(P, 6), 2385 | }, 2386 | Y: ib(Ub(H.get(z), ic, kc), gc, 1).map(pc), 2387 | V: oc(Ub(E.get(z), dc, fc)), 2388 | }; 2389 | u.push(P); 2390 | } 2391 | A = u; 2392 | } else A = []; 2393 | d[m] = A; 2394 | v.g = 7; 2395 | break; 2396 | } 2397 | if ('proto_list' === r.type) { 2398 | if (p) { 2399 | A = Array(p.size()); 2400 | for (H = 0; H < p.size(); H++) A[H] = p.get(H); 2401 | p.delete(); 2402 | } else A = []; 2403 | d[m] = A; 2404 | v.g = 7; 2405 | break; 2406 | } 2407 | if (void 0 === p) { 2408 | v.g = 3; 2409 | break; 2410 | } 2411 | if ('float_list' === r.type) { 2412 | d[m] = p; 2413 | v.g = 7; 2414 | break; 2415 | } 2416 | if ('proto' === r.type) { 2417 | d[m] = p; 2418 | v.g = 7; 2419 | break; 2420 | } 2421 | if ('texture' !== r.type) 2422 | throw Error("Unknown output config type: '" + r.type + "'"); 2423 | n = a.u[m]; 2424 | n || ((n = new rc(a.h, a.G)), (a.u[m] = n)); 2425 | return F(v, sc(n, p, a.I), 13); 2426 | case 13: 2427 | (q = v.h), (d[m] = q); 2428 | case 7: 2429 | r.transform && d[m] && (d[m] = r.transform(d[m])); 2430 | v.g = 3; 2431 | break; 2432 | case 14: 2433 | t[w] = v.h; 2434 | case 3: 2435 | f = l.next(); 2436 | v.g = 2; 2437 | break; 2438 | case 4: 2439 | return v.return(d); 2440 | } 2441 | }); 2442 | } 2443 | function Hc(a, b, c) { 2444 | var d; 2445 | return I(function (e) { 2446 | return 'number' === typeof c || 2447 | c instanceof Uint8Array || 2448 | c instanceof a.h.Uint8BlobList 2449 | ? e.return(c) 2450 | : c instanceof a.h.Texture2dDataOut 2451 | ? ((d = a.u[b]), 2452 | d || ((d = new rc(a.h, a.G)), (a.u[b] = d)), 2453 | e.return(sc(d, c, a.I))) 2454 | : e.return(void 0); 2455 | }); 2456 | } 2457 | function Ec(a, b) { 2458 | for ( 2459 | var c = b.name || '$', 2460 | d = [].concat(ea(b.wants)), 2461 | e = new a.h.StringList(), 2462 | g = C(b.wants), 2463 | f = g.next(); 2464 | !f.done; 2465 | f = g.next() 2466 | ) 2467 | e.push_back(f.value); 2468 | g = a.h.PacketListener.implement({ 2469 | onResults: function (h) { 2470 | for (var k = {}, l = 0; l < b.wants.length; ++l) k[d[l]] = h.get(l); 2471 | var m = a.listeners[c]; 2472 | m && 2473 | (a.D = Gc(a, k, b.outs).then(function (r) { 2474 | r = m(r); 2475 | for (var p = 0; p < b.wants.length; ++p) { 2476 | var n = k[d[p]]; 2477 | 'object' === typeof n && 2478 | n.hasOwnProperty && 2479 | n.hasOwnProperty('delete') && 2480 | n.delete(); 2481 | } 2482 | r && (a.D = r); 2483 | })); 2484 | }, 2485 | }); 2486 | a.i.attachMultiListener(e, g); 2487 | e.delete(); 2488 | } 2489 | x.onResults = function (a, b) { 2490 | this.listeners[b || '$'] = a; 2491 | }; 2492 | J('Solution', Ac); 2493 | J('OptionType', { 2494 | BOOL: 0, 2495 | NUMBER: 1, 2496 | ma: 2, 2497 | 0: 'BOOL', 2498 | 1: 'NUMBER', 2499 | 2: 'STRING', 2500 | }); 2501 | function Ic(a) { 2502 | void 0 === a && (a = 0); 2503 | return 1 === a ? 'hand_landmark_full.tflite' : 'hand_landmark_lite.tflite'; 2504 | } 2505 | function Jc(a) { 2506 | var b = this; 2507 | a = a || {}; 2508 | this.g = new Ac({ 2509 | locateFile: a.locateFile, 2510 | files: function (c) { 2511 | return [ 2512 | { url: 'hands_solution_packed_assets_loader.js' }, 2513 | { simd: !1, url: 'hands_solution_wasm_bin.js' }, 2514 | { simd: !0, url: 'hands_solution_simd_wasm_bin.js' }, 2515 | { data: !0, url: Ic(c.modelComplexity) }, 2516 | ]; 2517 | }, 2518 | graph: { url: 'hands.binarypb' }, 2519 | inputs: { image: { type: 'video', stream: 'input_frames_gpu' } }, 2520 | listeners: [ 2521 | { 2522 | wants: [ 2523 | 'multi_hand_landmarks', 2524 | 'multi_hand_world_landmarks', 2525 | 'image_transformed', 2526 | 'multi_handedness', 2527 | ], 2528 | outs: { 2529 | image: 'image_transformed', 2530 | multiHandLandmarks: { 2531 | type: 'proto_list', 2532 | stream: 'multi_hand_landmarks', 2533 | transform: qc, 2534 | }, 2535 | multiHandWorldLandmarks: { 2536 | type: 'proto_list', 2537 | stream: 'multi_hand_world_landmarks', 2538 | transform: qc, 2539 | }, 2540 | multiHandedness: { 2541 | type: 'proto_list', 2542 | stream: 'multi_handedness', 2543 | transform: function (c) { 2544 | return c.map(function (d) { 2545 | return oc(Ub(d, dc, fc))[0]; 2546 | }); 2547 | }, 2548 | }, 2549 | }, 2550 | }, 2551 | ], 2552 | options: { 2553 | useCpuInference: { 2554 | type: 0, 2555 | graphOptionXref: { 2556 | calculatorType: 'InferenceCalculator', 2557 | fieldName: 'use_cpu_inference', 2558 | }, 2559 | default: 2560 | 'object' !== typeof window || void 0 === window.navigator 2561 | ? !1 2562 | : 'iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod' 2563 | .split(';') 2564 | .includes(navigator.platform) || 2565 | (navigator.userAgent.includes('Mac') && 2566 | 'ontouchend' in document), 2567 | }, 2568 | selfieMode: { 2569 | type: 0, 2570 | graphOptionXref: { 2571 | calculatorType: 'GlScalerCalculator', 2572 | calculatorIndex: 1, 2573 | fieldName: 'flip_horizontal', 2574 | }, 2575 | }, 2576 | maxNumHands: { 2577 | type: 1, 2578 | graphOptionXref: { 2579 | calculatorType: 'ConstantSidePacketCalculator', 2580 | calculatorName: 'ConstantSidePacketCalculator', 2581 | fieldName: 'int_value', 2582 | }, 2583 | }, 2584 | modelComplexity: { 2585 | type: 1, 2586 | graphOptionXref: { 2587 | calculatorType: 'ConstantSidePacketCalculator', 2588 | calculatorName: 'ConstantSidePacketCalculatorModelComplexity', 2589 | fieldName: 'int_value', 2590 | }, 2591 | onChange: function (c) { 2592 | var d, e, g; 2593 | return I(function (f) { 2594 | if (1 == f.g) 2595 | return ( 2596 | (d = Ic(c)), 2597 | (e = 'third_party/mediapipe/modules/hand_landmark/' + d), 2598 | F(f, Cc(b.g, d), 2) 2599 | ); 2600 | g = f.h; 2601 | b.g.overrideFile(e, g); 2602 | return f.return(!0); 2603 | }); 2604 | }, 2605 | }, 2606 | minDetectionConfidence: { 2607 | type: 1, 2608 | graphOptionXref: { 2609 | calculatorType: 'TensorsToDetectionsCalculator', 2610 | calculatorName: 2611 | 'handlandmarktrackinggpu__palmdetectiongpu__TensorsToDetectionsCalculator', 2612 | fieldName: 'min_score_thresh', 2613 | }, 2614 | }, 2615 | minTrackingConfidence: { 2616 | type: 1, 2617 | graphOptionXref: { 2618 | calculatorType: 'ThresholdingCalculator', 2619 | calculatorName: 2620 | 'handlandmarktrackinggpu__handlandmarkgpu__ThresholdingCalculator', 2621 | fieldName: 'threshold', 2622 | }, 2623 | }, 2624 | }, 2625 | }); 2626 | } 2627 | x = Jc.prototype; 2628 | x.close = function () { 2629 | this.g.close(); 2630 | return Promise.resolve(); 2631 | }; 2632 | x.onResults = function (a) { 2633 | this.g.onResults(a); 2634 | }; 2635 | x.initialize = function () { 2636 | var a = this; 2637 | return I(function (b) { 2638 | return F(b, a.g.initialize(), 0); 2639 | }); 2640 | }; 2641 | x.reset = function () { 2642 | this.g.reset(); 2643 | }; 2644 | x.send = function (a) { 2645 | var b = this; 2646 | return I(function (c) { 2647 | return F(c, b.g.send(a), 0); 2648 | }); 2649 | }; 2650 | x.setOptions = function (a) { 2651 | this.g.setOptions(a); 2652 | }; 2653 | J('Hands', Jc); 2654 | J('HAND_CONNECTIONS', [ 2655 | [0, 1], 2656 | [1, 2], 2657 | [2, 3], 2658 | [3, 4], 2659 | [0, 5], 2660 | [5, 6], 2661 | [6, 7], 2662 | [7, 8], 2663 | [5, 9], 2664 | [9, 10], 2665 | [10, 11], 2666 | [11, 12], 2667 | [9, 13], 2668 | [13, 14], 2669 | [14, 15], 2670 | [15, 16], 2671 | [13, 17], 2672 | [0, 17], 2673 | [17, 18], 2674 | [18, 19], 2675 | [19, 20], 2676 | ]); 2677 | J('VERSION', '0.4.1646424915'); 2678 | }.call(this)); 2679 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aashutoshrathi/word-wrap@^1.2.3": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" 8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== 9 | 10 | "@ampproject/remapping@^2.2.0": 11 | version "2.2.1" 12 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" 13 | integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== 14 | dependencies: 15 | "@jridgewell/gen-mapping" "^0.3.0" 16 | "@jridgewell/trace-mapping" "^0.3.9" 17 | 18 | "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": 19 | version "7.22.10" 20 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" 21 | integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== 22 | dependencies: 23 | "@babel/highlight" "^7.22.10" 24 | chalk "^2.4.2" 25 | 26 | "@babel/compat-data@^7.22.9": 27 | version "7.22.9" 28 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" 29 | integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== 30 | 31 | "@babel/core@^7.22.9": 32 | version "7.22.11" 33 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24" 34 | integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== 35 | dependencies: 36 | "@ampproject/remapping" "^2.2.0" 37 | "@babel/code-frame" "^7.22.10" 38 | "@babel/generator" "^7.22.10" 39 | "@babel/helper-compilation-targets" "^7.22.10" 40 | "@babel/helper-module-transforms" "^7.22.9" 41 | "@babel/helpers" "^7.22.11" 42 | "@babel/parser" "^7.22.11" 43 | "@babel/template" "^7.22.5" 44 | "@babel/traverse" "^7.22.11" 45 | "@babel/types" "^7.22.11" 46 | convert-source-map "^1.7.0" 47 | debug "^4.1.0" 48 | gensync "^1.0.0-beta.2" 49 | json5 "^2.2.3" 50 | semver "^6.3.1" 51 | 52 | "@babel/generator@^7.22.10": 53 | version "7.22.10" 54 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" 55 | integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== 56 | dependencies: 57 | "@babel/types" "^7.22.10" 58 | "@jridgewell/gen-mapping" "^0.3.2" 59 | "@jridgewell/trace-mapping" "^0.3.17" 60 | jsesc "^2.5.1" 61 | 62 | "@babel/helper-compilation-targets@^7.22.10": 63 | version "7.22.10" 64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" 65 | integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== 66 | dependencies: 67 | "@babel/compat-data" "^7.22.9" 68 | "@babel/helper-validator-option" "^7.22.5" 69 | browserslist "^4.21.9" 70 | lru-cache "^5.1.1" 71 | semver "^6.3.1" 72 | 73 | "@babel/helper-environment-visitor@^7.22.5": 74 | version "7.22.5" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" 76 | integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== 77 | 78 | "@babel/helper-function-name@^7.22.5": 79 | version "7.22.5" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" 81 | integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== 82 | dependencies: 83 | "@babel/template" "^7.22.5" 84 | "@babel/types" "^7.22.5" 85 | 86 | "@babel/helper-hoist-variables@^7.22.5": 87 | version "7.22.5" 88 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" 89 | integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== 90 | dependencies: 91 | "@babel/types" "^7.22.5" 92 | 93 | "@babel/helper-module-imports@^7.22.5": 94 | version "7.22.5" 95 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" 96 | integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== 97 | dependencies: 98 | "@babel/types" "^7.22.5" 99 | 100 | "@babel/helper-module-transforms@^7.22.9": 101 | version "7.22.9" 102 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" 103 | integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== 104 | dependencies: 105 | "@babel/helper-environment-visitor" "^7.22.5" 106 | "@babel/helper-module-imports" "^7.22.5" 107 | "@babel/helper-simple-access" "^7.22.5" 108 | "@babel/helper-split-export-declaration" "^7.22.6" 109 | "@babel/helper-validator-identifier" "^7.22.5" 110 | 111 | "@babel/helper-plugin-utils@^7.22.5": 112 | version "7.22.5" 113 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" 114 | integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== 115 | 116 | "@babel/helper-simple-access@^7.22.5": 117 | version "7.22.5" 118 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" 119 | integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== 120 | dependencies: 121 | "@babel/types" "^7.22.5" 122 | 123 | "@babel/helper-split-export-declaration@^7.22.6": 124 | version "7.22.6" 125 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" 126 | integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== 127 | dependencies: 128 | "@babel/types" "^7.22.5" 129 | 130 | "@babel/helper-string-parser@^7.22.5": 131 | version "7.22.5" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" 133 | integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== 134 | 135 | "@babel/helper-validator-identifier@^7.22.5": 136 | version "7.22.5" 137 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" 138 | integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== 139 | 140 | "@babel/helper-validator-option@^7.22.5": 141 | version "7.22.5" 142 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" 143 | integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== 144 | 145 | "@babel/helpers@^7.22.11": 146 | version "7.22.11" 147 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.11.tgz#b02f5d5f2d7abc21ab59eeed80de410ba70b056a" 148 | integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg== 149 | dependencies: 150 | "@babel/template" "^7.22.5" 151 | "@babel/traverse" "^7.22.11" 152 | "@babel/types" "^7.22.11" 153 | 154 | "@babel/highlight@^7.22.10": 155 | version "7.22.10" 156 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" 157 | integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== 158 | dependencies: 159 | "@babel/helper-validator-identifier" "^7.22.5" 160 | chalk "^2.4.2" 161 | js-tokens "^4.0.0" 162 | 163 | "@babel/parser@^7.22.11", "@babel/parser@^7.22.5": 164 | version "7.22.11" 165 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.11.tgz#becf8ee33aad2a35ed5607f521fe6e72a615f905" 166 | integrity sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g== 167 | 168 | "@babel/plugin-transform-react-jsx-self@^7.22.5": 169 | version "7.22.5" 170 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e" 171 | integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g== 172 | dependencies: 173 | "@babel/helper-plugin-utils" "^7.22.5" 174 | 175 | "@babel/plugin-transform-react-jsx-source@^7.22.5": 176 | version "7.22.5" 177 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c" 178 | integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w== 179 | dependencies: 180 | "@babel/helper-plugin-utils" "^7.22.5" 181 | 182 | "@babel/template@^7.22.5": 183 | version "7.22.5" 184 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" 185 | integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== 186 | dependencies: 187 | "@babel/code-frame" "^7.22.5" 188 | "@babel/parser" "^7.22.5" 189 | "@babel/types" "^7.22.5" 190 | 191 | "@babel/traverse@^7.22.11": 192 | version "7.22.11" 193 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.11.tgz#71ebb3af7a05ff97280b83f05f8865ac94b2027c" 194 | integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ== 195 | dependencies: 196 | "@babel/code-frame" "^7.22.10" 197 | "@babel/generator" "^7.22.10" 198 | "@babel/helper-environment-visitor" "^7.22.5" 199 | "@babel/helper-function-name" "^7.22.5" 200 | "@babel/helper-hoist-variables" "^7.22.5" 201 | "@babel/helper-split-export-declaration" "^7.22.6" 202 | "@babel/parser" "^7.22.11" 203 | "@babel/types" "^7.22.11" 204 | debug "^4.1.0" 205 | globals "^11.1.0" 206 | 207 | "@babel/types@^7.22.10", "@babel/types@^7.22.11", "@babel/types@^7.22.5": 208 | version "7.22.11" 209 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.11.tgz#0e65a6a1d4d9cbaa892b2213f6159485fe632ea2" 210 | integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg== 211 | dependencies: 212 | "@babel/helper-string-parser" "^7.22.5" 213 | "@babel/helper-validator-identifier" "^7.22.5" 214 | to-fast-properties "^2.0.0" 215 | 216 | "@esbuild/android-arm64@0.18.20": 217 | version "0.18.20" 218 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" 219 | integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== 220 | 221 | "@esbuild/android-arm@0.18.20": 222 | version "0.18.20" 223 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" 224 | integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== 225 | 226 | "@esbuild/android-x64@0.18.20": 227 | version "0.18.20" 228 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" 229 | integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== 230 | 231 | "@esbuild/darwin-arm64@0.18.20": 232 | version "0.18.20" 233 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" 234 | integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== 235 | 236 | "@esbuild/darwin-x64@0.18.20": 237 | version "0.18.20" 238 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" 239 | integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== 240 | 241 | "@esbuild/freebsd-arm64@0.18.20": 242 | version "0.18.20" 243 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" 244 | integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== 245 | 246 | "@esbuild/freebsd-x64@0.18.20": 247 | version "0.18.20" 248 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" 249 | integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== 250 | 251 | "@esbuild/linux-arm64@0.18.20": 252 | version "0.18.20" 253 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" 254 | integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== 255 | 256 | "@esbuild/linux-arm@0.18.20": 257 | version "0.18.20" 258 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" 259 | integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== 260 | 261 | "@esbuild/linux-ia32@0.18.20": 262 | version "0.18.20" 263 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" 264 | integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== 265 | 266 | "@esbuild/linux-loong64@0.18.20": 267 | version "0.18.20" 268 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" 269 | integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== 270 | 271 | "@esbuild/linux-mips64el@0.18.20": 272 | version "0.18.20" 273 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" 274 | integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== 275 | 276 | "@esbuild/linux-ppc64@0.18.20": 277 | version "0.18.20" 278 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" 279 | integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== 280 | 281 | "@esbuild/linux-riscv64@0.18.20": 282 | version "0.18.20" 283 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" 284 | integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== 285 | 286 | "@esbuild/linux-s390x@0.18.20": 287 | version "0.18.20" 288 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" 289 | integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== 290 | 291 | "@esbuild/linux-x64@0.18.20": 292 | version "0.18.20" 293 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" 294 | integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== 295 | 296 | "@esbuild/netbsd-x64@0.18.20": 297 | version "0.18.20" 298 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" 299 | integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== 300 | 301 | "@esbuild/openbsd-x64@0.18.20": 302 | version "0.18.20" 303 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" 304 | integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== 305 | 306 | "@esbuild/sunos-x64@0.18.20": 307 | version "0.18.20" 308 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" 309 | integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== 310 | 311 | "@esbuild/win32-arm64@0.18.20": 312 | version "0.18.20" 313 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" 314 | integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== 315 | 316 | "@esbuild/win32-ia32@0.18.20": 317 | version "0.18.20" 318 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" 319 | integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== 320 | 321 | "@esbuild/win32-x64@0.18.20": 322 | version "0.18.20" 323 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" 324 | integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== 325 | 326 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 327 | version "4.4.0" 328 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 329 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 330 | dependencies: 331 | eslint-visitor-keys "^3.3.0" 332 | 333 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": 334 | version "4.8.0" 335 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" 336 | integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== 337 | 338 | "@eslint/eslintrc@^2.1.2": 339 | version "2.1.2" 340 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" 341 | integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== 342 | dependencies: 343 | ajv "^6.12.4" 344 | debug "^4.3.2" 345 | espree "^9.6.0" 346 | globals "^13.19.0" 347 | ignore "^5.2.0" 348 | import-fresh "^3.2.1" 349 | js-yaml "^4.1.0" 350 | minimatch "^3.1.2" 351 | strip-json-comments "^3.1.1" 352 | 353 | "@eslint/js@8.48.0": 354 | version "8.48.0" 355 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" 356 | integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== 357 | 358 | "@humanwhocodes/config-array@^0.11.10": 359 | version "0.11.10" 360 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" 361 | integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== 362 | dependencies: 363 | "@humanwhocodes/object-schema" "^1.2.1" 364 | debug "^4.1.1" 365 | minimatch "^3.0.5" 366 | 367 | "@humanwhocodes/module-importer@^1.0.1": 368 | version "1.0.1" 369 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 370 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 371 | 372 | "@humanwhocodes/object-schema@^1.2.1": 373 | version "1.2.1" 374 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 375 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 376 | 377 | "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": 378 | version "0.3.3" 379 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" 380 | integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== 381 | dependencies: 382 | "@jridgewell/set-array" "^1.0.1" 383 | "@jridgewell/sourcemap-codec" "^1.4.10" 384 | "@jridgewell/trace-mapping" "^0.3.9" 385 | 386 | "@jridgewell/resolve-uri@^3.1.0": 387 | version "3.1.1" 388 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 389 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 390 | 391 | "@jridgewell/set-array@^1.0.1": 392 | version "1.1.2" 393 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 394 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 395 | 396 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 397 | version "1.4.15" 398 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 399 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 400 | 401 | "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": 402 | version "0.3.19" 403 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" 404 | integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== 405 | dependencies: 406 | "@jridgewell/resolve-uri" "^3.1.0" 407 | "@jridgewell/sourcemap-codec" "^1.4.14" 408 | 409 | "@mediapipe/camera_utils@^0.3.1640029074": 410 | version "0.3.1675466862" 411 | resolved "https://registry.yarnpkg.com/@mediapipe/camera_utils/-/camera_utils-0.3.1675466862.tgz#861051d4343325a7e838714fe72050df37c0cdd0" 412 | integrity sha512-siuXBoUxWo9WL0MeAxIxvxY04bvbtdNl7uCxoJxiAiRtNnCYrurr7Vl5VYQ94P7Sq0gVq6PxIDhWWeZ/pLnSzw== 413 | 414 | "@mediapipe/control_utils@^0.6.1629159505": 415 | version "0.6.1675466023" 416 | resolved "https://registry.yarnpkg.com/@mediapipe/control_utils/-/control_utils-0.6.1675466023.tgz#76c514b535db319da02f0dddb8f8b8222bb7a560" 417 | integrity sha512-CB+L71vUJJSqvULGsZGfqkEiqywoCB898MiM6qWGrk8t5El0HVmHrQbsh2Gx3/N/V2xlYzoU43Wwr2FEAIFHzg== 418 | 419 | "@mediapipe/drawing_utils@^0.3.1620248257": 420 | version "0.3.1675466124" 421 | resolved "https://registry.yarnpkg.com/@mediapipe/drawing_utils/-/drawing_utils-0.3.1675466124.tgz#40e9dd87ffaefc58aea7dac36a98cc917e0d90d0" 422 | integrity sha512-/IWIB/iYRMtiUKe3k7yGqvwseWHCOqzVpRDfMgZ6gv9z7EEimg6iZbRluoPbcNKHbYSxN5yOvYTzUYb8KVf22Q== 423 | 424 | "@mediapipe/hands@^0.4.1646424915": 425 | version "0.4.1675469240" 426 | resolved "https://registry.yarnpkg.com/@mediapipe/hands/-/hands-0.4.1675469240.tgz#f032b2f5deff5a69430693f94be45dd9854e803f" 427 | integrity sha512-GxoZvL1mmhJxFxjuyj7vnC++JIuInGznHBin5c7ZSq/RbcnGyfEcJrkM/bMu5K1Mz/2Ko+vEX6/+wewmEHPrHg== 428 | 429 | "@nodelib/fs.scandir@2.1.5": 430 | version "2.1.5" 431 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 432 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 433 | dependencies: 434 | "@nodelib/fs.stat" "2.0.5" 435 | run-parallel "^1.1.9" 436 | 437 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 438 | version "2.0.5" 439 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 440 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 441 | 442 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 443 | version "1.2.8" 444 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 445 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 446 | dependencies: 447 | "@nodelib/fs.scandir" "2.1.5" 448 | fastq "^1.6.0" 449 | 450 | "@techstark/opencv-js@^4.6.0-release.1": 451 | version "4.6.0-release.1" 452 | resolved "https://registry.yarnpkg.com/@techstark/opencv-js/-/opencv-js-4.6.0-release.1.tgz#27cf98f16aa827afdd3aff8e6b3f166fe18dcf67" 453 | integrity sha512-wRupCKclD7wceqdu4nEPyaOkTQNMtTMlmkSqroZH2LFxlIw/QTRFIGpGCYCNbPH7MtWngxFGPjQ6wcGnTBKnzw== 454 | dependencies: 455 | mirada "^0.0.15" 456 | 457 | "@tensorflow/tfjs-backend-cpu@3.21.0": 458 | version "3.21.0" 459 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.21.0.tgz#ee0274bf14627d08b81c4e229230da66dc9c3d92" 460 | integrity sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ== 461 | dependencies: 462 | "@types/seedrandom" "^2.4.28" 463 | seedrandom "^3.0.5" 464 | 465 | "@tensorflow/tfjs-backend-webgl@3.21.0": 466 | version "3.21.0" 467 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.21.0.tgz#357d70c2fbd741e1d026b0788cbf5bc7c651cca3" 468 | integrity sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ== 469 | dependencies: 470 | "@tensorflow/tfjs-backend-cpu" "3.21.0" 471 | "@types/offscreencanvas" "~2019.3.0" 472 | "@types/seedrandom" "^2.4.28" 473 | "@types/webgl-ext" "0.0.30" 474 | "@types/webgl2" "0.0.6" 475 | seedrandom "^3.0.5" 476 | 477 | "@tensorflow/tfjs-converter@3.21.0": 478 | version "3.21.0" 479 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz#a5872aa8b949dc01315fb7f7fea2df91a1f15799" 480 | integrity sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q== 481 | 482 | "@tensorflow/tfjs-core@3.21.0": 483 | version "3.21.0" 484 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz#379c3698afc8f66bc82f77c7e35c35910daf7e3b" 485 | integrity sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w== 486 | dependencies: 487 | "@types/long" "^4.0.1" 488 | "@types/offscreencanvas" "~2019.3.0" 489 | "@types/seedrandom" "^2.4.28" 490 | "@types/webgl-ext" "0.0.30" 491 | "@webgpu/types" "0.1.16" 492 | long "4.0.0" 493 | node-fetch "~2.6.1" 494 | seedrandom "^3.0.5" 495 | 496 | "@tensorflow/tfjs-data@3.21.0": 497 | version "3.21.0" 498 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-data/-/tfjs-data-3.21.0.tgz#56cf012f5a4b08e8ff1a42ace72f97925a2aef9d" 499 | integrity sha512-eFLfw2wIcFNxnP2Iv/SnVlihehzKMumk1b5Prcx1ixk/SbkCo5u0Lt7OVOWaEOKVqvB2sT+dJcTjAh6lrCC/QA== 500 | dependencies: 501 | "@types/node-fetch" "^2.1.2" 502 | node-fetch "~2.6.1" 503 | string_decoder "^1.3.0" 504 | 505 | "@tensorflow/tfjs-layers@3.21.0": 506 | version "3.21.0" 507 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-layers/-/tfjs-layers-3.21.0.tgz#7fff00662e86f132bcab67f079c8653c3b1580e7" 508 | integrity sha512-CMVXsraakXgnXEnqD9QbtResA7nvV7Jz20pGmjFIodcQkClgmFFhdCG5N+zlVRHEz7VKG2OyfhltZ0dBq/OAhA== 509 | 510 | "@tensorflow/tfjs@^3.21.0": 511 | version "3.21.0" 512 | resolved "https://registry.yarnpkg.com/@tensorflow/tfjs/-/tfjs-3.21.0.tgz#18abd201239178cb23ddd85a33f87af8eeacfc7f" 513 | integrity sha512-khcARd3/872llL/oF4ouR40qlT71mylU66PGT8kHP/GJ5YKj44sv8lDRjU7lOVlJK7jsJFWEsNVHI3eMc/GWNQ== 514 | dependencies: 515 | "@tensorflow/tfjs-backend-cpu" "3.21.0" 516 | "@tensorflow/tfjs-backend-webgl" "3.21.0" 517 | "@tensorflow/tfjs-converter" "3.21.0" 518 | "@tensorflow/tfjs-core" "3.21.0" 519 | "@tensorflow/tfjs-data" "3.21.0" 520 | "@tensorflow/tfjs-layers" "3.21.0" 521 | argparse "^1.0.10" 522 | chalk "^4.1.0" 523 | core-js "3" 524 | regenerator-runtime "^0.13.5" 525 | yargs "^16.0.3" 526 | 527 | "@types/json-schema@^7.0.12": 528 | version "7.0.12" 529 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" 530 | integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== 531 | 532 | "@types/long@^4.0.1": 533 | version "4.0.2" 534 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" 535 | integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== 536 | 537 | "@types/node-fetch@^2.1.2": 538 | version "2.6.4" 539 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" 540 | integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== 541 | dependencies: 542 | "@types/node" "*" 543 | form-data "^3.0.0" 544 | 545 | "@types/node@*": 546 | version "20.5.6" 547 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.6.tgz#5e9aaa86be03a09decafd61b128d6cec64a5fe40" 548 | integrity sha512-Gi5wRGPbbyOTX+4Y2iULQ27oUPrefaB0PxGQJnfyWN3kvEDGM3mIB5M/gQLmitZf7A9FmLeaqxD3L1CXpm3VKQ== 549 | 550 | "@types/offscreencanvas@~2019.3.0": 551 | version "2019.3.0" 552 | resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz#3336428ec7e9180cf4566dfea5da04eb586a6553" 553 | integrity sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q== 554 | 555 | "@types/prop-types@*": 556 | version "15.7.5" 557 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 558 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 559 | 560 | "@types/react-dom@^18.2.7": 561 | version "18.2.7" 562 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" 563 | integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== 564 | dependencies: 565 | "@types/react" "*" 566 | 567 | "@types/react@*", "@types/react@^18.2.15": 568 | version "18.2.21" 569 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.21.tgz#774c37fd01b522d0b91aed04811b58e4e0514ed9" 570 | integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== 571 | dependencies: 572 | "@types/prop-types" "*" 573 | "@types/scheduler" "*" 574 | csstype "^3.0.2" 575 | 576 | "@types/scheduler@*": 577 | version "0.16.3" 578 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" 579 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== 580 | 581 | "@types/seedrandom@^2.4.28": 582 | version "2.4.30" 583 | resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.30.tgz#d2efe425869b84163c2d56e779dddadb9372cbfa" 584 | integrity sha512-AnxLHewubLVzoF/A4qdxBGHCKifw8cY32iro3DQX9TPcetE95zBeVt3jnsvtvAUf1vwzMfwzp4t/L2yqPlnjkQ== 585 | 586 | "@types/semver@^7.5.0": 587 | version "7.5.0" 588 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" 589 | integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== 590 | 591 | "@types/webgl-ext@0.0.30": 592 | version "0.0.30" 593 | resolved "https://registry.yarnpkg.com/@types/webgl-ext/-/webgl-ext-0.0.30.tgz#0ce498c16a41a23d15289e0b844d945b25f0fb9d" 594 | integrity sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg== 595 | 596 | "@types/webgl2@0.0.6": 597 | version "0.0.6" 598 | resolved "https://registry.yarnpkg.com/@types/webgl2/-/webgl2-0.0.6.tgz#1ea2db791362bd8521548d664dbd3c5311cdf4b6" 599 | integrity sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ== 600 | 601 | "@typescript-eslint/eslint-plugin@^6.0.0": 602 | version "6.4.1" 603 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz#bc0c6f000134b53c304ad0bec4ee4753cd3e89d2" 604 | integrity sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw== 605 | dependencies: 606 | "@eslint-community/regexpp" "^4.5.1" 607 | "@typescript-eslint/scope-manager" "6.4.1" 608 | "@typescript-eslint/type-utils" "6.4.1" 609 | "@typescript-eslint/utils" "6.4.1" 610 | "@typescript-eslint/visitor-keys" "6.4.1" 611 | debug "^4.3.4" 612 | graphemer "^1.4.0" 613 | ignore "^5.2.4" 614 | natural-compare "^1.4.0" 615 | semver "^7.5.4" 616 | ts-api-utils "^1.0.1" 617 | 618 | "@typescript-eslint/parser@^6.0.0": 619 | version "6.4.1" 620 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.4.1.tgz#85ad550bf4ac4aa227504f1becb828f8e46c44e3" 621 | integrity sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg== 622 | dependencies: 623 | "@typescript-eslint/scope-manager" "6.4.1" 624 | "@typescript-eslint/types" "6.4.1" 625 | "@typescript-eslint/typescript-estree" "6.4.1" 626 | "@typescript-eslint/visitor-keys" "6.4.1" 627 | debug "^4.3.4" 628 | 629 | "@typescript-eslint/scope-manager@6.4.1": 630 | version "6.4.1" 631 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz#4b073a30be2dbe603e44e9ae0cff7e1d3ed19278" 632 | integrity sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A== 633 | dependencies: 634 | "@typescript-eslint/types" "6.4.1" 635 | "@typescript-eslint/visitor-keys" "6.4.1" 636 | 637 | "@typescript-eslint/type-utils@6.4.1": 638 | version "6.4.1" 639 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz#fa21cb13016c8d6f352fe9b2d6c9ab6edc2d1857" 640 | integrity sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA== 641 | dependencies: 642 | "@typescript-eslint/typescript-estree" "6.4.1" 643 | "@typescript-eslint/utils" "6.4.1" 644 | debug "^4.3.4" 645 | ts-api-utils "^1.0.1" 646 | 647 | "@typescript-eslint/types@6.4.1": 648 | version "6.4.1" 649 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.4.1.tgz#b2c61159f46dda210fed9f117f5d027f65bb5c3b" 650 | integrity sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg== 651 | 652 | "@typescript-eslint/typescript-estree@6.4.1": 653 | version "6.4.1" 654 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz#91ff88101c710adb0f70a317f2f65efa9441da45" 655 | integrity sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg== 656 | dependencies: 657 | "@typescript-eslint/types" "6.4.1" 658 | "@typescript-eslint/visitor-keys" "6.4.1" 659 | debug "^4.3.4" 660 | globby "^11.1.0" 661 | is-glob "^4.0.3" 662 | semver "^7.5.4" 663 | ts-api-utils "^1.0.1" 664 | 665 | "@typescript-eslint/utils@6.4.1": 666 | version "6.4.1" 667 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.4.1.tgz#81bf62ff0c3119a26c19fab683582e29450717bc" 668 | integrity sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw== 669 | dependencies: 670 | "@eslint-community/eslint-utils" "^4.4.0" 671 | "@types/json-schema" "^7.0.12" 672 | "@types/semver" "^7.5.0" 673 | "@typescript-eslint/scope-manager" "6.4.1" 674 | "@typescript-eslint/types" "6.4.1" 675 | "@typescript-eslint/typescript-estree" "6.4.1" 676 | semver "^7.5.4" 677 | 678 | "@typescript-eslint/visitor-keys@6.4.1": 679 | version "6.4.1" 680 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz#e3ccf7b8d42e625946ac5094ed92a405fb4115e0" 681 | integrity sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ== 682 | dependencies: 683 | "@typescript-eslint/types" "6.4.1" 684 | eslint-visitor-keys "^3.4.1" 685 | 686 | "@vitejs/plugin-react@^4.0.3": 687 | version "4.0.4" 688 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz#31c3f779dc534e045c4b134e7cf7b150af0a7646" 689 | integrity sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g== 690 | dependencies: 691 | "@babel/core" "^7.22.9" 692 | "@babel/plugin-transform-react-jsx-self" "^7.22.5" 693 | "@babel/plugin-transform-react-jsx-source" "^7.22.5" 694 | react-refresh "^0.14.0" 695 | 696 | "@webgpu/types@0.1.16": 697 | version "0.1.16" 698 | resolved "https://registry.yarnpkg.com/@webgpu/types/-/types-0.1.16.tgz#1f05497b95b7c013facf7035c8e21784645f5cc4" 699 | integrity sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A== 700 | 701 | acorn-jsx@^5.3.2: 702 | version "5.3.2" 703 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 704 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 705 | 706 | acorn@^8.9.0: 707 | version "8.10.0" 708 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" 709 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 710 | 711 | ajv@^6.12.4: 712 | version "6.12.6" 713 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 714 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 715 | dependencies: 716 | fast-deep-equal "^3.1.1" 717 | fast-json-stable-stringify "^2.0.0" 718 | json-schema-traverse "^0.4.1" 719 | uri-js "^4.2.2" 720 | 721 | ansi-regex@^5.0.1: 722 | version "5.0.1" 723 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 724 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 725 | 726 | ansi-styles@^3.2.1: 727 | version "3.2.1" 728 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 729 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 730 | dependencies: 731 | color-convert "^1.9.0" 732 | 733 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 734 | version "4.3.0" 735 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 736 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 737 | dependencies: 738 | color-convert "^2.0.1" 739 | 740 | argparse@^1.0.10: 741 | version "1.0.10" 742 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 743 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 744 | dependencies: 745 | sprintf-js "~1.0.2" 746 | 747 | argparse@^2.0.1: 748 | version "2.0.1" 749 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 750 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 751 | 752 | array-union@^2.1.0: 753 | version "2.1.0" 754 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 755 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 756 | 757 | asynckit@^0.4.0: 758 | version "0.4.0" 759 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 760 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 761 | 762 | balanced-match@^1.0.0: 763 | version "1.0.2" 764 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 765 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 766 | 767 | base64-js@^1.3.1: 768 | version "1.5.1" 769 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 770 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 771 | 772 | brace-expansion@^1.1.7: 773 | version "1.1.11" 774 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 775 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 776 | dependencies: 777 | balanced-match "^1.0.0" 778 | concat-map "0.0.1" 779 | 780 | braces@^3.0.2: 781 | version "3.0.2" 782 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 783 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 784 | dependencies: 785 | fill-range "^7.0.1" 786 | 787 | browserslist@^4.21.9: 788 | version "4.21.10" 789 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" 790 | integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== 791 | dependencies: 792 | caniuse-lite "^1.0.30001517" 793 | electron-to-chromium "^1.4.477" 794 | node-releases "^2.0.13" 795 | update-browserslist-db "^1.0.11" 796 | 797 | buffer@^5.4.3: 798 | version "5.7.1" 799 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 800 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 801 | dependencies: 802 | base64-js "^1.3.1" 803 | ieee754 "^1.1.13" 804 | 805 | callsites@^3.0.0: 806 | version "3.1.0" 807 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 808 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 809 | 810 | caniuse-lite@^1.0.30001517: 811 | version "1.0.30001523" 812 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001523.tgz#b838f70b1a98c556776b998fafb47d2b64146d4f" 813 | integrity sha512-I5q5cisATTPZ1mc588Z//pj/Ox80ERYDfR71YnvY7raS/NOk8xXlZcB0sF7JdqaV//kOaa6aus7lRfpdnt1eBA== 814 | 815 | chalk@^2.4.2: 816 | version "2.4.2" 817 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 818 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 819 | dependencies: 820 | ansi-styles "^3.2.1" 821 | escape-string-regexp "^1.0.5" 822 | supports-color "^5.3.0" 823 | 824 | chalk@^4.0.0, chalk@^4.1.0: 825 | version "4.1.2" 826 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 827 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 828 | dependencies: 829 | ansi-styles "^4.1.0" 830 | supports-color "^7.1.0" 831 | 832 | cliui@^7.0.2: 833 | version "7.0.4" 834 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 835 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 836 | dependencies: 837 | string-width "^4.2.0" 838 | strip-ansi "^6.0.0" 839 | wrap-ansi "^7.0.0" 840 | 841 | color-convert@^1.9.0: 842 | version "1.9.3" 843 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 844 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 845 | dependencies: 846 | color-name "1.1.3" 847 | 848 | color-convert@^2.0.1: 849 | version "2.0.1" 850 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 851 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 852 | dependencies: 853 | color-name "~1.1.4" 854 | 855 | color-name@1.1.3: 856 | version "1.1.3" 857 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 858 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 859 | 860 | color-name@~1.1.4: 861 | version "1.1.4" 862 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 863 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 864 | 865 | combined-stream@^1.0.8: 866 | version "1.0.8" 867 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 868 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 869 | dependencies: 870 | delayed-stream "~1.0.0" 871 | 872 | comlink@^4.3.1: 873 | version "4.4.1" 874 | resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981" 875 | integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q== 876 | 877 | concat-map@0.0.1: 878 | version "0.0.1" 879 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 880 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 881 | 882 | convert-source-map@^1.7.0: 883 | version "1.9.0" 884 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" 885 | integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== 886 | 887 | core-js@3: 888 | version "3.32.1" 889 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.1.tgz#a7d8736a3ed9dd05940c3c4ff32c591bb735be77" 890 | integrity sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ== 891 | 892 | cross-fetch@^3.0.4: 893 | version "3.1.8" 894 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" 895 | integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== 896 | dependencies: 897 | node-fetch "^2.6.12" 898 | 899 | cross-spawn@^7.0.2: 900 | version "7.0.3" 901 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 902 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 903 | dependencies: 904 | path-key "^3.1.0" 905 | shebang-command "^2.0.0" 906 | which "^2.0.1" 907 | 908 | csstype@^3.0.2: 909 | version "3.1.2" 910 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 911 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 912 | 913 | debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 914 | version "4.3.4" 915 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 916 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 917 | dependencies: 918 | ms "2.1.2" 919 | 920 | deep-is@^0.1.3: 921 | version "0.1.4" 922 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 923 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 924 | 925 | delayed-stream@~1.0.0: 926 | version "1.0.0" 927 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 928 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 929 | 930 | dir-glob@^3.0.1: 931 | version "3.0.1" 932 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 933 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 934 | dependencies: 935 | path-type "^4.0.0" 936 | 937 | doctrine@^3.0.0: 938 | version "3.0.0" 939 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 940 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 941 | dependencies: 942 | esutils "^2.0.2" 943 | 944 | electron-to-chromium@^1.4.477: 945 | version "1.4.503" 946 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.503.tgz#7bd43927ea9b4198697672d28d8fbd0da016a7a1" 947 | integrity sha512-LF2IQit4B0VrUHFeQkWhZm97KuJSGF2WJqq1InpY+ECpFRkXd8yTIaTtJxsO0OKDmiBYwWqcrNaXOurn2T2wiA== 948 | 949 | emoji-regex@^8.0.0: 950 | version "8.0.0" 951 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 952 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 953 | 954 | esbuild@^0.18.10: 955 | version "0.18.20" 956 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" 957 | integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== 958 | optionalDependencies: 959 | "@esbuild/android-arm" "0.18.20" 960 | "@esbuild/android-arm64" "0.18.20" 961 | "@esbuild/android-x64" "0.18.20" 962 | "@esbuild/darwin-arm64" "0.18.20" 963 | "@esbuild/darwin-x64" "0.18.20" 964 | "@esbuild/freebsd-arm64" "0.18.20" 965 | "@esbuild/freebsd-x64" "0.18.20" 966 | "@esbuild/linux-arm" "0.18.20" 967 | "@esbuild/linux-arm64" "0.18.20" 968 | "@esbuild/linux-ia32" "0.18.20" 969 | "@esbuild/linux-loong64" "0.18.20" 970 | "@esbuild/linux-mips64el" "0.18.20" 971 | "@esbuild/linux-ppc64" "0.18.20" 972 | "@esbuild/linux-riscv64" "0.18.20" 973 | "@esbuild/linux-s390x" "0.18.20" 974 | "@esbuild/linux-x64" "0.18.20" 975 | "@esbuild/netbsd-x64" "0.18.20" 976 | "@esbuild/openbsd-x64" "0.18.20" 977 | "@esbuild/sunos-x64" "0.18.20" 978 | "@esbuild/win32-arm64" "0.18.20" 979 | "@esbuild/win32-ia32" "0.18.20" 980 | "@esbuild/win32-x64" "0.18.20" 981 | 982 | escalade@^3.1.1: 983 | version "3.1.1" 984 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 985 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 986 | 987 | escape-string-regexp@^1.0.5: 988 | version "1.0.5" 989 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 990 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 991 | 992 | escape-string-regexp@^4.0.0: 993 | version "4.0.0" 994 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 995 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 996 | 997 | eslint-plugin-react-hooks@^4.6.0: 998 | version "4.6.0" 999 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" 1000 | integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== 1001 | 1002 | eslint-plugin-react-refresh@^0.4.3: 1003 | version "0.4.3" 1004 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz#59dae8c00a119f06ea16b1d3e6891df3775947c7" 1005 | integrity sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA== 1006 | 1007 | eslint-scope@^7.2.2: 1008 | version "7.2.2" 1009 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 1010 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 1011 | dependencies: 1012 | esrecurse "^4.3.0" 1013 | estraverse "^5.2.0" 1014 | 1015 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: 1016 | version "3.4.3" 1017 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 1018 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 1019 | 1020 | eslint@^8.45.0: 1021 | version "8.48.0" 1022 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" 1023 | integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== 1024 | dependencies: 1025 | "@eslint-community/eslint-utils" "^4.2.0" 1026 | "@eslint-community/regexpp" "^4.6.1" 1027 | "@eslint/eslintrc" "^2.1.2" 1028 | "@eslint/js" "8.48.0" 1029 | "@humanwhocodes/config-array" "^0.11.10" 1030 | "@humanwhocodes/module-importer" "^1.0.1" 1031 | "@nodelib/fs.walk" "^1.2.8" 1032 | ajv "^6.12.4" 1033 | chalk "^4.0.0" 1034 | cross-spawn "^7.0.2" 1035 | debug "^4.3.2" 1036 | doctrine "^3.0.0" 1037 | escape-string-regexp "^4.0.0" 1038 | eslint-scope "^7.2.2" 1039 | eslint-visitor-keys "^3.4.3" 1040 | espree "^9.6.1" 1041 | esquery "^1.4.2" 1042 | esutils "^2.0.2" 1043 | fast-deep-equal "^3.1.3" 1044 | file-entry-cache "^6.0.1" 1045 | find-up "^5.0.0" 1046 | glob-parent "^6.0.2" 1047 | globals "^13.19.0" 1048 | graphemer "^1.4.0" 1049 | ignore "^5.2.0" 1050 | imurmurhash "^0.1.4" 1051 | is-glob "^4.0.0" 1052 | is-path-inside "^3.0.3" 1053 | js-yaml "^4.1.0" 1054 | json-stable-stringify-without-jsonify "^1.0.1" 1055 | levn "^0.4.1" 1056 | lodash.merge "^4.6.2" 1057 | minimatch "^3.1.2" 1058 | natural-compare "^1.4.0" 1059 | optionator "^0.9.3" 1060 | strip-ansi "^6.0.1" 1061 | text-table "^0.2.0" 1062 | 1063 | espree@^9.6.0, espree@^9.6.1: 1064 | version "9.6.1" 1065 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 1066 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 1067 | dependencies: 1068 | acorn "^8.9.0" 1069 | acorn-jsx "^5.3.2" 1070 | eslint-visitor-keys "^3.4.1" 1071 | 1072 | esquery@^1.4.2: 1073 | version "1.5.0" 1074 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 1075 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 1076 | dependencies: 1077 | estraverse "^5.1.0" 1078 | 1079 | esrecurse@^4.3.0: 1080 | version "4.3.0" 1081 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1082 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1083 | dependencies: 1084 | estraverse "^5.2.0" 1085 | 1086 | estraverse@^5.1.0, estraverse@^5.2.0: 1087 | version "5.3.0" 1088 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1089 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1090 | 1091 | esutils@^2.0.2: 1092 | version "2.0.3" 1093 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1094 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1095 | 1096 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1097 | version "3.1.3" 1098 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1099 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1100 | 1101 | fast-glob@^3.2.9: 1102 | version "3.3.1" 1103 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" 1104 | integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== 1105 | dependencies: 1106 | "@nodelib/fs.stat" "^2.0.2" 1107 | "@nodelib/fs.walk" "^1.2.3" 1108 | glob-parent "^5.1.2" 1109 | merge2 "^1.3.0" 1110 | micromatch "^4.0.4" 1111 | 1112 | fast-json-stable-stringify@^2.0.0: 1113 | version "2.1.0" 1114 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1115 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1116 | 1117 | fast-levenshtein@^2.0.6: 1118 | version "2.0.6" 1119 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1120 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1121 | 1122 | fastq@^1.6.0: 1123 | version "1.15.0" 1124 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 1125 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 1126 | dependencies: 1127 | reusify "^1.0.4" 1128 | 1129 | file-entry-cache@^6.0.1: 1130 | version "6.0.1" 1131 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1132 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1133 | dependencies: 1134 | flat-cache "^3.0.4" 1135 | 1136 | file-type@^12.3.0: 1137 | version "12.4.2" 1138 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" 1139 | integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== 1140 | 1141 | fill-range@^7.0.1: 1142 | version "7.0.1" 1143 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1144 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1145 | dependencies: 1146 | to-regex-range "^5.0.1" 1147 | 1148 | find-up@^5.0.0: 1149 | version "5.0.0" 1150 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1151 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1152 | dependencies: 1153 | locate-path "^6.0.0" 1154 | path-exists "^4.0.0" 1155 | 1156 | flat-cache@^3.0.4: 1157 | version "3.1.0" 1158 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" 1159 | integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== 1160 | dependencies: 1161 | flatted "^3.2.7" 1162 | keyv "^4.5.3" 1163 | rimraf "^3.0.2" 1164 | 1165 | flatted@^3.2.7: 1166 | version "3.2.7" 1167 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 1168 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 1169 | 1170 | form-data@^3.0.0: 1171 | version "3.0.1" 1172 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1173 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1174 | dependencies: 1175 | asynckit "^0.4.0" 1176 | combined-stream "^1.0.8" 1177 | mime-types "^2.1.12" 1178 | 1179 | fs.realpath@^1.0.0: 1180 | version "1.0.0" 1181 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1182 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1183 | 1184 | fsevents@~2.3.2: 1185 | version "2.3.3" 1186 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 1187 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1188 | 1189 | gensync@^1.0.0-beta.2: 1190 | version "1.0.0-beta.2" 1191 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1192 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1193 | 1194 | get-caller-file@^2.0.5: 1195 | version "2.0.5" 1196 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1197 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1198 | 1199 | glob-parent@^5.1.2: 1200 | version "5.1.2" 1201 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1202 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1203 | dependencies: 1204 | is-glob "^4.0.1" 1205 | 1206 | glob-parent@^6.0.2: 1207 | version "6.0.2" 1208 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1209 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1210 | dependencies: 1211 | is-glob "^4.0.3" 1212 | 1213 | glob@^7.1.3: 1214 | version "7.2.3" 1215 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1216 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1217 | dependencies: 1218 | fs.realpath "^1.0.0" 1219 | inflight "^1.0.4" 1220 | inherits "2" 1221 | minimatch "^3.1.1" 1222 | once "^1.3.0" 1223 | path-is-absolute "^1.0.0" 1224 | 1225 | globals@^11.1.0: 1226 | version "11.12.0" 1227 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1228 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1229 | 1230 | globals@^13.19.0: 1231 | version "13.21.0" 1232 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" 1233 | integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== 1234 | dependencies: 1235 | type-fest "^0.20.2" 1236 | 1237 | globby@^11.1.0: 1238 | version "11.1.0" 1239 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 1240 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 1241 | dependencies: 1242 | array-union "^2.1.0" 1243 | dir-glob "^3.0.1" 1244 | fast-glob "^3.2.9" 1245 | ignore "^5.2.0" 1246 | merge2 "^1.4.1" 1247 | slash "^3.0.0" 1248 | 1249 | graphemer@^1.4.0: 1250 | version "1.4.0" 1251 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 1252 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 1253 | 1254 | has-flag@^3.0.0: 1255 | version "3.0.0" 1256 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1257 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1258 | 1259 | has-flag@^4.0.0: 1260 | version "4.0.0" 1261 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1262 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1263 | 1264 | ieee754@^1.1.13: 1265 | version "1.2.1" 1266 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1267 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1268 | 1269 | ignore@^5.2.0, ignore@^5.2.4: 1270 | version "5.2.4" 1271 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 1272 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 1273 | 1274 | import-fresh@^3.2.1: 1275 | version "3.3.0" 1276 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1277 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1278 | dependencies: 1279 | parent-module "^1.0.0" 1280 | resolve-from "^4.0.0" 1281 | 1282 | imurmurhash@^0.1.4: 1283 | version "0.1.4" 1284 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1285 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1286 | 1287 | inflight@^1.0.4: 1288 | version "1.0.6" 1289 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1290 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1291 | dependencies: 1292 | once "^1.3.0" 1293 | wrappy "1" 1294 | 1295 | inherits@2: 1296 | version "2.0.4" 1297 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1298 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1299 | 1300 | is-extglob@^2.1.1: 1301 | version "2.1.1" 1302 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1303 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1304 | 1305 | is-fullwidth-code-point@^3.0.0: 1306 | version "3.0.0" 1307 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1308 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1309 | 1310 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 1311 | version "4.0.3" 1312 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1313 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1314 | dependencies: 1315 | is-extglob "^2.1.1" 1316 | 1317 | is-number@^7.0.0: 1318 | version "7.0.0" 1319 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1320 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1321 | 1322 | is-path-inside@^3.0.3: 1323 | version "3.0.3" 1324 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1325 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 1326 | 1327 | isexe@^2.0.0: 1328 | version "2.0.0" 1329 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1330 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1331 | 1332 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 1333 | version "4.0.0" 1334 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1335 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1336 | 1337 | js-yaml@^4.1.0: 1338 | version "4.1.0" 1339 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1340 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1341 | dependencies: 1342 | argparse "^2.0.1" 1343 | 1344 | jsesc@^2.5.1: 1345 | version "2.5.2" 1346 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 1347 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 1348 | 1349 | json-buffer@3.0.1: 1350 | version "3.0.1" 1351 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1352 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1353 | 1354 | json-schema-traverse@^0.4.1: 1355 | version "0.4.1" 1356 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1357 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1358 | 1359 | json-stable-stringify-without-jsonify@^1.0.1: 1360 | version "1.0.1" 1361 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1362 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1363 | 1364 | json5@^2.2.3: 1365 | version "2.2.3" 1366 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1367 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1368 | 1369 | keyv@^4.5.3: 1370 | version "4.5.3" 1371 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" 1372 | integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== 1373 | dependencies: 1374 | json-buffer "3.0.1" 1375 | 1376 | levn@^0.4.1: 1377 | version "0.4.1" 1378 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1379 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1380 | dependencies: 1381 | prelude-ls "^1.2.1" 1382 | type-check "~0.4.0" 1383 | 1384 | locate-path@^6.0.0: 1385 | version "6.0.0" 1386 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1387 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1388 | dependencies: 1389 | p-locate "^5.0.0" 1390 | 1391 | lodash.merge@^4.6.2: 1392 | version "4.6.2" 1393 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1394 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1395 | 1396 | lodash@^4.17.21: 1397 | version "4.17.21" 1398 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1399 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1400 | 1401 | long@4.0.0: 1402 | version "4.0.0" 1403 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 1404 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 1405 | 1406 | loose-envify@^1.1.0: 1407 | version "1.4.0" 1408 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1409 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1410 | dependencies: 1411 | js-tokens "^3.0.0 || ^4.0.0" 1412 | 1413 | lru-cache@^5.1.1: 1414 | version "5.1.1" 1415 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1416 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1417 | dependencies: 1418 | yallist "^3.0.2" 1419 | 1420 | lru-cache@^6.0.0: 1421 | version "6.0.0" 1422 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1423 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1424 | dependencies: 1425 | yallist "^4.0.0" 1426 | 1427 | merge2@^1.3.0, merge2@^1.4.1: 1428 | version "1.4.1" 1429 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1430 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1431 | 1432 | micromatch@^4.0.4: 1433 | version "4.0.5" 1434 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1435 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1436 | dependencies: 1437 | braces "^3.0.2" 1438 | picomatch "^2.3.1" 1439 | 1440 | mime-db@1.52.0: 1441 | version "1.52.0" 1442 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1443 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1444 | 1445 | mime-types@^2.1.12: 1446 | version "2.1.35" 1447 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1448 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1449 | dependencies: 1450 | mime-db "1.52.0" 1451 | 1452 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 1453 | version "3.1.2" 1454 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1455 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1456 | dependencies: 1457 | brace-expansion "^1.1.7" 1458 | 1459 | mirada@^0.0.15: 1460 | version "0.0.15" 1461 | resolved "https://registry.yarnpkg.com/mirada/-/mirada-0.0.15.tgz#f5e98bc5d6ec7fafde1ceb27947147780884ee0a" 1462 | integrity sha512-mbm4c+wjBVcmUzHRLv/TfOAq+iy03D24KwGxx8H+NSXkD5EOZV9zFWbVxTvZCc9XwR0FIUhryU/kQm12SMSQ3g== 1463 | dependencies: 1464 | buffer "^5.4.3" 1465 | cross-fetch "^3.0.4" 1466 | file-type "^12.3.0" 1467 | misc-utils-of-mine-generic "^0.2.31" 1468 | 1469 | misc-utils-of-mine-generic@^0.2.31: 1470 | version "0.2.45" 1471 | resolved "https://registry.yarnpkg.com/misc-utils-of-mine-generic/-/misc-utils-of-mine-generic-0.2.45.tgz#db1b76db1ab5a04771b24173e38957182e9e292d" 1472 | integrity sha512-WsG2zYiui2cdEbHF2pXmJfnjHb4zL+cy+PaYcLgIpMju98hwX89VbjlvGIfamCfEodbQ0qjCEvD3ocgkCXfMOQ== 1473 | 1474 | ms@2.1.2: 1475 | version "2.1.2" 1476 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1477 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1478 | 1479 | nanoid@^3.3.6: 1480 | version "3.3.6" 1481 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 1482 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 1483 | 1484 | natural-compare@^1.4.0: 1485 | version "1.4.0" 1486 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1487 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1488 | 1489 | node-fetch@^2.6.12: 1490 | version "2.7.0" 1491 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 1492 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 1493 | dependencies: 1494 | whatwg-url "^5.0.0" 1495 | 1496 | node-fetch@~2.6.1: 1497 | version "2.6.13" 1498 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.13.tgz#a20acbbec73c2e09f9007de5cda17104122e0010" 1499 | integrity sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA== 1500 | dependencies: 1501 | whatwg-url "^5.0.0" 1502 | 1503 | node-releases@^2.0.13: 1504 | version "2.0.13" 1505 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" 1506 | integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== 1507 | 1508 | once@^1.3.0: 1509 | version "1.4.0" 1510 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1511 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1512 | dependencies: 1513 | wrappy "1" 1514 | 1515 | optionator@^0.9.3: 1516 | version "0.9.3" 1517 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" 1518 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== 1519 | dependencies: 1520 | "@aashutoshrathi/word-wrap" "^1.2.3" 1521 | deep-is "^0.1.3" 1522 | fast-levenshtein "^2.0.6" 1523 | levn "^0.4.1" 1524 | prelude-ls "^1.2.1" 1525 | type-check "^0.4.0" 1526 | 1527 | p-limit@^3.0.2: 1528 | version "3.1.0" 1529 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1530 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1531 | dependencies: 1532 | yocto-queue "^0.1.0" 1533 | 1534 | p-locate@^5.0.0: 1535 | version "5.0.0" 1536 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1537 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1538 | dependencies: 1539 | p-limit "^3.0.2" 1540 | 1541 | parent-module@^1.0.0: 1542 | version "1.0.1" 1543 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1544 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1545 | dependencies: 1546 | callsites "^3.0.0" 1547 | 1548 | path-exists@^4.0.0: 1549 | version "4.0.0" 1550 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1551 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1552 | 1553 | path-is-absolute@^1.0.0: 1554 | version "1.0.1" 1555 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1556 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1557 | 1558 | path-key@^3.1.0: 1559 | version "3.1.1" 1560 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1561 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1562 | 1563 | path-type@^4.0.0: 1564 | version "4.0.0" 1565 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1566 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1567 | 1568 | picocolors@^1.0.0: 1569 | version "1.0.0" 1570 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1571 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1572 | 1573 | picomatch@^2.3.1: 1574 | version "2.3.1" 1575 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1576 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1577 | 1578 | postcss@^8.4.27: 1579 | version "8.4.28" 1580 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" 1581 | integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== 1582 | dependencies: 1583 | nanoid "^3.3.6" 1584 | picocolors "^1.0.0" 1585 | source-map-js "^1.0.2" 1586 | 1587 | prelude-ls@^1.2.1: 1588 | version "1.2.1" 1589 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1590 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1591 | 1592 | punycode@^2.1.0: 1593 | version "2.3.0" 1594 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1595 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1596 | 1597 | queue-microtask@^1.2.2: 1598 | version "1.2.3" 1599 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1600 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1601 | 1602 | react-dom@^18.2.0: 1603 | version "18.2.0" 1604 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1605 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1606 | dependencies: 1607 | loose-envify "^1.1.0" 1608 | scheduler "^0.23.0" 1609 | 1610 | react-refresh@^0.14.0: 1611 | version "0.14.0" 1612 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" 1613 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== 1614 | 1615 | react@^18.2.0: 1616 | version "18.2.0" 1617 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1618 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1619 | dependencies: 1620 | loose-envify "^1.1.0" 1621 | 1622 | regenerator-runtime@^0.13.5: 1623 | version "0.13.11" 1624 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" 1625 | integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== 1626 | 1627 | require-directory@^2.1.1: 1628 | version "2.1.1" 1629 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1630 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1631 | 1632 | resolve-from@^4.0.0: 1633 | version "4.0.0" 1634 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1635 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1636 | 1637 | reusify@^1.0.4: 1638 | version "1.0.4" 1639 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1640 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1641 | 1642 | rimraf@^3.0.2: 1643 | version "3.0.2" 1644 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1645 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1646 | dependencies: 1647 | glob "^7.1.3" 1648 | 1649 | rollup@^3.27.1: 1650 | version "3.28.1" 1651 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" 1652 | integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== 1653 | optionalDependencies: 1654 | fsevents "~2.3.2" 1655 | 1656 | run-parallel@^1.1.9: 1657 | version "1.2.0" 1658 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1659 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1660 | dependencies: 1661 | queue-microtask "^1.2.2" 1662 | 1663 | safe-buffer@~5.2.0: 1664 | version "5.2.1" 1665 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1666 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1667 | 1668 | scheduler@^0.23.0: 1669 | version "0.23.0" 1670 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1671 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1672 | dependencies: 1673 | loose-envify "^1.1.0" 1674 | 1675 | seedrandom@^3.0.5: 1676 | version "3.0.5" 1677 | resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" 1678 | integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== 1679 | 1680 | semver@^6.3.1: 1681 | version "6.3.1" 1682 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1683 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1684 | 1685 | semver@^7.5.4: 1686 | version "7.5.4" 1687 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 1688 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 1689 | dependencies: 1690 | lru-cache "^6.0.0" 1691 | 1692 | shebang-command@^2.0.0: 1693 | version "2.0.0" 1694 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1695 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1696 | dependencies: 1697 | shebang-regex "^3.0.0" 1698 | 1699 | shebang-regex@^3.0.0: 1700 | version "3.0.0" 1701 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1702 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1703 | 1704 | slash@^3.0.0: 1705 | version "3.0.0" 1706 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1707 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1708 | 1709 | source-map-js@^1.0.2: 1710 | version "1.0.2" 1711 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1712 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1713 | 1714 | sprintf-js@~1.0.2: 1715 | version "1.0.3" 1716 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1717 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 1718 | 1719 | string-width@^4.1.0, string-width@^4.2.0: 1720 | version "4.2.3" 1721 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1722 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1723 | dependencies: 1724 | emoji-regex "^8.0.0" 1725 | is-fullwidth-code-point "^3.0.0" 1726 | strip-ansi "^6.0.1" 1727 | 1728 | string_decoder@^1.3.0: 1729 | version "1.3.0" 1730 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1731 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1732 | dependencies: 1733 | safe-buffer "~5.2.0" 1734 | 1735 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1736 | version "6.0.1" 1737 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1738 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1739 | dependencies: 1740 | ansi-regex "^5.0.1" 1741 | 1742 | strip-json-comments@^3.1.1: 1743 | version "3.1.1" 1744 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1745 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1746 | 1747 | supports-color@^5.3.0: 1748 | version "5.5.0" 1749 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1750 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1751 | dependencies: 1752 | has-flag "^3.0.0" 1753 | 1754 | supports-color@^7.1.0: 1755 | version "7.2.0" 1756 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1757 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1758 | dependencies: 1759 | has-flag "^4.0.0" 1760 | 1761 | text-table@^0.2.0: 1762 | version "0.2.0" 1763 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1764 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1765 | 1766 | to-fast-properties@^2.0.0: 1767 | version "2.0.0" 1768 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1769 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 1770 | 1771 | to-regex-range@^5.0.1: 1772 | version "5.0.1" 1773 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1774 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1775 | dependencies: 1776 | is-number "^7.0.0" 1777 | 1778 | tr46@~0.0.3: 1779 | version "0.0.3" 1780 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1781 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1782 | 1783 | ts-api-utils@^1.0.1: 1784 | version "1.0.2" 1785 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.2.tgz#7c094f753b6705ee4faee25c3c684ade52d66d99" 1786 | integrity sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ== 1787 | 1788 | type-check@^0.4.0, type-check@~0.4.0: 1789 | version "0.4.0" 1790 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1791 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1792 | dependencies: 1793 | prelude-ls "^1.2.1" 1794 | 1795 | type-fest@^0.20.2: 1796 | version "0.20.2" 1797 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1798 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1799 | 1800 | typescript@^5.0.2: 1801 | version "5.2.2" 1802 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" 1803 | integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== 1804 | 1805 | update-browserslist-db@^1.0.11: 1806 | version "1.0.11" 1807 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" 1808 | integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== 1809 | dependencies: 1810 | escalade "^3.1.1" 1811 | picocolors "^1.0.0" 1812 | 1813 | uri-js@^4.2.2: 1814 | version "4.4.1" 1815 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1816 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1817 | dependencies: 1818 | punycode "^2.1.0" 1819 | 1820 | vite@^4.4.5: 1821 | version "4.4.9" 1822 | resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" 1823 | integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== 1824 | dependencies: 1825 | esbuild "^0.18.10" 1826 | postcss "^8.4.27" 1827 | rollup "^3.27.1" 1828 | optionalDependencies: 1829 | fsevents "~2.3.2" 1830 | 1831 | webidl-conversions@^3.0.0: 1832 | version "3.0.1" 1833 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1834 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1835 | 1836 | whatwg-url@^5.0.0: 1837 | version "5.0.0" 1838 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1839 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1840 | dependencies: 1841 | tr46 "~0.0.3" 1842 | webidl-conversions "^3.0.0" 1843 | 1844 | which@^2.0.1: 1845 | version "2.0.2" 1846 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1847 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1848 | dependencies: 1849 | isexe "^2.0.0" 1850 | 1851 | wrap-ansi@^7.0.0: 1852 | version "7.0.0" 1853 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1854 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1855 | dependencies: 1856 | ansi-styles "^4.0.0" 1857 | string-width "^4.1.0" 1858 | strip-ansi "^6.0.0" 1859 | 1860 | wrappy@1: 1861 | version "1.0.2" 1862 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1863 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1864 | 1865 | y18n@^5.0.5: 1866 | version "5.0.8" 1867 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1868 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1869 | 1870 | yallist@^3.0.2: 1871 | version "3.1.1" 1872 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 1873 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 1874 | 1875 | yallist@^4.0.0: 1876 | version "4.0.0" 1877 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1878 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1879 | 1880 | yargs-parser@^20.2.2: 1881 | version "20.2.9" 1882 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1883 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1884 | 1885 | yargs@^16.0.3: 1886 | version "16.2.0" 1887 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1888 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1889 | dependencies: 1890 | cliui "^7.0.2" 1891 | escalade "^3.1.1" 1892 | get-caller-file "^2.0.5" 1893 | require-directory "^2.1.1" 1894 | string-width "^4.2.0" 1895 | y18n "^5.0.5" 1896 | yargs-parser "^20.2.2" 1897 | 1898 | yocto-queue@^0.1.0: 1899 | version "0.1.0" 1900 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1901 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1902 | --------------------------------------------------------------------------------