diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml new file mode 100644 index 000000000..8004dd762 --- /dev/null +++ b/.github/actions/bootstrap/action.yml @@ -0,0 +1,27 @@ +name: bootstrap +description: bootstrap rmf-web +inputs: + package: + description: string, target package to bootstrap + required: true + skip-build: + description: boolean, if true, skip the build step + required: false + default: "false" +runs: + using: composite + steps: + - uses: pnpm/action-setup@v2.2.2 + with: + version: 'latest' + - uses: actions/setup-node@v2 + with: + node-version: '16' + cache: 'pnpm' + - name: Install dependencies + run: pnpm install -w --filter ${{ inputs.package }}... + shell: bash + - name: Build + if: '!${{ inputs.skip-build }}' + run: pnpm run --filter ${{ inputs.package }}... build + shell: bash diff --git a/.github/workflows/api-client.yml b/.github/workflows/api-client.yml index e92aa4e06..d08438463 100644 --- a/.github/workflows/api-client.yml +++ b/.github/workflows/api-client.yml @@ -7,33 +7,21 @@ on: push: branches: - main -env: - CI: true jobs: unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Unit Tests + runs-on: ubuntu-22.04 defaults: run: shell: bash working-directory: packages/api-client steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - name: bootstrap - run: | - pip3 install pipenv - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh api-client - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: api-client - name: lint - run: npm run lint + run: pnpm run lint - name: test - run: npm run test + run: pnpm test diff --git a/.github/workflows/api-server.yml b/.github/workflows/api-server.yml index 9a3dbee12..f4e2850ad 100644 --- a/.github/workflows/api-server.yml +++ b/.github/workflows/api-server.yml @@ -11,12 +11,8 @@ env: CI: true jobs: tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Tests + runs-on: ubuntu-22.04 container: image: ghcr.io/${{ github.repository }}/e2e credentials: @@ -28,22 +24,18 @@ jobs: working-directory: packages/api-server steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' + - name: setup python + run: apt update && apt install -y python3-venv python-is-python3 - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - . /rmf_demos_ws/install/setup.bash - scripts/bootstrap.sh api-server - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: api-server - name: tests run: | . /rmf_demos_ws/install/setup.bash - npm run lint - npm run test:cov - python3 -m pipenv run python -m coverage xml + pnpm run lint + pnpm run test:cov + ../../.venv/pipenv run python -m coverage xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: diff --git a/.github/workflows/dashboard-e2e.yml b/.github/workflows/dashboard-e2e.yml index 376415703..9f0168264 100644 --- a/.github/workflows/dashboard-e2e.yml +++ b/.github/workflows/dashboard-e2e.yml @@ -8,12 +8,8 @@ env: CI: true jobs: dashboard-e2e: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Dashboard e2e (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Dashboard e2e + runs-on: ubuntu-22.04 container: image: ghcr.io/${{ github.repository }}/e2e credentials: @@ -30,19 +26,17 @@ jobs: BROWSERSTACK_BUILD: ${{ github.head_ref }}:${{ github.event.number }} steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' + - name: setup python + run: apt update && apt install -y python3-venv python-is-python3 - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh rmf-dashboard-e2e - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: rmf-dashboard-e2e + skip-build: true - name: test run: | . /rmf_demos_ws/install/setup.bash - npm test + pnpm test - name: upload artifacts uses: actions/upload-artifact@v2 if: always() diff --git a/.github/workflows/dashboard.yml b/.github/workflows/dashboard.yml index 3d33bfef7..53e8dd6af 100644 --- a/.github/workflows/dashboard.yml +++ b/.github/workflows/dashboard.yml @@ -15,12 +15,8 @@ env: CI: true jobs: unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Unit Tests + runs-on: ubuntu-22.04 container: image: ghcr.io/${{ github.repository }}/e2e credentials: @@ -32,18 +28,15 @@ jobs: working-directory: packages/dashboard steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' + - name: setup python + run: apt update && apt install -y python3-venv python-is-python3 - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - . /rmf_demos_ws/install/setup.bash - scripts/bootstrap.sh rmf-dashboard - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: rmf-dashboard + skip-build: true - name: unit test - run: . /rmf_demos_ws/install/setup.bash && npm run test:coverage + run: . /rmf_demos_ws/install/setup.bash && pnpm run test:coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 78c755a55..eeb26754e 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -6,7 +6,7 @@ on: jobs: build-docker-images: name: Push Docker images to GitHub Packages - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v2 - name: Push e2e image to GitHub Packages @@ -24,8 +24,8 @@ jobs: npm: ['latest'] fail-fast: false needs: build-docker-images - name: Dashboard e2e (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Dashboard e2e + runs-on: ubuntu-22.04 container: image: ghcr.io/${{ github.repository }}/e2e options: --privileged --ipc=host @@ -39,59 +39,18 @@ jobs: BROWSERSTACK_BUILD: ${{ github.head_ref }}:${{ github.event.number }} steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh rmf-dashboard-e2e - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: rmf-dashboard-e2e + skip-build: true - name: test run: | . /rmf_demos_ws/install/setup.bash - npm test + pnpm test - name: upload artifacts uses: actions/upload-artifact@v2 if: always() with: name: artifacts path: packages/dashboard-e2e/artifacts - reporting-e2e: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - needs: build-docker-images - name: Reporting e2e (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest - container: - image: ghcr.io/${{ github.repository }}/e2e - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - options: --privileged --ipc=host - defaults: - run: - shell: bash - working-directory: packages/reporting-e2e - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh reporting-e2e - working-directory: . - - name: test - run: npm test - - name: upload artifacts - uses: actions/upload-artifact@v2 - if: always() - with: - name: artifacts - path: packages/reporting-e2e/artifacts diff --git a/.github/workflows/react-components.yml b/.github/workflows/react-components.yml index 42f70b3a0..113de202c 100644 --- a/.github/workflows/react-components.yml +++ b/.github/workflows/react-components.yml @@ -12,12 +12,8 @@ env: CI: true jobs: unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Unit Tests + runs-on: ubuntu-22.04 defaults: run: shell: bash @@ -28,23 +24,16 @@ jobs: BROWSERSTACK_BUILD: ${{ github.head_ref }}:${{ github.event.number }} steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - name: bootstrap - run: | - pip3 install pipenv - npm config set unsafe-perm - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh react-components - working-directory: . - - name: test build storybook - run: npm run build:storybook + uses: ./.github/actions/bootstrap + with: + package: react-components + - name: build storybook + run: pnpm run build:storybook - name: lint - run: npm run lint + run: pnpm run lint - name: test - run: npm run test:coverage + run: pnpm run test:coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: diff --git a/.github/workflows/reporting-e2e.yml b/.github/workflows/reporting-e2e.yml deleted file mode 100644 index a3804641c..000000000 --- a/.github/workflows/reporting-e2e.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Reporting End-to-End -on: - pull_request: - push: - branches: - - main -env: - CI: true -jobs: - reporting-e2e: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Reporting e2e (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest - container: - image: ghcr.io/${{ github.repository }}/e2e - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - options: --privileged --ipc=host - defaults: - run: - shell: bash - working-directory: packages/reporting-e2e - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - - name: bootstrap - run: | - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh reporting-e2e - working-directory: . - - name: test - run: npm test - - name: upload artifacts - uses: actions/upload-artifact@v2 - if: always() - with: - name: artifacts - path: packages/reporting-e2e/artifacts diff --git a/.github/workflows/reporting-server.yml b/.github/workflows/reporting-server.yml deleted file mode 100644 index 3e91b3e56..000000000 --- a/.github/workflows/reporting-server.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: reporting-server -on: - pull_request: - paths: - - '.github/workflows/reporting-server.yml' - - 'packages/reporting-server/**' - push: - branches: - - main -env: - CI: true -jobs: - tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest - container: - image: ghcr.io/${{ github.repository }}/e2e - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - defaults: - run: - shell: bash - working-directory: packages/reporting-server - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - - name: bootstrap - run: | - . /rmf_demos_ws/install/setup.bash - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh reporting-server - working-directory: . - - name: tests - run: | - . /rmf_demos_ws/install/setup.bash - npm run lint - npm run test:cov - python3 -m pipenv run python -m coverage xml - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - flags: reporting-server diff --git a/.github/workflows/reporting.yml b/.github/workflows/reporting.yml deleted file mode 100644 index f925d3427..000000000 --- a/.github/workflows/reporting.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: reporting -on: - pull_request: - paths: - - '.github/workflows/reporting.yml' - - 'packages/reporting/**' - - 'packages/react-components/**' - - 'packages/rmf-auth/**' - - 'packages/rmf-models/**' - push: - branches: - - main -env: - CI: true -jobs: - unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest - container: - image: ghcr.io/${{ github.repository }}/e2e - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - defaults: - run: - shell: bash - working-directory: packages/reporting - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - - name: bootstrap - run: | - . /rmf_demos_ws/install/setup.bash - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh reporting - working-directory: . - - name: build - run: npm run build:storybook && npm run build - - name: unit test - run: npm run test:coverage - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v1 - with: - flags: reporting diff --git a/.github/workflows/rmf-auth.yml b/.github/workflows/rmf-auth.yml index ae80c67f6..02c8eb915 100644 --- a/.github/workflows/rmf-auth.yml +++ b/.github/workflows/rmf-auth.yml @@ -11,35 +11,22 @@ env: CI: true jobs: unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Unit Tests + runs-on: ubuntu-22.04 defaults: run: shell: bash working-directory: packages/rmf-auth steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' - name: bootstrap - run: | - pip3 install pipenv - npm config set unsafe-perm - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh rmf-auth - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: rmf-auth - name: lint - run: npm run lint - - name: build - run: npm run build + run: pnpm run lint - name: unit test - run: npm run test:coverage + run: pnpm run test:coverage - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: diff --git a/.github/workflows/ros-translator.yml b/.github/workflows/ros-translator.yml index 6ffa619bb..111eaa0f7 100644 --- a/.github/workflows/ros-translator.yml +++ b/.github/workflows/ros-translator.yml @@ -11,32 +11,21 @@ env: CI: true jobs: unit-tests: - strategy: - matrix: - npm: ['latest'] - fail-fast: false - name: Unit Tests (npm ${{ matrix.npm }}) - runs-on: ubuntu-latest + name: Unit Tests + runs-on: ubuntu-22.04 container: - image: ros:foxy + image: ros:humble-ros-base defaults: run: shell: bash working-directory: packages/ros-translator steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: '14' - cache: 'npm' + - name: setup python + run: apt update && apt install -y python3-venv python-is-python3 - name: bootstrap - run: | - . /opt/ros/foxy/setup.bash - apt update && apt install -y python3-pip - pip3 install pipenv - npm config set unsafe-perm - npm install -g npm@${{ matrix.npm }} - scripts/bootstrap.sh ros-translator - working-directory: . + uses: ./.github/actions/bootstrap + with: + package: ros-translator - name: test - run: . /opt/ros/foxy/setup.bash && npm test + run: . /opt/ros/humble/setup.bash && pnpm test diff --git a/.gitignore b/.gitignore index f28a0ec27..90da69302 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules/ coverage/ +dist/ npm-debug.log __pycache__/ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 000000000..58b1861cc --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm exec lint-staged diff --git a/.npmrc b/.npmrc index b20cafea1..65c2fc6e2 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,2 @@ -# pipenv can be INCREDIBLY slow, this lets user know what it is still running. -foreground-scripts = true - # make npm error out if version is not supported engine-strict = true diff --git a/.pnpm-debug.log b/.pnpm-debug.log new file mode 100644 index 000000000..73c498c88 --- /dev/null +++ b/.pnpm-debug.log @@ -0,0 +1,2305 @@ +{ + "0 debug pnpm:scope": { + "selected": 9, + "total": 9, + "workspacePrefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web" + }, + "1 debug pnpm:package-manifest": { + "initial": { + "name": "api-server", + "version": "0.0.0", + "description": "dummy package", + "private": true, + "scripts": { + "prepack": "../../.venv/bin/pipenv run python setup.py bdist_wheel", + "restart": "RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "start": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "start:psql": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=psql_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "test": "../../.venv/bin/pipenv run python scripts/test.py", + "test:cov": "../../.venv/bin/pipenv run python -m coverage run scripts/test.py", + "test:report": "../../.venv/bin/pipenv run python -m coverage html && xdg-open htmlcov/index.html", + "lint": "../../.venv/bin/pipenv run pyright && ../../.venv/bin/pipenv run pylint api_server --ignore=ros_pydantic,rmf_api" + }, + "devDependencies": { + "pipenv-install": "workspace:*" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/api-server" + }, + "2 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-models", + "version": "0.0.1", + "description": "RMF models generated from ROS messages", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build" + }, + "repository": { + "type": "git", + "url": "https://github.com/open-rmf" + }, + "author": "Teo Koon Peng ", + "license": "Apache-2.0", + "devDependencies": { + "@types/jasmine": "^3.8.2", + "@types/node": "^14.14.35", + "jasmine": "^3.6.6", + "json-schema-to-typescript": "^10.1.4", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + }, + "files": [ + "dist/**" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/rmf-models" + }, + "3 debug pnpm:package-manifest": { + "initial": { + "name": "api-client", + "version": "0.0.1", + "description": "", + "main": "./dist/lib/index.js", + "scripts": { + "build": "tsc --build", + "clean": "tsc --build --clean", + "prepack": "pnpm run clean && pnpm run --filter {.}... build && pnpm run lint", + "lint": "eslint --max-warnings 0 --ext ts,tsx lib", + "test": "jasmine" + }, + "author": "koonpeng@openrobotics.org", + "license": "Apache-2.0", + "dependencies": { + "@types/debug": "^4.1.5", + "debug": "^4.2.0", + "rmf-models": "workspace:*", + "socket.io-client": "^3.1.3" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "@types/jasmine": "^3.8.2", + "axios": "^0.21.1", + "eslint": "^7.26.0", + "jasmine": "^3.6.6", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + }, + "peerDependencies": { + "axios": "^0.21.1" + }, + "files": [ + "dist/", + "openapi/schema/" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/api-client" + }, + "4 debug pnpm:package-manifest": { + "initial": { + "name": "ros-translator", + "version": "0.0.0", + "private": true, + "description": "dummy package", + "main": "index.js", + "scripts": { + "test": ". ../../.venv/bin/activate && ./test.sh" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/jasmine": "^3.8.2", + "jasmine": "^3.6.6", + "pipenv-install": "workspace:*", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/ros-translator" + }, + "5 debug pnpm:package-manifest": { + "initial": { + "name": "react-components", + "version": "0.0.1", + "description": "", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "tsc --build --watch", + "clean": "tsc --build --clean", + "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm run test", + "start": "pnpm run --filter {.}^... build && start-storybook -p 6006 -s test-data", + "test": "karma start karma.conf.js", + "test:coverage": "karma start karma.conf.js --coverage" + }, + "author": "koonpeng@openrobotics.org", + "license": "Apache-2.0", + "dependencies": { + "@date-io/core": "^2.11.0", + "@date-io/date-fns": "^2.11.0", + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@mui/icons-material": "^5.8.3", + "@mui/lab": "5.0.0-alpha.86", + "@mui/styles": "^5.8.3", + "@mui/x-data-grid": "^5.12.1", + "@mui/x-date-pickers": "5.0.0-alpha.6", + "@types/crc": "^3.4.0", + "@types/rbush": "^3.0.0", + "@types/react-grid-layout": "^1.3.2", + "@types/react-leaflet": "^2.5.2", + "@types/shallowequal": "^1.1.1", + "api-client": "workspace:*", + "clsx": "^1.1.1", + "crc": "^3.8.0", + "date-fns": "^2.21.3", + "debug": "^4.2.0", + "eventemitter3": "^4.0.7", + "node-vibrant": "^3.1.6", + "rbush": "^3.0.1", + "react-customizable-progressbar": "^1.0.3", + "react-grid-layout": "^1.3.4", + "react-leaflet": "^2.7.0", + "react-virtualized-auto-sizer": "^1.0.6", + "react-window": "^1.8.6", + "rmf-models": "workspace:*", + "shallowequal": "^1.1.0" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@fontsource/roboto": "^4.3.0", + "@jsdevtools/coverage-istanbul-loader": "^3.0.5", + "@mui/material": "^5.8.3", + "@mui/system": "^5.8.3", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/debug": "^4.1.5", + "@types/jasmine": "^3.8.2", + "@types/leaflet": "^1.5.17", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "@types/react-virtualized-auto-sizer": "^1.0.1", + "@types/react-window": "^1.8.5", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "concurrently": "^5.3.0", + "css-loader": "^5", + "date-fns": "^2.21.3", + "eslint": "^7.26.0", + "eslint-plugin-react": "^7.21.4", + "eslint-plugin-react-hooks": "^4.1.2", + "file-loader": "^6.2.0", + "jasmine": "^3.6.6", + "karma": "^6.3.20", + "karma-browserstack-launcher": "^1.6.0", + "karma-chrome-launcher": "^3.1.0", + "karma-coverage": "^2.2.0", + "karma-jasmine": "^4.0.1", + "karma-source-map-support": "^1.4.0", + "karma-webpack": "^4.0.2", + "leaflet": "^1.7.1", + "process": "0.11.10", + "puppeteer": "*", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-leaflet": "^2.7.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", + "style-loader": "^2", + "ts-loader": "^8.1.0", + "typescript": "~4.4.4", + "webpack": "^4.46.0", + "webpack-cli": "^4.8.0" + }, + "peerDependencies": { + "@fontsource/roboto": "^4.3.0", + "@mui/material": "^5.8.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/react-components" + }, + "6 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-auth", + "version": "0.0.1", + "description": "Auth layer to be used on web UI services", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "pnpm run build -- --watch", + "clean": "tsc --build --clean", + "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm test", + "start": "start-storybook -p 6006 -s test-data", + "test": "jest --watch", + "test:coverage": "jest --coverage" + }, + "keywords": [ + "auth", + "rmf" + ], + "author": "matiasbavera@gmail.com", + "license": "Apache-2.0", + "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@fontsource/roboto": "^4.3.0", + "@mui/icons-material": "^5.8.3", + "@mui/lab": "5.0.0-alpha.86", + "api-client": "workspace:*", + "eventemitter3": "^4.0.7", + "keycloak-js": "^11.0.2" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@mui/material": "^5.8.3", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/debug": "^4.1.5", + "@types/history": "^4.7.11", + "@types/jest": "^26.0.13", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "concurrently": "^5.3.0", + "eslint": "^7.26.0", + "eslint-plugin-react": "^7.21.4", + "eslint-plugin-react-hooks": "^4.1.2", + "history": "^4.10.1", + "jest": "^26.5.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", + "ts-jest": "^26.4.1", + "ts-node": "^9.1.1", + "typescript": "~4.4.4", + "webpack": "^4" + }, + "peerDependencies": { + "@mui/material": "^5.8.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0" + }, + "files": [ + "lib/" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/rmf-auth" + }, + "7 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-dashboard", + "version": "0.0.1", + "private": true, + "scripts": { + "analyze": "source-map-explorer 'build/static/js/*.js'", + "start": "pnpm run --filter {.}^... build && concurrently npm:start:rmf-server npm:start:react", + "start:sim": "concurrently npm:start:rmf-server npm:start:rmf npm:start:react", + "start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml pnpm run start:sim", + "start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml pnpm run start:sim", + "start:react": "react-scripts start", + "start:rmf": "node scripts/start-rmf.js", + "start:rmf-server": "RMF_SERVER_USE_SIM_TIME=true npm --prefix ../api-server start", + "start:rmf-server:psql": "RMF_SERVER_USE_SIM_TIME=true npm run --prefix ../api-server start:psql", + "build": "react-scripts build", + "test": "react-scripts test", + "test:coverage": "pnpm test -- --coverage --watchAll=false", + "test:e2e": "cd e2e && npm test", + "test:e2e:dev": "cd e2e && pnpm run test:dev", + "eject": "react-scripts eject", + "setup": "node ./scripts/setup/setup.js", + "storybook": "start-storybook -p 9009 -s public -s src/stories/static", + "build:storybook": "build-storybook -s public -s src/stories/static" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "dependencies": { + "@fontsource/roboto": "^4.3.0", + "@fortawesome/fontawesome-svg-core": "^1.2.30", + "@fortawesome/free-solid-svg-icons": "^5.14.0", + "@fortawesome/react-fontawesome": "^0.1.11", + "@mui/icons-material": "^5.8.3", + "@mui/material": "^5.8.3", + "@mui/system": "^5.8.3", + "@types/debug": "^4.1.5", + "@types/leaflet": "^1.5.17", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", + "@types/react-leaflet": "^2.5.2", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "ajv": "^8.10.0", + "api-client": "workspace:*", + "axios": "^0.21.1", + "date-fns": "^2.21.3", + "debug": "^4.2.0", + "eventemitter3": "^4.0.7", + "keycloak-js": "^11.0.2", + "leaflet": "^1.7.1", + "node-vibrant": "^3.1.6", + "react": "^17.0.2", + "react-components": "workspace:*", + "react-customizable-progressbar": "^1.0.3", + "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", + "react-leaflet": "^2.7.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "rmf-auth": "file:../rmf-auth", + "rmf-models": "file:../rmf-models", + "rxjs": "^7.5.5" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/node-logger": "^6.5.9", + "@storybook/preset-create-react-app": "^3.2.0", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/jest": "^26.0.13", + "api-server": "file:../api-server", + "canvas": "^2.6.1", + "chalk": "^4.1.0", + "concurrently": "^5.3.0", + "inquirer": "^8.1.2", + "react-refresh": "^0.9", + "react-scripts": "^4.0.3", + "require-from-string": "^2.0.2", + "source-map-explorer": "^2.5.2", + "styled-components": "^4.4.1", + "ts-node": "^9.1.1", + "typescript": "~4.4.4", + "webpack": "^4" + }, + "jest": { + "collectCoverageFrom": [ + "src/**/*.{js,jsx,ts,tsx}", + "!src/index.tsx", + "!src/serviceWorker.ts", + "!src/app-config.ts", + "!src/managers/**", + "!src/components/rmf-app/**", + "!**/stories/**", + "!**/tests/**" + ] + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/dashboard" + }, + "8 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-dashboard-e2e", + "description": "", + "main": "index.js", + "directories": { + "test": "tests" + }, + "scripts": { + "start": "node scripts/start.js", + "start:rmf-server": "npm --prefix ../api-server start", + "test": "node scripts/test-e2e.js", + "test:dev": "E2E_DASHBOARD_URL=http://localhost:3000 RMF_LAUNCH_MODE=none wdio" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@types/mocha": "^9.0.0", + "@wdio/browserstack-service": "7.11.1", + "@wdio/cli": "7.11.1", + "@wdio/local-runner": "7.11.1", + "@wdio/mocha-framework": "7.11.1", + "@wdio/spec-reporter": "7.10.1", + "concurrently": "^5.3.0", + "rmf-dashboard": "file:../dashboard", + "serve": "^11.3.2", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/dashboard-e2e" + }, + "9 debug pnpm:package-manifest": { + "initial": { + "name": "root", + "private": true, + "engines": { + "node": ">=16", + "pnpm": ">=7.5.0", + "npm": ">=99" + }, + "scripts": { + "prepare": "husky install" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "eslint": "^7.32.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "husky": "^8.0.1", + "lint-staged": "^10.5.4", + "prettier": "^2.7.1", + "pyright": "^1.1.257", + "typescript": "~4.4.4" + }, + "lint-staged": { + "**/*.{js,jsx,ts,tsx,css,scss}": [ + "prettier --write" + ], + "**/*.py": [ + "../../.venv/bin/pipenv run isort", + "../../.venv/bin/pipenv run black" + ] + }, + "overrides": { + "react-error-overlay": "6.0.9" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web" + }, + "10 debug pnpm:context": { + "currentLockfileExists": false, + "storeDir": "/home/koonpeng/ws-osrf/.pnpm-store/v3", + "virtualStoreDir": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/node_modules/.pnpm" + }, + "11 debug pnpm:stage": { + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web", + "stage": "resolution_started" + }, + "12 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "13 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/node/14.18.21", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "@types/node", + "rawSpec": "^14.14.35" + } + }, + "14 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "15 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/json-schema-to-typescript/10.1.5", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "json-schema-to-typescript", + "rawSpec": "^10.1.4" + } + }, + "16 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "17 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "18 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "19 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "20 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/api-client", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "21 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/axios/0.21.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "axios", + "rawSpec": "^0.21.1" + } + }, + "22 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "23 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "24 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/api-client", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "25 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "26 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/api-client", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "27 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "28 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/socket.io-client/3.1.3", + "wanted": { + "dependentId": "packages/api-client", + "name": "socket.io-client", + "rawSpec": "^3.1.3" + } + }, + "29 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "30 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "31 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "32 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "33 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "34 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "35 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/3.0.5", + "wanted": { + "dependentId": "packages/react-components", + "name": "@jsdevtools/coverage-istanbul-loader", + "rawSpec": "^3.0.5" + } + }, + "36 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "37 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/system/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/system", + "rawSpec": "^5.8.3" + } + }, + "38 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "39 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "40 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "41 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "42 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "43 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "44 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "45 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "46 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "47 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "48 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/leaflet/1.7.11", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/leaflet", + "rawSpec": "^1.5.17" + } + }, + "49 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "50 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "51 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-grid-layout/1.3.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-grid-layout", + "rawSpec": "^1.3.2" + } + }, + "52 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "53 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "54 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-virtualized-auto-sizer/1.0.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-virtualized-auto-sizer", + "rawSpec": "^1.0.1" + } + }, + "55 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-window/1.8.5", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-window", + "rawSpec": "^1.8.5" + } + }, + "56 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "57 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "58 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "59 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/css-loader/5.2.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "css-loader", + "rawSpec": "^5" + } + }, + "60 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/date-fns/2.28.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "date-fns", + "rawSpec": "^2.21.3" + } + }, + "61 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "62 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint-plugin-react", + "rawSpec": "^7.21.4" + } + }, + "63 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.1.2" + } + }, + "64 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/file-loader/6.2.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "file-loader", + "rawSpec": "^6.2.0" + } + }, + "65 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "66 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma/6.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma", + "rawSpec": "^6.3.20" + } + }, + "67 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-browserstack-launcher/1.6.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-browserstack-launcher", + "rawSpec": "^1.6.0" + } + }, + "68 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-chrome-launcher/3.1.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-chrome-launcher", + "rawSpec": "^3.1.0" + } + }, + "69 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-coverage/2.2.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-coverage", + "rawSpec": "^2.2.0" + } + }, + "70 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-jasmine/4.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-jasmine", + "rawSpec": "^4.0.1" + } + }, + "71 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-source-map-support/1.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-source-map-support", + "rawSpec": "^1.4.0" + } + }, + "72 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-webpack/4.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-webpack", + "rawSpec": "^4.0.2" + } + }, + "73 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/leaflet/1.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "leaflet", + "rawSpec": "^1.7.1" + } + }, + "74 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/process/0.11.10", + "wanted": { + "dependentId": "packages/react-components", + "name": "process", + "rawSpec": "0.11.10" + } + }, + "75 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/puppeteer/15.3.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "puppeteer", + "rawSpec": "*" + } + }, + "76 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "77 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "78 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-leaflet/2.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-leaflet", + "rawSpec": "^2.7.0" + } + }, + "79 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "80 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "81 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "82 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/style-loader/2.0.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "style-loader", + "rawSpec": "^2" + } + }, + "83 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-loader/8.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "ts-loader", + "rawSpec": "^8.1.0" + } + }, + "84 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "85 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "webpack", + "rawSpec": "^4.46.0" + } + }, + "86 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack-cli/4.10.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "webpack-cli", + "rawSpec": "^4.8.0" + } + }, + "87 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@date-io/core/2.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@date-io/core", + "rawSpec": "^2.11.0" + } + }, + "88 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@date-io/date-fns/2.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@date-io/date-fns", + "rawSpec": "^2.11.0" + } + }, + "89 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/react/11.9.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@emotion/react", + "rawSpec": "^11.9.3" + } + }, + "90 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/styled/11.9.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@emotion/styled", + "rawSpec": "^11.9.3" + } + }, + "91 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "92 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/lab/5.0.0-alpha.86", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/lab", + "rawSpec": "5.0.0-alpha.86" + } + }, + "93 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/styles/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/styles", + "rawSpec": "^5.8.3" + } + }, + "94 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/x-data-grid/5.12.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/x-data-grid", + "rawSpec": "^5.12.1" + } + }, + "95 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/x-date-pickers/5.0.0-alpha.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/x-date-pickers", + "rawSpec": "5.0.0-alpha.6" + } + }, + "96 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/crc/3.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/crc", + "rawSpec": "^3.4.0" + } + }, + "97 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/rbush/3.0.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/rbush", + "rawSpec": "^3.0.0" + } + }, + "98 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-leaflet/2.8.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-leaflet", + "rawSpec": "^2.5.2" + } + }, + "99 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/shallowequal/1.1.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/shallowequal", + "rawSpec": "^1.1.1" + } + }, + "100 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/clsx/1.2.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "clsx", + "rawSpec": "^1.1.1" + } + }, + "101 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/crc/3.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "crc", + "rawSpec": "^3.8.0" + } + }, + "102 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "103 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "104 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/node-vibrant/3.1.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "node-vibrant", + "rawSpec": "^3.1.6" + } + }, + "105 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/rbush/3.0.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "rbush", + "rawSpec": "^3.0.1" + } + }, + "106 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-customizable-progressbar/1.0.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-customizable-progressbar", + "rawSpec": "^1.0.3" + } + }, + "107 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-grid-layout/1.3.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-grid-layout", + "rawSpec": "^1.3.4" + } + }, + "108 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-virtualized-auto-sizer/1.0.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-virtualized-auto-sizer", + "rawSpec": "^1.0.6" + } + }, + "109 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-window/1.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-window", + "rawSpec": "^1.8.6" + } + }, + "110 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/shallowequal/1.1.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "shallowequal", + "rawSpec": "^1.1.0" + } + }, + "111 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "112 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "113 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "114 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "115 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "116 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "117 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "118 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/jest-dom/5.16.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/jest-dom", + "rawSpec": "^5.11.4" + } + }, + "119 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "120 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "121 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "122 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "123 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/history/4.7.11", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/history", + "rawSpec": "^4.7.11" + } + }, + "124 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jest/26.0.24", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/jest", + "rawSpec": "^26.0.13" + } + }, + "125 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "126 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "127 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "128 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "129 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "130 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "131 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint-plugin-react", + "rawSpec": "^7.21.4" + } + }, + "132 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.1.2" + } + }, + "133 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/history/4.10.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "history", + "rawSpec": "^4.10.1" + } + }, + "134 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jest/26.6.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "jest", + "rawSpec": "^26.5.0" + } + }, + "135 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "136 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "137 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "138 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "139 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "140 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-jest/26.5.6", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "ts-jest", + "rawSpec": "^26.4.1" + } + }, + "141 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "142 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "143 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "webpack", + "rawSpec": "^4" + } + }, + "144 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/react/11.9.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@emotion/react", + "rawSpec": "^11.9.3" + } + }, + "145 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/styled/11.9.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@emotion/styled", + "rawSpec": "^11.9.3" + } + }, + "146 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "147 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "148 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/lab/5.0.0-alpha.86", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/lab", + "rawSpec": "5.0.0-alpha.86" + } + }, + "149 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "150 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/keycloak-js/11.0.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "keycloak-js", + "rawSpec": "^11.0.2" + } + }, + "151 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "152 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "153 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "154 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "155 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/node-logger/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/node-logger", + "rawSpec": "^6.5.9" + } + }, + "156 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/preset-create-react-app/3.2.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/preset-create-react-app", + "rawSpec": "^3.2.0" + } + }, + "157 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "158 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "159 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/jest-dom/5.16.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/jest-dom", + "rawSpec": "^5.11.4" + } + }, + "160 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "161 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "162 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "163 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jest/26.0.24", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/jest", + "rawSpec": "^26.0.13" + } + }, + "164 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/canvas/2.9.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "canvas", + "rawSpec": "^2.6.1" + } + }, + "165 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/chalk/4.1.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "chalk", + "rawSpec": "^4.1.0" + } + }, + "166 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "167 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/inquirer/8.2.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "inquirer", + "rawSpec": "^8.1.2" + } + }, + "168 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-refresh/0.9.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-refresh", + "rawSpec": "^0.9" + } + }, + "169 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-scripts/4.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-scripts", + "rawSpec": "^4.0.3" + } + }, + "170 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "171 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/source-map-explorer/2.5.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "source-map-explorer", + "rawSpec": "^2.5.2" + } + }, + "172 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/styled-components/4.4.1", + "wanted": { + "dependentId": "packages/dashboard", + "name": "styled-components", + "rawSpec": "^4.4.1" + } + }, + "173 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/dashboard", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "174 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "175 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "webpack", + "rawSpec": "^4" + } + }, + "176 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "177 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/fontawesome-svg-core/1.2.36", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/fontawesome-svg-core", + "rawSpec": "^1.2.30" + } + }, + "178 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/free-solid-svg-icons/5.15.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/free-solid-svg-icons", + "rawSpec": "^5.14.0" + } + }, + "179 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/react-fontawesome/0.1.19", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/react-fontawesome", + "rawSpec": "^0.1.11" + } + }, + "180 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "181 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "182 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/system/5.8.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/system", + "rawSpec": "^5.8.3" + } + }, + "183 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "184 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/leaflet/1.7.11", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/leaflet", + "rawSpec": "^1.5.17" + } + }, + "185 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "186 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "187 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-grid-layout/1.3.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-grid-layout", + "rawSpec": "^1.3.2" + } + }, + "188 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-leaflet/2.8.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-leaflet", + "rawSpec": "^2.5.2" + } + }, + "189 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "190 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "191 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ajv/8.11.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "ajv", + "rawSpec": "^8.10.0" + } + }, + "192 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/axios/0.21.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "axios", + "rawSpec": "^0.21.1" + } + }, + "193 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/date-fns/2.28.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "date-fns", + "rawSpec": "^2.21.3" + } + }, + "194 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "195 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "196 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/keycloak-js/11.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "keycloak-js", + "rawSpec": "^11.0.2" + } + }, + "197 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/leaflet/1.8.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "leaflet", + "rawSpec": "^1.7.1" + } + }, + "198 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/node-vibrant/3.1.6", + "wanted": { + "dependentId": "packages/dashboard", + "name": "node-vibrant", + "rawSpec": "^3.1.6" + } + }, + "199 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "200 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-customizable-progressbar/1.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-customizable-progressbar", + "rawSpec": "^1.0.3" + } + }, + "201 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "202 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-grid-layout/1.3.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-grid-layout", + "rawSpec": "^1.3.4" + } + }, + "203 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-leaflet/2.8.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-leaflet", + "rawSpec": "^2.7.0" + } + }, + "204 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "205 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "206 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/rxjs/7.5.5", + "wanted": { + "dependentId": "packages/dashboard", + "name": "rxjs", + "rawSpec": "^7.5.5" + } + }, + "207 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "208 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/mocha/9.1.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@types/mocha", + "rawSpec": "^9.0.0" + } + }, + "209 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/browserstack-service/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/browserstack-service", + "rawSpec": "7.11.1" + } + }, + "210 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/cli/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/cli", + "rawSpec": "7.11.1" + } + }, + "211 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/local-runner/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/local-runner", + "rawSpec": "7.11.1" + } + }, + "212 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/mocha-framework/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/mocha-framework", + "rawSpec": "7.11.1" + } + }, + "213 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/spec-reporter/7.10.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/spec-reporter", + "rawSpec": "7.10.1" + } + }, + "214 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "215 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/serve/11.3.2", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "serve", + "rawSpec": "^11.3.2" + } + }, + "216 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "217 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "218 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": ".", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "219 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": ".", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "220 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": ".", + "name": "eslint", + "rawSpec": "^7.32.0" + } + }, + "221 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": ".", + "name": "eslint-plugin-react", + "rawSpec": "^7.30.1" + } + }, + "222 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": ".", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.6.0" + } + }, + "223 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/husky/8.0.1", + "wanted": { + "dependentId": ".", + "name": "husky", + "rawSpec": "^8.0.1" + } + }, + "224 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/lint-staged/10.5.4", + "wanted": { + "dependentId": ".", + "name": "lint-staged", + "rawSpec": "^10.5.4" + } + }, + "225 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/prettier/2.7.1", + "wanted": { + "dependentId": ".", + "name": "prettier", + "rawSpec": "^2.7.1" + } + }, + "226 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/pyright/1.1.257", + "wanted": { + "dependentId": ".", + "name": "pyright", + "rawSpec": "^1.1.257" + } + }, + "227 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": ".", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "228 debug pnpm:_dependency_resolved": { + "resolution": "link:../rmf-models", + "wanted": { + "dependentId": "packages/api-client", + "name": "rmf-models", + "rawSpec": "workspace:*" + } + }, + "229 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/react-components", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "230 debug pnpm:_dependency_resolved": { + "resolution": "link:../rmf-models", + "wanted": { + "dependentId": "packages/react-components", + "name": "rmf-models", + "rawSpec": "workspace:*" + } + }, + "231 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "232 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/dashboard", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "233 debug pnpm:_dependency_resolved": { + "resolution": "link:../react-components", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-components", + "rawSpec": "workspace:*" + } + }, + "234 error pnpm": { + "code": "ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE", + "pkgsStack": [], + "err": { + "name": "pnpm", + "message": "In packages/api-server: No matching version found for pipenv-install@* inside the workspace", + "code": "ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE", + "stack": "pnpm: In packages/api-server: No matching version found for pipenv-install@* inside the workspace\n at tryResolveFromWorkspace (/snapshot/dist/pnpm.cjs)\n at resolveNpm (/snapshot/dist/pnpm.cjs)\n at Object.resolve (/snapshot/dist/pnpm.cjs)\n at /snapshot/dist/pnpm.cjs\n at run (/snapshot/dist/pnpm.cjs)\n at PQueue._tryToStartAnother (/snapshot/dist/pnpm.cjs)\n at /snapshot/dist/pnpm.cjs\n at new Promise ()\n at PQueue.add (/snapshot/dist/pnpm.cjs)\n at resolveAndFetch (/snapshot/dist/pnpm.cjs)" + } + } +} \ No newline at end of file diff --git a/Pipfile b/Pipfile index 45d6bcee9..db156120c 100644 --- a/Pipfile +++ b/Pipfile @@ -4,20 +4,19 @@ verify_ssl = true name = "pypi" [dev-packages] -black = "==21.12b0" +pipenv = "==2022.9.8" +black = "==22.6.0" isort = "~=5.8" pylint = "==2.10.2" coverage = "~=5.5" # api-server api-server = {editable = true, path = "./packages/api-server"} -requests = "~=2.25" asyncpg = "~=0.25.0" -numpy = "~=1.23.1" +datamodel-code-generator = "==0.11.19" +requests = "~=2.25" websocket-client = "~=1.2.3" -# reporting-server -reporting-server = {editable = true, path = "./packages/reporting-server"} # ros-translator ros-translator = {editable = true, path = "./packages/ros-translator"} [requires] -python_version = "3.8" +python_version = "3.10" diff --git a/Pipfile.lock b/Pipfile.lock index 17ae49198..5179f3cf6 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "f9cbd766b56afdd8ff5cda7fe2e4e9c3f896dc3a878e7dd807f8debe919905d1" + "sha256": "6dfc81dcab6a8f9980236a4fbae1fb95bb83a35010f219e4b50a349510bbbcb7" }, "pipfile-spec": 6, "requires": { - "python_version": "3.8" + "python_version": "3.10" }, "sources": [ { @@ -19,10 +19,11 @@ "develop": { "aiofiles": { "hashes": [ - "sha256:bd3019af67f83b739f8e4053c6c0512a7f545b9a8d91aaeab55e6e0f9d123c27", - "sha256:e0281b157d3d5d59d803e3f4557dcc9a3dff28a4dd4829a9ff478adae50ca092" + "sha256:7a973fc22b29e9962d0897805ace5856e6a566ab1f0c8e5c91ff6c866519c937", + "sha256:8334f23235248a3b2e83b2c3a78a22674f39969b96397126cc93664d9a901e59" ], - "version": "==0.6.0" + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==0.8.0" }, "aiosqlite": { "hashes": [ @@ -44,6 +45,14 @@ "editable": true, "path": "./packages/api-server" }, + "argcomplete": { + "hashes": [ + "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20", + "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e" + ], + "markers": "python_version >= '3.6'", + "version": "==2.0.0" + }, "astroid": { "hashes": [ "sha256:3b680ce0419b8a771aba6190139a3998d14b413852506d99aff8dc2bf65ee67c", @@ -52,6 +61,46 @@ "markers": "python_version ~= '3.6'", "version": "==2.7.3" }, + "asyncpg": { + "hashes": [ + "sha256:0a61fb196ce4dae2f2fa26eb20a778db21bbee484d2e798cb3cc988de13bdd1b", + "sha256:18d49e2d93a7139a2fdbd113e320cc47075049997268a61bfbe0dde680c55471", + "sha256:191fe6341385b7fdea7dbdcf47fd6db3fd198827dcc1f2b228476d13c05a03c6", + "sha256:1a70783f6ffa34cc7dd2de20a873181414a34fd35a4a208a1f1a7f9f695e4ec4", + "sha256:2633331cbc8429030b4f20f712f8d0fbba57fa8555ee9b2f45f981b81328b256", + "sha256:2bc197fc4aca2fd24f60241057998124012469d2e414aed3f992579db0c88e3a", + "sha256:4327f691b1bdb222df27841938b3e04c14068166b3a97491bec2cb982f49f03e", + "sha256:43cde84e996a3afe75f325a68300093425c2f47d340c0fc8912765cf24a1c095", + "sha256:52fab7f1b2c29e187dd8781fce896249500cf055b63471ad66332e537e9b5f7e", + "sha256:56d88d7ef4341412cd9c68efba323a4519c916979ba91b95d4c08799d2ff0c09", + "sha256:5e4105f57ad1e8fbc8b1e535d8fcefa6ce6c71081228f08680c6dea24384ff0e", + "sha256:63f8e6a69733b285497c2855464a34de657f2cccd25aeaeeb5071872e9382540", + "sha256:649e2966d98cc48d0646d9a4e29abecd8b59d38d55c256d5c857f6b27b7407ac", + "sha256:6f8f5fc975246eda83da8031a14004b9197f510c41511018e7b1bedde6968e92", + "sha256:72a1e12ea0cf7c1e02794b697e3ca967b2360eaa2ce5d4bfdd8604ec2d6b774b", + "sha256:739bbd7f89a2b2f6bc44cb8bf967dab12c5bc714fcbe96e68d512be45ecdf962", + "sha256:863d36eba4a7caa853fd7d83fad5fd5306f050cc2fe6e54fbe10cdb30420e5e9", + "sha256:a738f1b2876f30d710d3dc1e7858160a0afe1603ba16bf5f391f5316eb0ed855", + "sha256:a84d30e6f850bac0876990bcd207362778e2208df0bee8be8da9f1558255e634", + "sha256:acb311722352152936e58a8ee3c5b8e791b24e84cd7d777c414ff05b3530ca68", + "sha256:beaecc52ad39614f6ca2e48c3ca15d56e24a2c15cbfdcb764a4320cc45f02fd5", + "sha256:bf5e3408a14a17d480f36ebaf0401a12ff6ae5457fdf45e4e2775c51cc9517d3", + "sha256:bf6dc9b55b9113f39eaa2057337ce3f9ef7de99a053b8a16360395ce588925cd", + "sha256:ddb4c3263a8d63dcde3d2c4ac1c25206bfeb31fa83bd70fd539e10f87739dee4", + "sha256:f55918ded7b85723a5eaeb34e86e7b9280d4474be67df853ab5a7fa0cc7c6bf2", + "sha256:fe471ccd915b739ca65e2e4dbd92a11b44a5b37f2e38f70827a1c147dafe0fa8" + ], + "index": "pypi", + "version": "==0.25.0" + }, + "attrs": { + "hashes": [ + "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6", + "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c" + ], + "markers": "python_version >= '3.5'", + "version": "==22.1.0" + }, "bidict": { "hashes": [ "sha256:415126d23a0c81e1a8c584a8fb1f6905ea090c772571803aeee0a2242e8e7ba0", @@ -62,90 +111,133 @@ }, "black": { "hashes": [ - "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3", - "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f" + "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90", + "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c", + "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78", + "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4", + "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee", + "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e", + "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e", + "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6", + "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9", + "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c", + "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256", + "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f", + "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2", + "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c", + "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b", + "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807", + "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf", + "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def", + "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad", + "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d", + "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849", + "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69", + "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666" ], "index": "pypi", - "version": "==21.12b0" + "version": "==22.6.0" }, "certifi": { "hashes": [ - "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7", - "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a" + "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d", + "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412" ], "markers": "python_version >= '3.6'", - "version": "==2022.5.18.1" + "version": "==2022.6.15" }, "cffi": { "hashes": [ - "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3", - "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2", - "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636", - "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20", - "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728", - "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27", - "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66", - "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443", - "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0", - "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7", - "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39", - "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605", - "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a", - "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37", - "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029", - "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139", - "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc", - "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df", - "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14", - "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880", - "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2", - "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a", - "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e", - "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474", - "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024", - "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8", - "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0", - "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e", - "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a", - "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e", - "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032", - "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6", - "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e", - "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b", - "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e", - "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954", - "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962", - "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c", - "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4", - "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55", - "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962", - "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023", - "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c", - "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6", - "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8", - "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382", - "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7", - "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc", - "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997", - "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796" - ], - "version": "==1.15.0" + "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", + "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", + "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", + "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", + "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", + "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", + "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", + "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", + "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", + "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", + "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", + "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", + "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", + "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", + "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", + "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", + "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", + "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", + "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", + "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", + "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", + "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", + "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", + "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", + "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", + "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", + "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", + "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", + "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", + "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", + "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", + "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", + "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", + "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", + "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", + "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", + "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", + "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", + "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", + "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", + "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", + "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", + "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", + "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", + "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", + "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", + "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", + "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", + "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", + "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", + "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", + "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", + "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", + "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", + "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", + "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", + "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", + "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", + "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", + "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", + "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", + "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", + "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", + "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" + ], + "version": "==1.15.1" + }, + "chardet": { + "hashes": [ + "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", + "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==4.0.0" }, "charset-normalizer": { "hashes": [ - "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597", - "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df" + "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845", + "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f" ], - "markers": "python_version >= '3'", - "version": "==2.0.12" + "markers": "python_version >= '3.6'", + "version": "==2.1.1" }, "click": { "hashes": [ - "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a", - "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc" + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==7.1.2" + "markers": "python_version >= '3.7'", + "version": "==8.1.3" }, "coverage": { "hashes": [ @@ -207,38 +299,86 @@ }, "cryptography": { "hashes": [ - "sha256:093cb351031656d3ee2f4fa1be579a8c69c754cf874206be1d4cf3b542042804", - "sha256:0cc20f655157d4cfc7bada909dc5cc228211b075ba8407c46467f63597c78178", - "sha256:1b9362d34363f2c71b7853f6251219298124aa4cc2075ae2932e64c91a3e2717", - "sha256:1f3bfbd611db5cb58ca82f3deb35e83af34bb8cf06043fa61500157d50a70982", - "sha256:2bd1096476aaac820426239ab534b636c77d71af66c547b9ddcd76eb9c79e004", - "sha256:31fe38d14d2e5f787e0aecef831457da6cec68e0bb09a35835b0b44ae8b988fe", - "sha256:3b8398b3d0efc420e777c40c16764d6870bcef2eb383df9c6dbb9ffe12c64452", - "sha256:3c81599befb4d4f3d7648ed3217e00d21a9341a9a688ecdd615ff72ffbed7336", - "sha256:419c57d7b63f5ec38b1199a9521d77d7d1754eb97827bbb773162073ccd8c8d4", - "sha256:46f4c544f6557a2fefa7ac8ac7d1b17bf9b647bd20b16decc8fbcab7117fbc15", - "sha256:471e0d70201c069f74c837983189949aa0d24bb2d751b57e26e3761f2f782b8d", - "sha256:59b281eab51e1b6b6afa525af2bd93c16d49358404f814fe2c2410058623928c", - "sha256:731c8abd27693323b348518ed0e0705713a36d79fdbd969ad968fbef0979a7e0", - "sha256:95e590dd70642eb2079d280420a888190aa040ad20f19ec8c6e097e38aa29e06", - "sha256:a68254dd88021f24a68b613d8c51d5c5e74d735878b9e32cc0adf19d1f10aaf9", - "sha256:a7d5137e556cc0ea418dca6186deabe9129cee318618eb1ffecbd35bee55ddc1", - "sha256:aeaba7b5e756ea52c8861c133c596afe93dd716cbcacae23b80bc238202dc023", - "sha256:dc26bb134452081859aa21d4990474ddb7e863aa39e60d1592800a8865a702de", - "sha256:e53258e69874a306fcecb88b7534d61820db8a98655662a3dd2ec7f1afd9132f", - "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181", - "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e", - "sha256:f8ec91983e638a9bcd75b39f1396e5c0dc2330cbd9ce4accefe68717e6779e0a" - ], - "version": "==37.0.2" + "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a", + "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f", + "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0", + "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407", + "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7", + "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6", + "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153", + "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750", + "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad", + "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6", + "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b", + "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5", + "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a", + "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d", + "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d", + "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294", + "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0", + "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a", + "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac", + "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61", + "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013", + "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e", + "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb", + "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9", + "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd", + "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818" + ], + "version": "==38.0.1" + }, + "datamodel-code-generator": { + "hashes": [ + "sha256:26a62a1f99c7c8148b808e3e67e82c762cc9f7bbe036fb4c2798352460d68e38", + "sha256:39874c017bbedc5fc9b93c332f3f213d299c9af2995e3870aaa2db8a661098e2" + ], + "index": "pypi", + "version": "==0.11.19" + }, + "distlib": { + "hashes": [ + "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", + "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" + ], + "version": "==0.3.6" + }, + "dnspython": { + "hashes": [ + "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e", + "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f" + ], + "markers": "python_version >= '3.6' and python_version < '4.0'", + "version": "==2.2.1" + }, + "email-validator": { + "hashes": [ + "sha256:6757aea012d40516357c0ac2b1a4c31219ab2f899d26831334c5d069e8b6c3d8", + "sha256:c8589e691cf73eb99eed8d10ce0e9cbb05a0886ba920c8bcb7c82873f4c5789c" + ], + "version": "==1.2.1" }, "fastapi": { "hashes": [ - "sha256:6ea2286e439c4ced7cce2b2862c25859601bf327a515c12dd6e431ef5d49d12f", - "sha256:d3e3c0ac35110efb22ee3ed28201cf32f9d11a9a0e52d7dd676cad25f5219523" + "sha256:15fcabd5c78c266fa7ae7d8de9b384bfc2375ee0503463a6febbe3bab69d6f65", + "sha256:3233d4a789ba018578658e2af1a4bb5e38bdd122ff722b313666a9b2c6786a83" ], - "markers": "python_version >= '3.6'", - "version": "==0.65.3" + "markers": "python_full_version >= '3.6.1'", + "version": "==0.78.0" + }, + "filelock": { + "hashes": [ + "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc", + "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4" + ], + "markers": "python_version >= '3.7'", + "version": "==3.8.0" + }, + "genson": { + "hashes": [ + "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16" + ], + "version": "==1.2.2" }, "h11": { "hashes": [ @@ -250,32 +390,59 @@ }, "httptools": { "hashes": [ - "sha256:07659649fe6b3948b6490825f89abe5eb1cec79ebfaaa0b4bf30f3f33f3c2ba8", - "sha256:08b79e09114e6ab5c3dbf560bba2cb2257ea38cdaeaf99b7cb80d8f92622fcd9", - "sha256:1e35aa179b67086cc600a984924a88589b90793c9c1b260152ca4908786e09df", - "sha256:31629e1f1b89959f8c0927bad12184dc07977dcf71e24f4772934aa490aa199b", - "sha256:851026bd63ec0af7e7592890d97d15c92b62d9e17094353f19a52c8e2b33710a", - "sha256:8fcca4b7efe353b13a24017211334c57d055a6e132c7adffed13a10d28efca57", - "sha256:9abd788465aa46a0f288bd3a99e53edd184177d6379e2098fd6097bb359ad9d6", - "sha256:aebdf0bd7bf7c90ae6b3be458692bf6e9e5b610b501f9f74c7979015a51db4c4", - "sha256:bda99a5723e7eab355ce57435c70853fc137a65aebf2f1cd4d15d96e2956da7b", - "sha256:c1c63d860749841024951b0a78e4dec6f543d23751ef061d6ab60064c7b8b524", - "sha256:c4111a0a8a00eff1e495d43ea5230aaf64968a48ddba8ea2d5f982efae827404", - "sha256:dce59ee45dd6ee6c434346a5ac527c44014326f560866b4b2f414a692ee1aca8", - "sha256:f759717ca1b2ef498c67ba4169c2b33eecf943a89f5329abcff8b89d153eb500", - "sha256:fb7199b8fb0c50a22e77260bb59017e0c075fa80cb03bb2c8692de76e7bb7fe7", - "sha256:fbf7ecd31c39728f251b1c095fd27c84e4d21f60a1d079a0333472ff3ae59d34" - ], - "version": "==0.1.2" + "sha256:1a99346ebcb801b213c591540837340bdf6fd060a8687518d01c607d338b7424", + "sha256:1ee0b459257e222b878a6c09ccf233957d3a4dcb883b0847640af98d2d9aac23", + "sha256:20a45bcf22452a10fa8d58b7dbdb474381f6946bf5b8933e3662d572bc61bae4", + "sha256:29bf97a5c532da9c7a04de2c7a9c31d1d54f3abd65a464119b680206bbbb1055", + "sha256:2c9a930c378b3d15d6b695fb95ebcff81a7395b4f9775c4f10a076beb0b2c1ff", + "sha256:2db44a0b294d317199e9f80123e72c6b005c55b625b57fae36de68670090fa48", + "sha256:3194f6d6443befa8d4db16c1946b2fc428a3ceb8ab32eb6f09a59f86104dc1a0", + "sha256:34d2903dd2a3dd85d33705b6fde40bf91fc44411661283763fd0746723963c83", + "sha256:48e48530d9b995a84d1d89ae6b3ec4e59ea7d494b150ac3bbc5e2ac4acce92cd", + "sha256:54bbd295f031b866b9799dd39cb45deee81aca036c9bff9f58ca06726f6494f1", + "sha256:5d1fe6b6661022fd6cac541f54a4237496b246e6f1c0a6b41998ee08a1135afe", + "sha256:645373c070080e632480a3d251d892cb795be3d3a15f86975d0f1aca56fd230d", + "sha256:6a1a7dfc1f9c78a833e2c4904757a0f47ce25d08634dd2a52af394eefe5f9777", + "sha256:701e66b59dd21a32a274771238025d58db7e2b6ecebbab64ceff51b8e31527ae", + "sha256:72aa3fbe636b16d22e04b5a9d24711b043495e0ecfe58080addf23a1a37f3409", + "sha256:7af6bdbd21a2a25d6784f6d67f44f5df33ef39b6159543b9f9064d365c01f919", + "sha256:7ee9f226acab9085037582c059d66769862706e8e8cd2340470ceb8b3850873d", + "sha256:7f7bfb74718f52d5ed47d608d507bf66d3bc01d4a8b3e6dd7134daaae129357b", + "sha256:8e2eb957787cbb614a0f006bfc5798ff1d90ac7c4dd24854c84edbdc8c02369e", + "sha256:903f739c9fb78dab8970b0f3ea51f21955b24b45afa77b22ff0e172fc11ef111", + "sha256:98993805f1e3cdb53de4eed02b55dcc953cdf017ba7bbb2fd89226c086a6d855", + "sha256:9967d9758df505975913304c434cb9ab21e2c609ad859eb921f2f615a038c8de", + "sha256:a113789e53ac1fa26edf99856a61e4c493868e125ae0dd6354cf518948fbbd5c", + "sha256:a522d12e2ddbc2e91842ffb454a1aeb0d47607972c7d8fc88bd0838d97fb8a2a", + "sha256:abe829275cdd4174b4c4e65ad718715d449e308d59793bf3a931ee1bf7e7b86c", + "sha256:c286985b5e194ca0ebb2908d71464b9be8f17cc66d6d3e330e8d5407248f56ad", + "sha256:cd1295f52971097f757edfbfce827b6dbbfb0f7a74901ee7d4933dff5ad4c9af", + "sha256:ceafd5e960b39c7e0d160a1936b68eb87c5e79b3979d66e774f0c77d4d8faaed", + "sha256:d1f27bb0f75bef722d6e22dc609612bfa2f994541621cd2163f8c943b6463dfe", + "sha256:d3a4e165ca6204f34856b765d515d558dc84f1352033b8721e8d06c3e44930c3", + "sha256:d9b90bf58f3ba04e60321a23a8723a1ff2a9377502535e70495e5ada8e6e6722", + "sha256:f72b5d24d6730035128b238decdc4c0f2104b7056a7ca55cf047c106842ec890", + "sha256:fcddfe70553be717d9745990dfdb194e22ee0f60eb8f48c0794e7bfeda30d2d5", + "sha256:fdb9f9ed79bc6f46b021b3319184699ba1a22410a82204e6e89c774530069683" + ], + "version": "==0.4.0" }, "idna": { "hashes": [ "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" ], - "markers": "python_version >= '3'", + "markers": "python_version >= '3.5'", "version": "==3.3" }, + "inflect": { + "hashes": [ + "sha256:aadc7ed73928f5e014129794bbac03058cca35d0a973a5fc4eb45c7fa26005f9", + "sha256:b45d91a4a28a4e617ff1821117439b06eaa86e2a4573154af0149e9be6687238" + ], + "markers": "python_version >= '3.7'", + "version": "==5.6.2" + }, "iso8601": { "hashes": [ "sha256:36532f77cc800594e8f16641edae7f1baf7932f05d8e508545b95fc53c6dc85b", @@ -283,6 +450,13 @@ ], "version": "==0.1.16" }, + "isodate": { + "hashes": [ + "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96", + "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9" + ], + "version": "==0.6.1" + }, "isort": { "hashes": [ "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7", @@ -299,6 +473,13 @@ "markers": "python_version >= '3.7'", "version": "==3.1.2" }, + "jsonschema": { + "hashes": [ + "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163", + "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a" + ], + "version": "==3.2.0" + }, "lazy-object-proxy": { "hashes": [ "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7", @@ -402,12 +583,38 @@ ], "version": "==0.4.3" }, + "openapi-schema-validator": { + "hashes": [ + "sha256:230db361c71a5b08b25ec926797ac8b59a8f499bbd7316bd15b6cd0fc9aea5df", + "sha256:8ef097b78c191c89d9a12cdf3d311b2ecf9d3b80bbe8610dbc67a812205a6a8d", + "sha256:af023ae0d16372cf8dd0d128c9f3eaa080dc3cd5dfc69e6a247579f25bd10503" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.1.6" + }, + "openapi-spec-validator": { + "hashes": [ + "sha256:43d606c5910ed66e1641807993bd0a981de2fc5da44f03e1c4ca2bb65b94b68e", + "sha256:49d7da81996714445116f6105c9c5955c0e197ef8636da4f368c913f64753443" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", + "version": "==0.3.3" + }, "pathspec": { "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" + "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93", + "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d" + ], + "markers": "python_version >= '3.7'", + "version": "==0.10.1" + }, + "pipenv": { + "hashes": [ + "sha256:b6dfff06dea56e3bade92fc267c2da1f0807c5c7b0903eef6115fdb899c2b4b6", + "sha256:e02642085a160516c49df34fa939a99cea306aa04bef8a5610392aacbfb03574" ], - "version": "==0.9.0" + "index": "pypi", + "version": "==2022.9.8" }, "platformdirs": { "hashes": [ @@ -417,60 +624,62 @@ "markers": "python_version >= '3.7'", "version": "==2.5.2" }, - "py-dateutil": { + "prance": { "hashes": [ - "sha256:7efa2ca17159c590408cb624de9aa10d360f14097cb70dd7559e632f2cf4b048" + "sha256:51ec41d10b317bf5d4e74782a7f7f0c0488c6042433b5b4fde2a988cd069d235", + "sha256:ce06feef8814c3436645f3b094e91067b1a111bc860a51f239f93437a8d4b00e" ], - "version": "==2.2" + "markers": "python_version >= '3.6'", + "version": "==0.21.8.0" }, "pycparser": { "hashes": [ "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.21" }, "pydantic": { "hashes": [ - "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f", - "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74", - "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1", - "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b", - "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537", - "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310", - "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810", - "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a", - "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761", - "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892", - "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58", - "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761", - "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195", - "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1", - "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd", - "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b", - "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee", - "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580", - "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608", - "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918", - "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380", - "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a", - "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0", - "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd", - "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728", - "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49", - "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166", - "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6", - "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131", - "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11", - "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193", - "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a", - "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd", - "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e", - "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6" + "sha256:05e00dbebbe810b33c7a7362f231893183bcc4251f3f2ff991c31d5c08240c42", + "sha256:06094d18dd5e6f2bbf93efa54991c3240964bb663b87729ac340eb5014310624", + "sha256:0b959f4d8211fc964772b595ebb25f7652da3f22322c007b6fed26846a40685e", + "sha256:19b3b9ccf97af2b7519c42032441a891a5e05c68368f40865a90eb88833c2559", + "sha256:1b6ee725bd6e83ec78b1aa32c5b1fa67a3a65badddde3976bca5fe4568f27709", + "sha256:1ee433e274268a4b0c8fde7ad9d58ecba12b069a033ecc4645bb6303c062d2e9", + "sha256:216f3bcbf19c726b1cc22b099dd409aa371f55c08800bcea4c44c8f74b73478d", + "sha256:2d0567e60eb01bccda3a4df01df677adf6b437958d35c12a3ac3e0f078b0ee52", + "sha256:2e05aed07fa02231dbf03d0adb1be1d79cabb09025dd45aa094aa8b4e7b9dcda", + "sha256:352aedb1d71b8b0736c6d56ad2bd34c6982720644b0624462059ab29bd6e5912", + "sha256:355639d9afc76bcb9b0c3000ddcd08472ae75318a6eb67a15866b87e2efa168c", + "sha256:37c90345ec7dd2f1bcef82ce49b6235b40f282b94d3eec47e801baf864d15525", + "sha256:4b8795290deaae348c4eba0cebb196e1c6b98bdbe7f50b2d0d9a4a99716342fe", + "sha256:5760e164b807a48a8f25f8aa1a6d857e6ce62e7ec83ea5d5c5a802eac81bad41", + "sha256:6eb843dcc411b6a2237a694f5e1d649fc66c6064d02b204a7e9d194dff81eb4b", + "sha256:7b5ba54d026c2bd2cb769d3468885f23f43710f651688e91f5fb1edcf0ee9283", + "sha256:7c2abc4393dea97a4ccbb4ec7d8658d4e22c4765b7b9b9445588f16c71ad9965", + "sha256:81a7b66c3f499108b448f3f004801fcd7d7165fb4200acb03f1c2402da73ce4c", + "sha256:91b8e218852ef6007c2b98cd861601c6a09f1aa32bbbb74fab5b1c33d4a1e410", + "sha256:9300fcbebf85f6339a02c6994b2eb3ff1b9c8c14f502058b5bf349d42447dcf5", + "sha256:9cabf4a7f05a776e7793e72793cd92cc865ea0e83a819f9ae4ecccb1b8aa6116", + "sha256:a1f5a63a6dfe19d719b1b6e6106561869d2efaca6167f84f5ab9347887d78b98", + "sha256:a4c805731c33a8db4b6ace45ce440c4ef5336e712508b4d9e1aafa617dc9907f", + "sha256:ae544c47bec47a86bc7d350f965d8b15540e27e5aa4f55170ac6a75e5f73b644", + "sha256:b97890e56a694486f772d36efd2ba31612739bc6f3caeee50e9e7e3ebd2fdd13", + "sha256:bb6ad4489af1bac6955d38ebcb95079a836af31e4c4f74aba1ca05bb9f6027bd", + "sha256:bedf309630209e78582ffacda64a21f96f3ed2e51fbf3962d4d488e503420254", + "sha256:c1ba1afb396148bbc70e9eaa8c06c1716fdddabaf86e7027c5988bae2a829ab6", + "sha256:c33602f93bfb67779f9c507e4d69451664524389546bacfe1bee13cae6dc7488", + "sha256:c4aac8e7103bf598373208f6299fa9a5cfd1fc571f2d40bf1dd1955a63d6eeb5", + "sha256:c6f981882aea41e021f72779ce2a4e87267458cc4d39ea990729e21ef18f0f8c", + "sha256:cc78cc83110d2f275ec1970e7a831f4e371ee92405332ebfe9860a715f8336e1", + "sha256:d49f3db871575e0426b12e2f32fdb25e579dea16486a26e5a0474af87cb1ab0a", + "sha256:dd3f9a40c16daf323cf913593083698caee97df2804aa36c4b3175d5ac1b92a2", + "sha256:e0bedafe4bc165ad0a56ac0bd7695df25c50f76961da29c050712596cf092d6d", + "sha256:e9069e1b01525a96e6ff49e25876d90d5a563bc31c658289a8772ae186552236" ], - "markers": "python_full_version >= '3.6.1'", - "version": "==1.9.1" + "markers": "python_version >= '3.7'", + "version": "==1.10.2" }, "pyjwt": { "extras": [ @@ -495,41 +704,55 @@ }, "pypika-tortoise": { "hashes": [ - "sha256:23d993558e3005ac7f7f2865d9add3d8168097f45246f8844fa46d6682a99d90", - "sha256:2e2f747bfc645a25e097485651278cd7d920b709686ce54e43387ba1c9294048" + "sha256:2d68bbb7e377673743cff42aa1059f3a80228d411fbcae591e4465e173109fd8", + "sha256:d802868f479a708e3263724c7b5719a26ad79399b2a70cea065f4a4cadbebf36" + ], + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==0.1.6" + }, + "pyrsistent": { + "hashes": [ + "sha256:aa2ae1c2e496f4d6777f869ea5de7166a8ccb9c2e06ebcf6c7ff1b670c98c5ef" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.1.5" + "markers": "python_version >= '2.7'", + "version": "==0.16.1" + }, + "pysnooper": { + "hashes": [ + "sha256:378f13d731a3e04d3d0350e5f295bdd0f1b49fc8a8b8bf2067fe1e5290bd20be", + "sha256:d17dc91cca1593c10230dce45e46b1d3ff0f8910f0c38e941edf6ba1260b3820" + ], + "version": "==1.1.1" }, "python-dotenv": { "hashes": [ - "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f", - "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938" + "sha256:1684eb44636dd462b66c3ee016599815514527ad99965de77f43e0944634a7e5", + "sha256:b77d08274639e3d34145dfa6c7008e66df0f04b7be7a75fd0d5292c191d79045" ], - "version": "==0.20.0" + "version": "==0.21.0" }, "python-engineio": { "hashes": [ - "sha256:cd3dfa8a939471db60d2704ab0108493c827f399ed5f59c8217e3c3b02c9ea64", - "sha256:e02f8d6686663408533726be2d4ceb403914fd17285d247791c6a91623777bdd" + "sha256:7454314a529bba20e745928601ffeaf101c1b5aca9a6c4e48ad397803d10ea0c", + "sha256:d8d8b072799c36cadcdcc2b40d2a560ce09797ab3d2d596b2ad519a5e4df19ae" ], "markers": "python_version >= '3.6'", - "version": "==4.3.2" + "version": "==4.3.4" }, "python-socketio": { "hashes": [ - "sha256:41d6d93831aac6e0e4917dee2a1d0a0fadaa3fb362d34fc14e98c379e6f20503", - "sha256:f1f2eabdea500dbcb384902418cacedd98b7fe4d0fed818415ddf8af10e428fa" + "sha256:5011a0cd2545c954d7df09eef7489ec424c93b001cc146599cd72f1dd20f0d46", + "sha256:86ee93591c1e781d339d9a61940e62fd6cbc838390653b52a7bcc4f7ce89fe47" ], "markers": "python_version >= '3.6'", - "version": "==5.6.0" + "version": "==5.7.1" }, "pytz": { "hashes": [ - "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7", - "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c" + "sha256:220f481bdafa09c3955dfbdddb7b57780e9a94f5127e35456a48589b9e0c0197", + "sha256:cea221417204f2d1a2aa03ddae3e867921971d0d76f14d87abb4414415bbdcf5" ], - "version": "==2022.1" + "version": "==2022.2.1" }, "pyyaml": { "hashes": [ @@ -569,22 +792,62 @@ ], "version": "==6.0" }, - "reporting-server": { - "editable": true, - "path": "./packages/reporting-server" - }, "requests": { "hashes": [ - "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61", - "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d" + "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983", + "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349" ], "index": "pypi", - "version": "==2.27.1" + "version": "==2.28.1" }, "ros-translator": { "editable": true, "path": "./packages/ros-translator" }, + "ruamel.yaml": { + "hashes": [ + "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7", + "sha256:8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af" + ], + "markers": "python_version >= '3'", + "version": "==0.17.21" + }, + "ruamel.yaml.clib": { + "hashes": [ + "sha256:066f886bc90cc2ce44df8b5f7acfc6a7e2b2e672713f027136464492b0c34d7c", + "sha256:0847201b767447fc33b9c235780d3aa90357d20dd6108b92be544427bea197dd", + "sha256:1070ba9dd7f9370d0513d649420c3b362ac2d687fe78c6e888f5b12bf8bc7bee", + "sha256:1866cf2c284a03b9524a5cc00daca56d80057c5ce3cdc86a52020f4c720856f0", + "sha256:1b4139a6ffbca8ef60fdaf9b33dec05143ba746a6f0ae0f9d11d38239211d335", + "sha256:210c8fcfeff90514b7133010bf14e3bad652c8efde6b20e00c43854bf94fa5a6", + "sha256:221eca6f35076c6ae472a531afa1c223b9c29377e62936f61bc8e6e8bdc5f9e7", + "sha256:31ea73e564a7b5fbbe8188ab8b334393e06d997914a4e184975348f204790277", + "sha256:3fb9575a5acd13031c57a62cc7823e5d2ff8bc3835ba4d94b921b4e6ee664104", + "sha256:4ff604ce439abb20794f05613c374759ce10e3595d1867764dd1ae675b85acbd", + "sha256:61bc5e5ca632d95925907c569daa559ea194a4d16084ba86084be98ab1cec1c6", + "sha256:6e7be2c5bcb297f5b82fee9c665eb2eb7001d1050deaba8471842979293a80b0", + "sha256:72a2b8b2ff0a627496aad76f37a652bcef400fd861721744201ef1b45199ab78", + "sha256:77df077d32921ad46f34816a9a16e6356d8100374579bc35e15bab5d4e9377de", + "sha256:78988ed190206672da0f5d50c61afef8f67daa718d614377dcd5e3ed85ab4a99", + "sha256:7b2927e92feb51d830f531de4ccb11b320255ee95e791022555971c466af4527", + "sha256:7f7ecb53ae6848f959db6ae93bdff1740e651809780822270eab111500842a84", + "sha256:825d5fccef6da42f3c8eccd4281af399f21c02b32d98e113dbc631ea6a6ecbc7", + "sha256:846fc8336443106fe23f9b6d6b8c14a53d38cef9a375149d61f99d78782ea468", + "sha256:89221ec6d6026f8ae859c09b9718799fea22c0e8da8b766b0b2c9a9ba2db326b", + "sha256:9efef4aab5353387b07f6b22ace0867032b900d8e91674b5d8ea9150db5cae94", + "sha256:a32f8d81ea0c6173ab1b3da956869114cae53ba1e9f72374032e33ba3118c233", + "sha256:a49e0161897901d1ac9c4a79984b8410f450565bbad64dbfcbf76152743a0cdb", + "sha256:ada3f400d9923a190ea8b59c8f60680c4ef8a4b0dfae134d2f2ff68429adfab5", + "sha256:bf75d28fa071645c529b5474a550a44686821decebdd00e21127ef1fd566eabe", + "sha256:cfdb9389d888c5b74af297e51ce357b800dd844898af9d4a547ffc143fa56751", + "sha256:d3c620a54748a3d4cf0bcfe623e388407c8e85a4b06b8188e126302bcab93ea8", + "sha256:d67f273097c368265a7b81e152e07fb90ed395df6e552b9fa858c6d2c9f42502", + "sha256:dc6a613d6c74eef5a14a214d433d06291526145431c3b964f5e16529b1842bed", + "sha256:de9c6b8a1ba52919ae919f3ae96abb72b994dd0350226e28f3686cb4f142165c" + ], + "markers": "python_version < '3.11' and platform_python_implementation == 'CPython'", + "version": "==0.2.6" + }, "rx": { "hashes": [ "sha256:922c5f4edb3aa1beaa47bf61d65d5380011ff6adcd527f26377d05cb73ed8ec8", @@ -593,13 +856,21 @@ "markers": "python_version >= '3.6'", "version": "==3.2.0" }, + "semver": { + "hashes": [ + "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4", + "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.13.0" + }, "setuptools": { "hashes": [ - "sha256:68e45d17c9281ba25dc0104eadd2647172b3472d9e01f911efa57965e8d51a36", - "sha256:a43bdedf853c670e5fed28e5623403bad2f73cf02f9a2774e91def6bda8265a7" + "sha256:2e24e0bec025f035a2e72cdd1961119f557d78ad331bb00ff82efb2ab8da8e82", + "sha256:7732871f4f7fa58fb6bdcaeadb0161b2bd046c85905dbaa066bdcbcc81953b57" ], "markers": "python_version >= '3.7'", - "version": "==62.3.2" + "version": "==65.3.0" }, "six": { "hashes": [ @@ -611,19 +882,19 @@ }, "sniffio": { "hashes": [ - "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663", - "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de" + "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", + "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" ], - "markers": "python_version >= '3.5'", - "version": "==1.2.0" + "markers": "python_version >= '3.7'", + "version": "==1.3.0" }, "starlette": { "hashes": [ - "sha256:3c8e48e52736b3161e34c9f0e8153b4f32ec5d8995a3ee1d59410d92f75162ed", - "sha256:7d49f4a27f8742262ef1470608c59ddbc66baf37c148e938c7038e6bc7a998aa" + "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf", + "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7" ], "markers": "python_version >= '3.6'", - "version": "==0.14.2" + "version": "==0.19.1" }, "toml": { "hashes": [ @@ -635,45 +906,76 @@ }, "tomli": { "hashes": [ - "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f", - "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c" + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" ], - "markers": "python_version >= '3.6'", - "version": "==1.2.3" + "markers": "python_full_version < '3.11.0a7'", + "version": "==2.0.1" }, "tortoise-orm": { "hashes": [ - "sha256:1f5020e9964d32a4d6ed685d466b5d7285de328a63ee92ee988c1e4baf8fefbf", - "sha256:f18c41bb83be4748a6ca259ed7309ca954b35f5790971824bbc79a11d2b1ef3b" + "sha256:537361ce2d0829741afd43afd9bc9413a314a176cb58747d88047c20ccc01db1", + "sha256:edc9f3b49635b1dd74f73de38f54e031377e4f02b3698322502047f2e031af8b" + ], + "markers": "python_version >= '3.7' and python_version < '4.0'", + "version": "==0.18.1" + }, + "typed-ast": { + "hashes": [ + "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2", + "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1", + "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6", + "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62", + "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac", + "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d", + "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc", + "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2", + "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97", + "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35", + "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6", + "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1", + "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4", + "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c", + "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e", + "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec", + "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f", + "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72", + "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47", + "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72", + "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe", + "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6", + "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3", + "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==0.17.8" + "markers": "python_full_version >= '3.9.8'", + "version": "==1.5.4" }, "typing-extensions": { "hashes": [ - "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708", - "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376" + "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02", + "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6" ], "markers": "python_version >= '3.7'", - "version": "==4.2.0" + "version": "==4.3.0" }, "urllib3": { "hashes": [ - "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14", - "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e" + "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e", + "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'", - "version": "==1.26.9" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4.0'", + "version": "==1.26.12" }, "uvicorn": { "extras": [ "standard" ], "hashes": [ - "sha256:3292251b3c7978e8e4a7868f4baf7f7f7bb7e40c759ecc125c37e99cdea34202", - "sha256:7587f7b08bd1efd2b9bad809a3d333e972f1d11af8a5e52a9371ee3a5de71524" + "sha256:0abd429ebb41e604ed8d2be6c60530de3408f250e8d2d84967d85ba9e86fe3af", + "sha256:9a66e7c42a2a95222f76ec24a4b754c158261c4696e683b9dadc72b590e0311b" ], - "version": "==0.13.4" + "markers": "python_version >= '3.7'", + "version": "==0.18.3" }, "uvloop": { "hashes": [ @@ -696,12 +998,44 @@ ], "version": "==0.16.0" }, - "watchgod": { + "virtualenv": { + "hashes": [ + "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da", + "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27" + ], + "markers": "python_version >= '3.6'", + "version": "==20.16.5" + }, + "virtualenv-clone": { "hashes": [ - "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce", - "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450" + "sha256:418ee935c36152f8f153c79824bb93eaf6f0f7984bae31d3f48f350b9183501a", + "sha256:44d5263bceed0bac3e1424d64f798095233b64def1c5689afa43dc3223caf5b0" ], - "version": "==0.8.2" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==0.5.7" + }, + "watchfiles": { + "hashes": [ + "sha256:1e41c8b4bf3e07c18aa51775b36b718830fa727929529a7d6e5b38cf845a06b4", + "sha256:22af3b915f928ef59d427d7228668f87ac8054ed8200808c73fbcaa4f82d5572", + "sha256:2a3debb19912072799d7ca53e99fc5f090f77948f5601392623b2a416b4c86be", + "sha256:35f3e411822e14a35f2ef656535aad4e6e79670d6b6ef8e53db958e28916b1fe", + "sha256:44c6aff58b8a70a26431737e483a54e8e224279b21873388571ed184fe7c91a7", + "sha256:4a6a1ac96edf5bc3f8e36f4462fc1daad0ec3769ff2adb920571e120e37c91c5", + "sha256:5741246ae399a03395aa5ee35480083a4f29d58ffd41dd3395594f8805f8cdbc", + "sha256:70159e759f52b65a50c498182dece80364bfd721e839c254c328cbc7a1716616", + "sha256:75a4b9cec1b1c337ea77d4428b29861553d6bf8179923b1bc7e825e217460e2c", + "sha256:91d1b2d0cf060e5222a930a3e2f40f6577da1d18c085c32741b98a128dc1e72c", + "sha256:a8a1809bf910672aa0b7ed6e6045d4fc2cf1e0718b99bc443ef17faa5697b68a", + "sha256:aed7575e24434c8fec2f2bbb0cecb1521ea1240234d9108db7915a3424d92394", + "sha256:b2c7ad91a867dd688b9a12097dd6a4f89397b43fccee871152aa67197cc94398", + "sha256:baa6d0c1c5140e1dcf6ff802dd7b09fcd95b358e50d42fabc83d83f719451c54", + "sha256:c9a7a6dc63684ff5ba11f0be0e64f744112c3c7a0baf4ec8f6794f9a6257d21e", + "sha256:cd7d2fd9a8f28066edc8db5278f3632eb94d10596af760fa0601631f32b1a41e", + "sha256:e939a2693404ac11e055f9d1237db8ad7635e2185a6143bde00116e691ea2983", + "sha256:f91035a273001390093a09e52274a34695b0d15ee8736183b640bbc3b8a432ab" + ], + "version": "==0.16.1" }, "websocket-client": { "hashes": [ @@ -713,30 +1047,56 @@ }, "websockets": { "hashes": [ - "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5", - "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5", - "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308", - "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb", - "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a", - "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c", - "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170", - "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422", - "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8", - "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485", - "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f", - "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8", - "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc", - "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779", - "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989", - "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1", - "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092", - "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824", - "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d", - "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55", - "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36", - "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b" - ], - "version": "==8.1" + "sha256:07cdc0a5b2549bcfbadb585ad8471ebdc7bdf91e32e34ae3889001c1c106a6af", + "sha256:210aad7fdd381c52e58777560860c7e6110b6174488ef1d4b681c08b68bf7f8c", + "sha256:28dd20b938a57c3124028680dc1600c197294da5db4292c76a0b48efb3ed7f76", + "sha256:2f94fa3ae454a63ea3a19f73b95deeebc9f02ba2d5617ca16f0bbdae375cda47", + "sha256:31564a67c3e4005f27815634343df688b25705cccb22bc1db621c781ddc64c69", + "sha256:347974105bbd4ea068106ec65e8e8ebd86f28c19e529d115d89bd8cc5cda3079", + "sha256:379e03422178436af4f3abe0aa8f401aa77ae2487843738542a75faf44a31f0c", + "sha256:3eda1cb7e9da1b22588cefff09f0951771d6ee9fa8dbe66f5ae04cc5f26b2b55", + "sha256:51695d3b199cd03098ae5b42833006a0f43dc5418d3102972addc593a783bc02", + "sha256:54c000abeaff6d8771a4e2cef40900919908ea7b6b6a30eae72752607c6db559", + "sha256:5b936bf552e4f6357f5727579072ff1e1324717902127ffe60c92d29b67b7be3", + "sha256:6075fd24df23133c1b078e08a9b04a3bc40b31a8def4ee0b9f2c8865acce913e", + "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978", + "sha256:6ea6b300a6bdd782e49922d690e11c3669828fe36fc2471408c58b93b5535a98", + "sha256:6ed1d6f791eabfd9808afea1e068f5e59418e55721db8b7f3bfc39dc831c42ae", + "sha256:7934e055fd5cd9dee60f11d16c8d79c4567315824bacb1246d0208a47eca9755", + "sha256:7ab36e17af592eec5747c68ef2722a74c1a4a70f3772bc661079baf4ae30e40d", + "sha256:7f6d96fdb0975044fdd7953b35d003b03f9e2bcf85f2d2cf86285ece53e9f991", + "sha256:83e5ca0d5b743cde3d29fda74ccab37bdd0911f25bd4cdf09ff8b51b7b4f2fa1", + "sha256:85506b3328a9e083cc0a0fb3ba27e33c8db78341b3eb12eb72e8afd166c36680", + "sha256:8af75085b4bc0b5c40c4a3c0e113fa95e84c60f4ed6786cbb675aeb1ee128247", + "sha256:8b1359aba0ff810d5830d5ab8e2c4a02bebf98a60aa0124fb29aa78cfdb8031f", + "sha256:8fbd7d77f8aba46d43245e86dd91a8970eac4fb74c473f8e30e9c07581f852b2", + "sha256:907e8247480f287aa9bbc9391bd6de23c906d48af54c8c421df84655eef66af7", + "sha256:93d5ea0b5da8d66d868b32c614d2b52d14304444e39e13a59566d4acb8d6e2e4", + "sha256:97bc9d41e69a7521a358f9b8e44871f6cdeb42af31815c17aed36372d4eec667", + "sha256:994cdb1942a7a4c2e10098d9162948c9e7b235df755de91ca33f6e0481366fdb", + "sha256:a141de3d5a92188234afa61653ed0bbd2dde46ad47b15c3042ffb89548e77094", + "sha256:a1e15b230c3613e8ea82c9fc6941b2093e8eb939dd794c02754d33980ba81e36", + "sha256:aad5e300ab32036eb3fdc350ad30877210e2f51bceaca83fb7fef4d2b6c72b79", + "sha256:b529fdfa881b69fe563dbd98acce84f3e5a67df13de415e143ef053ff006d500", + "sha256:b9c77f0d1436ea4b4dc089ed8335fa141e6a251a92f75f675056dac4ab47a71e", + "sha256:bb621ec2dbbbe8df78a27dbd9dd7919f9b7d32a73fafcb4d9252fc4637343582", + "sha256:c7250848ce69559756ad0086a37b82c986cd33c2d344ab87fea596c5ac6d9442", + "sha256:c8d1d14aa0f600b5be363077b621b1b4d1eb3fbf90af83f9281cda668e6ff7fd", + "sha256:d1655a6fc7aecd333b079d00fb3c8132d18988e47f19740c69303bf02e9883c6", + "sha256:d6353ba89cfc657a3f5beabb3b69be226adbb5c6c7a66398e17809b0ce3c4731", + "sha256:da4377904a3379f0c1b75a965fff23b28315bcd516d27f99a803720dfebd94d4", + "sha256:e49ea4c1a9543d2bd8a747ff24411509c29e4bdcde05b5b0895e2120cb1a761d", + "sha256:e4e08305bfd76ba8edab08dcc6496f40674f44eb9d5e23153efa0a35750337e8", + "sha256:e6fa05a680e35d0fcc1470cb070b10e6fe247af54768f488ed93542e71339d6f", + "sha256:e7e6f2d6fd48422071cc8a6f8542016f350b79cc782752de531577d35e9bd677", + "sha256:e904c0381c014b914136c492c8fa711ca4cced4e9b3d110e5e7d436d0fc289e8", + "sha256:ec2b0ab7edc8cd4b0eb428b38ed89079bdc20c6bdb5f889d353011038caac2f9", + "sha256:ef5ce841e102278c1c2e98f043db99d6755b1c58bde475516aef3a008ed7f28e", + "sha256:f351c7d7d92f67c0609329ab2735eee0426a03022771b00102816a72715bb00b", + "sha256:fab7c640815812ed5f10fbee7abbf58788d602046b7bb3af9b1ac753a6d5e916", + "sha256:fc06cc8073c8e87072138ba1e431300e2d408f054b27047d047b549455066ff4" + ], + "version": "==10.3" }, "wrapt": { "hashes": [ diff --git a/README.md b/README.md index b55a9338b..0349043a8 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,22 @@ -[![Nightly](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml) [![Dashboard End-to-End](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml) [![Reporting End-to-End](https://github.com/open-rmf/rmf-web/actions/workflows/reporting-e2e.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/reporting-e2e.yml) [![react-components](https://github.com/open-rmf/rmf-web/workflows/react-components/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Areact-components+branch%3Amain) [![dashboard](https://github.com/open-rmf/rmf-web/workflows/dashboard/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Adashboard+branch%3Amain) [![api-server](https://github.com/open-rmf/rmf-web/workflows/api-server/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Aapi-server+branch%3Amain) [![reporting](https://github.com/open-rmf/rmf-web/actions/workflows/reporting.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/reporting.yml) [![reporting-server](https://github.com/open-rmf/rmf-web/actions/workflows/reporting-server.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/reporting-server.yml) [![rmf-auth](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-auth.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-auth.yml) [![ros-translator](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml) [![api-client](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml) [![codecov](https://codecov.io/gh/open-rmf/rmf-web/branch/main/graph/badge.svg)](https://codecov.io/gh/open-rmf/rmf-web) +[![Nightly](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/nightly.yml) [![Dashboard End-to-End](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/dashboard-e2e.yml) [![react-components](https://github.com/open-rmf/rmf-web/workflows/react-components/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Areact-components+branch%3Amain) [![dashboard](https://github.com/open-rmf/rmf-web/workflows/dashboard/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Adashboard+branch%3Amain) [![api-server](https://github.com/open-rmf/rmf-web/workflows/api-server/badge.svg)](https://github.com/open-rmf/rmf-web/actions?query=workflow%3Aapi-server+branch%3Amain) [![rmf-auth](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-auth.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/rmf-auth.yml) [![ros-translator](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/ros-translator.yml) [![api-client](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml/badge.svg)](https://github.com/open-rmf/rmf-web/actions/workflows/api-client.yml) [![codecov](https://codecov.io/gh/open-rmf/rmf-web/branch/main/graph/badge.svg)](https://codecov.io/gh/open-rmf/rmf-web) # Building the Dashboard ## Prerequisites -### Ubuntu 20.04 +### Ubuntu 22.04 Install nodejs ```bash sudo apt update && sudo apt install curl curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash -nvm install 14 +nvm install 16 ``` -A recent version of pipenv is needed, the system packaged version is too old. +Install pnpm and nodejs ```bash -pip3 install pipenv +curl -fsSL https://get.pnpm.io/install.sh | bash - +pnpm env use --global 16 ``` ### Install rmf @@ -28,24 +29,18 @@ Refer to the following documentation: Refer to the following documentations: -* [nodejs](https://nodejs.org/en/download/package-manager/) >= 14, npm >= 7 +* [nodejs](https://nodejs.org/en/download/package-manager/) >= 16 * [rmf_demos](https://github.com/open-rmf/rmf_demos) -## Bootstrap +## Install dependencies -Before running the commands, make sure that rmf is sourced. ```bash -git clone https://github.com/open-rmf/rmf-web -cd rmf-web -npm install -g npm@latest -scripts/bootstrap.sh +pnpm install ``` -NOTE: npm >= 7 is required because this repo uses the new workspaces feature. - -You may also choose to bootstrap a subset of the packages, e.g. +You may also install dependencies for only a subset of the packages ```bash -scripts/bootstrap.sh rmf-dashboard +pnpm install -w --filter ... ``` ### PostgreSQL diff --git a/codecov.yml b/codecov.yml index c4e0f38f2..04421b984 100644 --- a/codecov.yml +++ b/codecov.yml @@ -15,14 +15,6 @@ flags: paths: - packages/api-server carryforward: true - reporting: - paths: - - packages/reporting - carryforward: true - reporting-server: - paths: - - packages/reporting-server - carryforward: true rmf-auth: paths: - packages/rmf-auth diff --git a/docker/Dockerfile b/docker/Dockerfile index ac12b3a2c..19f77674b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,12 +1,9 @@ ARG BASE_IMAGE=ghcr.io/open-rmf/rmf/rmf_demos FROM $BASE_IMAGE -RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - && \ - sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \ - curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ +RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - && \ apt-get update && apt-get install -y \ nodejs \ - google-chrome-stable \ jq && \ pip3 install pipenv && \ npm config set unsafe-perm diff --git a/package.json b/package.json index 5a74f7830..142245231 100644 --- a/package.json +++ b/package.json @@ -1,51 +1,35 @@ { "name": "root", "private": true, - "workspaces": [ - "packages/api-client", - "packages/api-server", - "packages/dashboard", - "packages/dashboard-e2e", - "packages/react-components", - "packages/reporting", - "packages/reporting-e2e", - "packages/reporting-server", - "packages/rmf-auth", - "packages/rmf-models", - "packages/ros-translator", - "pipenv-install" - ], "engines": { - "node": ">=14", - "npm": ">=8" + "node": ">=16", + "pnpm": ">=7.5.0", + "npm": ">=99" + }, + "scripts": { + "prepare": "husky install" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", - "eslint": "^7.26.0", - "eslint-plugin-react": "^7.21.4", - "eslint-plugin-react-hooks": "^4.1.2", - "husky": "^4.3.0", - "lint-staged": "^10.4.0", - "prettier": "^2.1.2", - "pyright": "^1.1.181", + "eslint": "^7.32.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "husky": "^8.0.1", + "lint-staged": "^10.5.4", + "prettier": "^2.7.1", + "pyright": "^1.1.257", "typescript": "~4.4.4" }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } - }, "lint-staged": { "**/*.{js,jsx,ts,tsx,css,scss}": [ "prettier --write" ], "**/*.py": [ - "python3 -m pipenv run isort", - "python3 -m pipenv run black" + "scripts/pipenv run isort", + "scripts/pipenv run black" ] }, - "dependencies": {}, "overrides": { "react-error-overlay": "6.0.9" } diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 9854340b7..ea2bb8f2d 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -4,9 +4,9 @@ "description": "", "main": "./dist/lib/index.js", "scripts": { - "build": "../../scripts/nws.sh build -d && tsc --build", + "build": "tsc --build", "clean": "tsc --build --clean", - "prepack": "npm run clean && npm run build && npm run lint", + "prepack": "pnpm run clean && pnpm run --filter {.}... build && pnpm run lint", "lint": "eslint --max-warnings 0 --ext ts,tsx lib", "test": "jasmine" }, @@ -15,7 +15,7 @@ "dependencies": { "@types/debug": "^4.1.5", "debug": "^4.2.0", - "rmf-models": "*", + "rmf-models": "workspace:*", "socket.io-client": "^3.1.3" }, "devDependencies": { diff --git a/packages/api-client/tsconfig.json b/packages/api-client/tsconfig.json index d5711f699..dcf5553c3 100644 --- a/packages/api-client/tsconfig.json +++ b/packages/api-client/tsconfig.json @@ -6,7 +6,7 @@ // "incremental": true, /* Enable incremental compilation */ "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ + "lib": ["ES2015", "DOM"], /* Specify library files to be included in the compilation. */ // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ @@ -16,7 +16,7 @@ // "outFile": "./", /* Concatenate and emit output to single file. */ "outDir": "./dist", /* Redirect output structure to the directory. */ // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - "composite": true, /* Enable project compilation */ + // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ diff --git a/packages/api-server/.pnpm-debug.log b/packages/api-server/.pnpm-debug.log new file mode 100644 index 000000000..054bf9ab4 --- /dev/null +++ b/packages/api-server/.pnpm-debug.log @@ -0,0 +1,2305 @@ +{ + "0 debug pnpm:scope": { + "selected": 9, + "total": 9, + "workspacePrefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web" + }, + "1 debug pnpm:package-manifest": { + "initial": { + "name": "api-server", + "version": "0.0.0", + "description": "dummy package", + "private": true, + "scripts": { + "prepack": "../../.venv/bin/pipenv run python setup.py bdist_wheel", + "restart": "RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "start": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "start:psql": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=psql_local_config.py ../../.venv/bin/pipenv run python -m api_server", + "test": "../../.venv/bin/pipenv run python scripts/test.py", + "test:cov": "../../.venv/bin/pipenv run python -m coverage run scripts/test.py", + "test:report": "../../.venv/bin/pipenv run python -m coverage html && xdg-open htmlcov/index.html", + "lint": "../../.venv/bin/pipenv run pyright && ../../.venv/bin/pipenv run pylint api_server --ignore=ros_pydantic,rmf_api" + }, + "devDependencies": { + "pipenv-install": "workspace:*" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/api-server" + }, + "2 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-models", + "version": "0.0.1", + "description": "RMF models generated from ROS messages", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build" + }, + "repository": { + "type": "git", + "url": "https://github.com/open-rmf" + }, + "author": "Teo Koon Peng ", + "license": "Apache-2.0", + "devDependencies": { + "@types/jasmine": "^3.8.2", + "@types/node": "^14.14.35", + "jasmine": "^3.6.6", + "json-schema-to-typescript": "^10.1.4", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + }, + "files": [ + "dist/**" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/rmf-models" + }, + "3 debug pnpm:package-manifest": { + "initial": { + "name": "ros-translator", + "version": "0.0.0", + "private": true, + "description": "dummy package", + "main": "index.js", + "scripts": { + "test": ". ../../.venv/bin/activate && ./test.sh" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/jasmine": "^3.8.2", + "jasmine": "^3.6.6", + "pipenv-install": "workspace:*", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/ros-translator" + }, + "4 debug pnpm:package-manifest": { + "initial": { + "name": "api-client", + "version": "0.0.1", + "description": "", + "main": "./dist/lib/index.js", + "scripts": { + "build": "tsc --build", + "clean": "tsc --build --clean", + "prepack": "pnpm run clean && pnpm run --filter {.}... build && pnpm run lint", + "lint": "eslint --max-warnings 0 --ext ts,tsx lib", + "test": "jasmine" + }, + "author": "koonpeng@openrobotics.org", + "license": "Apache-2.0", + "dependencies": { + "@types/debug": "^4.1.5", + "debug": "^4.2.0", + "rmf-models": "workspace:*", + "socket.io-client": "^3.1.3" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "@types/jasmine": "^3.8.2", + "axios": "^0.21.1", + "eslint": "^7.26.0", + "jasmine": "^3.6.6", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + }, + "peerDependencies": { + "axios": "^0.21.1" + }, + "files": [ + "dist/", + "openapi/schema/" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/api-client" + }, + "5 debug pnpm:package-manifest": { + "initial": { + "name": "react-components", + "version": "0.0.1", + "description": "", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "tsc --build --watch", + "clean": "tsc --build --clean", + "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm run test", + "start": "pnpm run --filter {.}^... build && start-storybook -p 6006 -s test-data", + "test": "karma start karma.conf.js", + "test:coverage": "karma start karma.conf.js --coverage" + }, + "author": "koonpeng@openrobotics.org", + "license": "Apache-2.0", + "dependencies": { + "@date-io/core": "^2.11.0", + "@date-io/date-fns": "^2.11.0", + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@mui/icons-material": "^5.8.3", + "@mui/lab": "5.0.0-alpha.86", + "@mui/styles": "^5.8.3", + "@mui/x-data-grid": "^5.12.1", + "@mui/x-date-pickers": "5.0.0-alpha.6", + "@types/crc": "^3.4.0", + "@types/rbush": "^3.0.0", + "@types/react-grid-layout": "^1.3.2", + "@types/react-leaflet": "^2.5.2", + "@types/shallowequal": "^1.1.1", + "api-client": "workspace:*", + "clsx": "^1.1.1", + "crc": "^3.8.0", + "date-fns": "^2.21.3", + "debug": "^4.2.0", + "eventemitter3": "^4.0.7", + "node-vibrant": "^3.1.6", + "rbush": "^3.0.1", + "react-customizable-progressbar": "^1.0.3", + "react-grid-layout": "^1.3.4", + "react-leaflet": "^2.7.0", + "react-virtualized-auto-sizer": "^1.0.6", + "react-window": "^1.8.6", + "rmf-models": "workspace:*", + "shallowequal": "^1.1.0" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@fontsource/roboto": "^4.3.0", + "@jsdevtools/coverage-istanbul-loader": "^3.0.5", + "@mui/material": "^5.8.3", + "@mui/system": "^5.8.3", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/debug": "^4.1.5", + "@types/jasmine": "^3.8.2", + "@types/leaflet": "^1.5.17", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "@types/react-virtualized-auto-sizer": "^1.0.1", + "@types/react-window": "^1.8.5", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "concurrently": "^5.3.0", + "css-loader": "^5", + "date-fns": "^2.21.3", + "eslint": "^7.26.0", + "eslint-plugin-react": "^7.21.4", + "eslint-plugin-react-hooks": "^4.1.2", + "file-loader": "^6.2.0", + "jasmine": "^3.6.6", + "karma": "^6.3.20", + "karma-browserstack-launcher": "^1.6.0", + "karma-chrome-launcher": "^3.1.0", + "karma-coverage": "^2.2.0", + "karma-jasmine": "^4.0.1", + "karma-source-map-support": "^1.4.0", + "karma-webpack": "^4.0.2", + "leaflet": "^1.7.1", + "process": "0.11.10", + "puppeteer": "*", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-leaflet": "^2.7.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", + "style-loader": "^2", + "ts-loader": "^8.1.0", + "typescript": "~4.4.4", + "webpack": "^4.46.0", + "webpack-cli": "^4.8.0" + }, + "peerDependencies": { + "@fontsource/roboto": "^4.3.0", + "@mui/material": "^5.8.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/react-components" + }, + "6 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-auth", + "version": "0.0.1", + "description": "Auth layer to be used on web UI services", + "main": "dist/index.js", + "scripts": { + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "pnpm run build -- --watch", + "clean": "tsc --build --clean", + "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm test", + "start": "start-storybook -p 6006 -s test-data", + "test": "jest --watch", + "test:coverage": "jest --coverage" + }, + "keywords": [ + "auth", + "rmf" + ], + "author": "matiasbavera@gmail.com", + "license": "Apache-2.0", + "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@fontsource/roboto": "^4.3.0", + "@mui/icons-material": "^5.8.3", + "@mui/lab": "5.0.0-alpha.86", + "api-client": "workspace:*", + "eventemitter3": "^4.0.7", + "keycloak-js": "^11.0.2" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@mui/material": "^5.8.3", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/debug": "^4.1.5", + "@types/history": "^4.7.11", + "@types/jest": "^26.0.13", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "concurrently": "^5.3.0", + "eslint": "^7.26.0", + "eslint-plugin-react": "^7.21.4", + "eslint-plugin-react-hooks": "^4.1.2", + "history": "^4.10.1", + "jest": "^26.5.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", + "ts-jest": "^26.4.1", + "ts-node": "^9.1.1", + "typescript": "~4.4.4", + "webpack": "^4" + }, + "peerDependencies": { + "@mui/material": "^5.8.3", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0" + }, + "files": [ + "lib/" + ] + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/rmf-auth" + }, + "7 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-dashboard", + "version": "0.0.1", + "private": true, + "scripts": { + "analyze": "source-map-explorer 'build/static/js/*.js'", + "start": "pnpm run --filter {.}^... build && concurrently npm:start:rmf-server npm:start:react", + "start:sim": "concurrently npm:start:rmf-server npm:start:rmf npm:start:react", + "start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml pnpm run start:sim", + "start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml pnpm run start:sim", + "start:react": "react-scripts start", + "start:rmf": "node scripts/start-rmf.js", + "start:rmf-server": "RMF_SERVER_USE_SIM_TIME=true npm --prefix ../api-server start", + "start:rmf-server:psql": "RMF_SERVER_USE_SIM_TIME=true npm run --prefix ../api-server start:psql", + "build": "react-scripts build", + "test": "react-scripts test", + "test:coverage": "pnpm test -- --coverage --watchAll=false", + "test:e2e": "cd e2e && npm test", + "test:e2e:dev": "cd e2e && pnpm run test:dev", + "eject": "react-scripts eject", + "setup": "node ./scripts/setup/setup.js", + "storybook": "start-storybook -p 9009 -s public -s src/stories/static", + "build:storybook": "build-storybook -s public -s src/stories/static" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "dependencies": { + "@fontsource/roboto": "^4.3.0", + "@fortawesome/fontawesome-svg-core": "^1.2.30", + "@fortawesome/free-solid-svg-icons": "^5.14.0", + "@fortawesome/react-fontawesome": "^0.1.11", + "@mui/icons-material": "^5.8.3", + "@mui/material": "^5.8.3", + "@mui/system": "^5.8.3", + "@types/debug": "^4.1.5", + "@types/leaflet": "^1.5.17", + "@types/react": "^17.0.19", + "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", + "@types/react-leaflet": "^2.5.2", + "@types/react-router": "^5.1.7", + "@types/react-router-dom": "^5.1.7", + "ajv": "^8.10.0", + "api-client": "workspace:*", + "axios": "^0.21.1", + "date-fns": "^2.21.3", + "debug": "^4.2.0", + "eventemitter3": "^4.0.7", + "keycloak-js": "^11.0.2", + "leaflet": "^1.7.1", + "node-vibrant": "^3.1.6", + "react": "^17.0.2", + "react-components": "workspace:*", + "react-customizable-progressbar": "^1.0.3", + "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", + "react-leaflet": "^2.7.0", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "rmf-auth": "file:../rmf-auth", + "rmf-models": "file:../rmf-models", + "rxjs": "^7.5.5" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/node-logger": "^6.5.9", + "@storybook/preset-create-react-app": "^3.2.0", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/jest": "^26.0.13", + "api-server": "file:../api-server", + "canvas": "^2.6.1", + "chalk": "^4.1.0", + "concurrently": "^5.3.0", + "inquirer": "^8.1.2", + "react-refresh": "^0.9", + "react-scripts": "^4.0.3", + "require-from-string": "^2.0.2", + "source-map-explorer": "^2.5.2", + "styled-components": "^4.4.1", + "ts-node": "^9.1.1", + "typescript": "~4.4.4", + "webpack": "^4" + }, + "jest": { + "collectCoverageFrom": [ + "src/**/*.{js,jsx,ts,tsx}", + "!src/index.tsx", + "!src/serviceWorker.ts", + "!src/app-config.ts", + "!src/managers/**", + "!src/components/rmf-app/**", + "!**/stories/**", + "!**/tests/**" + ] + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/dashboard" + }, + "8 debug pnpm:package-manifest": { + "initial": { + "name": "rmf-dashboard-e2e", + "description": "", + "main": "index.js", + "directories": { + "test": "tests" + }, + "scripts": { + "start": "node scripts/start.js", + "start:rmf-server": "npm --prefix ../api-server start", + "test": "node scripts/test-e2e.js", + "test:dev": "E2E_DASHBOARD_URL=http://localhost:3000 RMF_LAUNCH_MODE=none wdio" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@types/mocha": "^9.0.0", + "@wdio/browserstack-service": "7.11.1", + "@wdio/cli": "7.11.1", + "@wdio/local-runner": "7.11.1", + "@wdio/mocha-framework": "7.11.1", + "@wdio/spec-reporter": "7.10.1", + "concurrently": "^5.3.0", + "rmf-dashboard": "file:../dashboard", + "serve": "^11.3.2", + "ts-node": "^9.1.1", + "typescript": "~4.4.4" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/packages/dashboard-e2e" + }, + "9 debug pnpm:package-manifest": { + "initial": { + "name": "root", + "private": true, + "engines": { + "node": ">=16", + "pnpm": ">=7.5.0", + "npm": ">=99" + }, + "scripts": { + "prepare": "husky install" + }, + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "eslint": "^7.32.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "husky": "^8.0.1", + "lint-staged": "^10.5.4", + "prettier": "^2.7.1", + "pyright": "^1.1.257", + "typescript": "~4.4.4" + }, + "lint-staged": { + "**/*.{js,jsx,ts,tsx,css,scss}": [ + "prettier --write" + ], + "**/*.py": [ + "../../.venv/bin/pipenv run isort", + "../../.venv/bin/pipenv run black" + ] + }, + "overrides": { + "react-error-overlay": "6.0.9" + } + }, + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web" + }, + "10 debug pnpm:context": { + "currentLockfileExists": false, + "storeDir": "/home/koonpeng/ws-osrf/.pnpm-store/v3", + "virtualStoreDir": "/home/koonpeng/ws-osrf/rmf/src/rmf-web/node_modules/.pnpm" + }, + "11 debug pnpm:stage": { + "prefix": "/home/koonpeng/ws-osrf/rmf/src/rmf-web", + "stage": "resolution_started" + }, + "12 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "13 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/node/14.18.21", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "@types/node", + "rawSpec": "^14.14.35" + } + }, + "14 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "15 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/json-schema-to-typescript/10.1.5", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "json-schema-to-typescript", + "rawSpec": "^10.1.4" + } + }, + "16 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "17 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/rmf-models", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "18 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "19 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "20 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "21 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/ros-translator", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "22 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "23 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "24 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/api-client", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "25 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/axios/0.21.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "axios", + "rawSpec": "^0.21.1" + } + }, + "26 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "27 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/api-client", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "28 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/api-client", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "29 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "30 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/api-client", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "31 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/api-client", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "32 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/socket.io-client/3.1.3", + "wanted": { + "dependentId": "packages/api-client", + "name": "socket.io-client", + "rawSpec": "^3.1.3" + } + }, + "33 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "34 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "35 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/3.0.5", + "wanted": { + "dependentId": "packages/react-components", + "name": "@jsdevtools/coverage-istanbul-loader", + "rawSpec": "^3.0.5" + } + }, + "36 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "37 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/system/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/system", + "rawSpec": "^5.8.3" + } + }, + "38 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "39 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "40 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "41 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/react-components", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "42 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "43 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "44 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "45 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "46 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "47 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jasmine/3.10.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/jasmine", + "rawSpec": "^3.8.2" + } + }, + "48 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/leaflet/1.7.11", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/leaflet", + "rawSpec": "^1.5.17" + } + }, + "49 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "50 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "51 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-grid-layout/1.3.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-grid-layout", + "rawSpec": "^1.3.2" + } + }, + "52 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "53 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "54 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-virtualized-auto-sizer/1.0.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-virtualized-auto-sizer", + "rawSpec": "^1.0.1" + } + }, + "55 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-window/1.8.5", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-window", + "rawSpec": "^1.8.5" + } + }, + "56 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "57 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "58 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "59 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/css-loader/5.2.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "css-loader", + "rawSpec": "^5" + } + }, + "60 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/date-fns/2.28.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "date-fns", + "rawSpec": "^2.21.3" + } + }, + "61 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "62 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint-plugin-react", + "rawSpec": "^7.21.4" + } + }, + "63 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.1.2" + } + }, + "64 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/file-loader/6.2.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "file-loader", + "rawSpec": "^6.2.0" + } + }, + "65 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jasmine/3.99.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "jasmine", + "rawSpec": "^3.6.6" + } + }, + "66 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma/6.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma", + "rawSpec": "^6.3.20" + } + }, + "67 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-browserstack-launcher/1.6.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-browserstack-launcher", + "rawSpec": "^1.6.0" + } + }, + "68 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-chrome-launcher/3.1.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-chrome-launcher", + "rawSpec": "^3.1.0" + } + }, + "69 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-coverage/2.2.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-coverage", + "rawSpec": "^2.2.0" + } + }, + "70 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-jasmine/4.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-jasmine", + "rawSpec": "^4.0.1" + } + }, + "71 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-source-map-support/1.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-source-map-support", + "rawSpec": "^1.4.0" + } + }, + "72 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/karma-webpack/4.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "karma-webpack", + "rawSpec": "^4.0.2" + } + }, + "73 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/leaflet/1.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "leaflet", + "rawSpec": "^1.7.1" + } + }, + "74 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/process/0.11.10", + "wanted": { + "dependentId": "packages/react-components", + "name": "process", + "rawSpec": "0.11.10" + } + }, + "75 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/puppeteer/15.3.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "puppeteer", + "rawSpec": "*" + } + }, + "76 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "77 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "78 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-leaflet/2.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-leaflet", + "rawSpec": "^2.7.0" + } + }, + "79 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "80 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "81 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "82 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/style-loader/2.0.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "style-loader", + "rawSpec": "^2" + } + }, + "83 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-loader/8.4.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "ts-loader", + "rawSpec": "^8.1.0" + } + }, + "84 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "85 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "webpack", + "rawSpec": "^4.46.0" + } + }, + "86 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack-cli/4.10.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "webpack-cli", + "rawSpec": "^4.8.0" + } + }, + "87 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@date-io/core/2.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@date-io/core", + "rawSpec": "^2.11.0" + } + }, + "88 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@date-io/date-fns/2.14.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@date-io/date-fns", + "rawSpec": "^2.11.0" + } + }, + "89 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/react/11.9.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@emotion/react", + "rawSpec": "^11.9.3" + } + }, + "90 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/styled/11.9.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@emotion/styled", + "rawSpec": "^11.9.3" + } + }, + "91 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "92 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/lab/5.0.0-alpha.86", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/lab", + "rawSpec": "5.0.0-alpha.86" + } + }, + "93 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/styles/5.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/styles", + "rawSpec": "^5.8.3" + } + }, + "94 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/x-data-grid/5.12.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/x-data-grid", + "rawSpec": "^5.12.1" + } + }, + "95 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/x-date-pickers/5.0.0-alpha.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "@mui/x-date-pickers", + "rawSpec": "5.0.0-alpha.6" + } + }, + "96 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/crc/3.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/crc", + "rawSpec": "^3.4.0" + } + }, + "97 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/rbush/3.0.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/rbush", + "rawSpec": "^3.0.0" + } + }, + "98 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-leaflet/2.8.2", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/react-leaflet", + "rawSpec": "^2.5.2" + } + }, + "99 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/shallowequal/1.1.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "@types/shallowequal", + "rawSpec": "^1.1.1" + } + }, + "100 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/clsx/1.2.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "clsx", + "rawSpec": "^1.1.1" + } + }, + "101 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/crc/3.8.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "crc", + "rawSpec": "^3.8.0" + } + }, + "102 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "103 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "104 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/node-vibrant/3.1.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "node-vibrant", + "rawSpec": "^3.1.6" + } + }, + "105 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/rbush/3.0.1", + "wanted": { + "dependentId": "packages/react-components", + "name": "rbush", + "rawSpec": "^3.0.1" + } + }, + "106 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-customizable-progressbar/1.0.3", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-customizable-progressbar", + "rawSpec": "^1.0.3" + } + }, + "107 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-grid-layout/1.3.4", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-grid-layout", + "rawSpec": "^1.3.4" + } + }, + "108 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-virtualized-auto-sizer/1.0.6", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-virtualized-auto-sizer", + "rawSpec": "^1.0.6" + } + }, + "109 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-window/1.8.7", + "wanted": { + "dependentId": "packages/react-components", + "name": "react-window", + "rawSpec": "^1.8.6" + } + }, + "110 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/shallowequal/1.1.0", + "wanted": { + "dependentId": "packages/react-components", + "name": "shallowequal", + "rawSpec": "^1.1.0" + } + }, + "111 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "112 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "113 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "114 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "115 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "116 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "117 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "118 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/jest-dom/5.16.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/jest-dom", + "rawSpec": "^5.11.4" + } + }, + "119 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "120 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "121 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "122 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "123 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/history/4.7.11", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/history", + "rawSpec": "^4.7.11" + } + }, + "124 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jest/26.0.24", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/jest", + "rawSpec": "^26.0.13" + } + }, + "125 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "126 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "127 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "128 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "129 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "130 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint", + "rawSpec": "^7.26.0" + } + }, + "131 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint-plugin-react", + "rawSpec": "^7.21.4" + } + }, + "132 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.1.2" + } + }, + "133 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/history/4.10.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "history", + "rawSpec": "^4.10.1" + } + }, + "134 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/jest/26.6.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "jest", + "rawSpec": "^26.5.0" + } + }, + "135 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "136 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "137 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "138 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "139 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "140 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-jest/26.5.6", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "ts-jest", + "rawSpec": "^26.4.1" + } + }, + "141 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "142 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "143 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "webpack", + "rawSpec": "^4" + } + }, + "144 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/react/11.9.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@emotion/react", + "rawSpec": "^11.9.3" + } + }, + "145 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@emotion/styled/11.9.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@emotion/styled", + "rawSpec": "^11.9.3" + } + }, + "146 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "147 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "148 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/lab/5.0.0-alpha.86", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "@mui/lab", + "rawSpec": "5.0.0-alpha.86" + } + }, + "149 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "150 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/keycloak-js/11.0.3", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "keycloak-js", + "rawSpec": "^11.0.2" + } + }, + "151 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "152 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-actions/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-actions", + "rawSpec": "^6.5.8" + } + }, + "153 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-essentials/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-essentials", + "rawSpec": "^6.5.8" + } + }, + "154 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/addon-links/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/addon-links", + "rawSpec": "^6.5.8" + } + }, + "155 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/node-logger/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/node-logger", + "rawSpec": "^6.5.9" + } + }, + "156 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/preset-create-react-app/3.2.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/preset-create-react-app", + "rawSpec": "^3.2.0" + } + }, + "157 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@storybook/react/6.5.9", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@storybook/react", + "rawSpec": "^6.5.8" + } + }, + "158 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/dom/8.14.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/dom", + "rawSpec": "^8.14.0" + } + }, + "159 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/jest-dom/5.16.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/jest-dom", + "rawSpec": "^5.11.4" + } + }, + "160 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react/11.2.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/react", + "rawSpec": "^11.2.3" + } + }, + "161 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/react-hooks/5.1.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/react-hooks", + "rawSpec": "^5.0.3" + } + }, + "162 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@testing-library/user-event/12.8.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@testing-library/user-event", + "rawSpec": "^12.1.9" + } + }, + "163 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/jest/26.0.24", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/jest", + "rawSpec": "^26.0.13" + } + }, + "164 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/canvas/2.9.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "canvas", + "rawSpec": "^2.6.1" + } + }, + "165 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/chalk/4.1.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "chalk", + "rawSpec": "^4.1.0" + } + }, + "166 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "167 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/inquirer/8.2.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "inquirer", + "rawSpec": "^8.1.2" + } + }, + "168 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-refresh/0.9.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-refresh", + "rawSpec": "^0.9" + } + }, + "169 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-scripts/4.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-scripts", + "rawSpec": "^4.0.3" + } + }, + "170 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/require-from-string/2.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "require-from-string", + "rawSpec": "^2.0.2" + } + }, + "171 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/source-map-explorer/2.5.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "source-map-explorer", + "rawSpec": "^2.5.2" + } + }, + "172 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/styled-components/4.4.1", + "wanted": { + "dependentId": "packages/dashboard", + "name": "styled-components", + "rawSpec": "^4.4.1" + } + }, + "173 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/dashboard", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "174 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "175 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/webpack/4.46.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "webpack", + "rawSpec": "^4" + } + }, + "176 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fontsource/roboto/4.5.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fontsource/roboto", + "rawSpec": "^4.3.0" + } + }, + "177 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/fontawesome-svg-core/1.2.36", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/fontawesome-svg-core", + "rawSpec": "^1.2.30" + } + }, + "178 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/free-solid-svg-icons/5.15.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/free-solid-svg-icons", + "rawSpec": "^5.14.0" + } + }, + "179 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@fortawesome/react-fontawesome/0.1.19", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@fortawesome/react-fontawesome", + "rawSpec": "^0.1.11" + } + }, + "180 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/icons-material/5.8.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/icons-material", + "rawSpec": "^5.8.3" + } + }, + "181 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/material/5.8.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/material", + "rawSpec": "^5.8.3" + } + }, + "182 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@mui/system/5.8.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@mui/system", + "rawSpec": "^5.8.3" + } + }, + "183 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/debug/4.1.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/debug", + "rawSpec": "^4.1.5" + } + }, + "184 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/leaflet/1.7.11", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/leaflet", + "rawSpec": "^1.5.17" + } + }, + "185 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react/17.0.47", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react", + "rawSpec": "^17.0.19" + } + }, + "186 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-dom/17.0.17", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-dom", + "rawSpec": "^17.0.9" + } + }, + "187 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-grid-layout/1.3.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-grid-layout", + "rawSpec": "^1.3.2" + } + }, + "188 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-leaflet/2.8.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-leaflet", + "rawSpec": "^2.5.2" + } + }, + "189 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router/5.1.18", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-router", + "rawSpec": "^5.1.7" + } + }, + "190 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "@types/react-router-dom", + "rawSpec": "^5.1.7" + } + }, + "191 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ajv/8.11.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "ajv", + "rawSpec": "^8.10.0" + } + }, + "192 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/axios/0.21.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "axios", + "rawSpec": "^0.21.1" + } + }, + "193 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/date-fns/2.28.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "date-fns", + "rawSpec": "^2.21.3" + } + }, + "194 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "debug", + "rawSpec": "^4.2.0" + } + }, + "195 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/4.0.7", + "wanted": { + "dependentId": "packages/dashboard", + "name": "eventemitter3", + "rawSpec": "^4.0.7" + } + }, + "196 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/keycloak-js/11.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "keycloak-js", + "rawSpec": "^11.0.2" + } + }, + "197 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/leaflet/1.8.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "leaflet", + "rawSpec": "^1.7.1" + } + }, + "198 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/node-vibrant/3.1.6", + "wanted": { + "dependentId": "packages/dashboard", + "name": "node-vibrant", + "rawSpec": "^3.1.6" + } + }, + "199 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react/17.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react", + "rawSpec": "^17.0.2" + } + }, + "200 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-customizable-progressbar/1.0.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-customizable-progressbar", + "rawSpec": "^1.0.3" + } + }, + "201 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-dom/17.0.2", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-dom", + "rawSpec": "^17.0.2" + } + }, + "202 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-grid-layout/1.3.4", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-grid-layout", + "rawSpec": "^1.3.4" + } + }, + "203 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-leaflet/2.8.0", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-leaflet", + "rawSpec": "^2.7.0" + } + }, + "204 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-router", + "rawSpec": "^5.2.0" + } + }, + "205 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/react-router-dom/5.3.3", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-router-dom", + "rawSpec": "^5.2.0" + } + }, + "206 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/rxjs/7.5.5", + "wanted": { + "dependentId": "packages/dashboard", + "name": "rxjs", + "rawSpec": "^7.5.5" + } + }, + "207 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@babel/core/7.18.6", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@babel/core", + "rawSpec": "^7.18.6" + } + }, + "208 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@types/mocha/9.1.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@types/mocha", + "rawSpec": "^9.0.0" + } + }, + "209 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/browserstack-service/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/browserstack-service", + "rawSpec": "7.11.1" + } + }, + "210 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/cli/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/cli", + "rawSpec": "7.11.1" + } + }, + "211 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/local-runner/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/local-runner", + "rawSpec": "7.11.1" + } + }, + "212 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/mocha-framework/7.11.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/mocha-framework", + "rawSpec": "7.11.1" + } + }, + "213 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@wdio/spec-reporter/7.10.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "@wdio/spec-reporter", + "rawSpec": "7.10.1" + } + }, + "214 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/concurrently/5.3.0", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "concurrently", + "rawSpec": "^5.3.0" + } + }, + "215 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/serve/11.3.2", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "serve", + "rawSpec": "^11.3.2" + } + }, + "216 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ts-node/9.1.1", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "ts-node", + "rawSpec": "^9.1.1" + } + }, + "217 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": "packages/dashboard-e2e", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "218 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/eslint-plugin/4.33.0", + "wanted": { + "dependentId": ".", + "name": "@typescript-eslint/eslint-plugin", + "rawSpec": "^4.33.0" + } + }, + "219 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/@typescript-eslint/parser/4.33.0", + "wanted": { + "dependentId": ".", + "name": "@typescript-eslint/parser", + "rawSpec": "^4.33.0" + } + }, + "220 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint/7.32.0", + "wanted": { + "dependentId": ".", + "name": "eslint", + "rawSpec": "^7.32.0" + } + }, + "221 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react/7.30.1", + "wanted": { + "dependentId": ".", + "name": "eslint-plugin-react", + "rawSpec": "^7.30.1" + } + }, + "222 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eslint-plugin-react-hooks/4.6.0", + "wanted": { + "dependentId": ".", + "name": "eslint-plugin-react-hooks", + "rawSpec": "^4.6.0" + } + }, + "223 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/husky/8.0.1", + "wanted": { + "dependentId": ".", + "name": "husky", + "rawSpec": "^8.0.1" + } + }, + "224 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/lint-staged/10.5.4", + "wanted": { + "dependentId": ".", + "name": "lint-staged", + "rawSpec": "^10.5.4" + } + }, + "225 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/prettier/2.7.1", + "wanted": { + "dependentId": ".", + "name": "prettier", + "rawSpec": "^2.7.1" + } + }, + "226 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/pyright/1.1.257", + "wanted": { + "dependentId": ".", + "name": "pyright", + "rawSpec": "^1.1.257" + } + }, + "227 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/typescript/4.4.4", + "wanted": { + "dependentId": ".", + "name": "typescript", + "rawSpec": "~4.4.4" + } + }, + "228 debug pnpm:_dependency_resolved": { + "resolution": "link:../rmf-models", + "wanted": { + "dependentId": "packages/api-client", + "name": "rmf-models", + "rawSpec": "workspace:*" + } + }, + "229 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/react-components", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "230 debug pnpm:_dependency_resolved": { + "resolution": "link:../rmf-models", + "wanted": { + "dependentId": "packages/react-components", + "name": "rmf-models", + "rawSpec": "workspace:*" + } + }, + "231 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/rmf-auth", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "232 debug pnpm:_dependency_resolved": { + "resolution": "link:../api-client", + "wanted": { + "dependentId": "packages/dashboard", + "name": "api-client", + "rawSpec": "workspace:*" + } + }, + "233 debug pnpm:_dependency_resolved": { + "resolution": "link:../react-components", + "wanted": { + "dependentId": "packages/dashboard", + "name": "react-components", + "rawSpec": "workspace:*" + } + }, + "234 error pnpm": { + "code": "ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE", + "pkgsStack": [], + "err": { + "name": "pnpm", + "message": "In : No matching version found for pipenv-install@* inside the workspace", + "code": "ERR_PNPM_NO_MATCHING_VERSION_INSIDE_WORKSPACE", + "stack": "pnpm: In : No matching version found for pipenv-install@* inside the workspace\n at tryResolveFromWorkspace (/snapshot/dist/pnpm.cjs)\n at resolveNpm (/snapshot/dist/pnpm.cjs)\n at Object.resolve (/snapshot/dist/pnpm.cjs)\n at /snapshot/dist/pnpm.cjs\n at run (/snapshot/dist/pnpm.cjs)\n at PQueue._tryToStartAnother (/snapshot/dist/pnpm.cjs)\n at /snapshot/dist/pnpm.cjs\n at new Promise ()\n at PQueue.add (/snapshot/dist/pnpm.cjs)\n at resolveAndFetch (/snapshot/dist/pnpm.cjs)" + } + } +} \ No newline at end of file diff --git a/packages/api-server/.venv_local/.gitignore b/packages/api-server/.venv_local/.gitignore deleted file mode 100644 index 593bcf0e8..000000000 --- a/packages/api-server/.venv_local/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -!.gitignore -* diff --git a/packages/api-server/README.md b/packages/api-server/README.md index 7ff66c08f..bcb47f082 100644 --- a/packages/api-server/README.md +++ b/packages/api-server/README.md @@ -1,10 +1,10 @@ # Setup -If not already done so, [bootstrap](../../README.md#bootstrap) the project, you can use +If not already done so, [install dependencies](../../README.md#Install-dependencies), you can use ```bash -scripts/bootstrap.sh api-server +pnpm install -w --filter api-server... ``` -to bootstrap only this package. +to install dependencies for only this package. # Run the server diff --git a/packages/api-server/api_server/app.py b/packages/api-server/api_server/app.py index 58b739c7a..1d7bdd658 100644 --- a/packages/api-server/api_server/app.py +++ b/packages/api-server/api_server/app.py @@ -129,7 +129,7 @@ def on_signal(sig, frame): elif sig == signal.SIGTERM and callable(prev_sigterm): prev_sigterm(sig, frame) - if threading.currentThread() is threading.main_thread(): + if threading.current_thread() is threading.main_thread(): prev_sigint = signal.signal(signal.SIGINT, on_signal) prev_sigterm = signal.signal(signal.SIGTERM, on_signal) diff --git a/packages/api-server/api_server/routes/fleets.py b/packages/api-server/api_server/routes/fleets.py index c24bc5297..d1837e543 100644 --- a/packages/api-server/api_server/routes/fleets.py +++ b/packages/api-server/api_server/routes/fleets.py @@ -7,6 +7,7 @@ from api_server.fast_io import FastIORouter, SubscriptionRequest from api_server.models import FleetLog, FleetState from api_server.repositories import FleetRepository, fleet_repo_dep +from api_server.repositories.tasks import TaskRepository from api_server.rmf_io import fleet_events router = FastIORouter(tags=["Fleets"]) @@ -33,10 +34,11 @@ async def get_fleet_state(name: str, repo: FleetRepository = Depends(fleet_repo_ @router.sub("/{name}/state", response_model=FleetState) async def sub_fleet_state(req: SubscriptionRequest, name: str): user = sio_user(req) + repo = FleetRepository(user) obs = fleet_events.fleet_states.pipe( rxops.filter(lambda x: cast(FleetState, x).name == name) ) - fleet_state = await get_fleet_state(name, FleetRepository(user)) + fleet_state = await repo.get_fleet_state(name) if fleet_state: return obs.pipe(rxops.start_with(fleet_state)) return obs diff --git a/packages/api-server/api_server/routes/test_fleets.py b/packages/api-server/api_server/routes/test_fleets.py index a1ee1d112..7f15bdd64 100644 --- a/packages/api-server/api_server/routes/test_fleets.py +++ b/packages/api-server/api_server/routes/test_fleets.py @@ -1,64 +1,45 @@ -from uuid import uuid4 - from api_server.models import FleetLogUpdate, FleetStateUpdate from api_server.test import AppFixture, make_fleet_log, make_fleet_state class TestFleetsRoute(AppFixture): - @classmethod - def setUpClass(cls): - super().setUpClass() - names = [uuid4() for _ in range(2)] - cls.fleet_states = [make_fleet_state(f"test_{x}") for x in names] - cls.fleet_logs = [make_fleet_log(f"test_{x}") for x in names] - - with cls.client.websocket_connect("/_internal") as ws: - for x in cls.fleet_states: - ws.send_text(FleetStateUpdate(type="fleet_state_update", data=x).json()) - for x in cls.fleet_logs: - ws.send_text(FleetLogUpdate(type="fleet_log_update", data=x).json()) - - def test_query_fleets(self): - resp = self.client.get(f"/fleets?fleet_name={self.fleet_states[0].name}") - self.assertEqual(200, resp.status_code) - resp_json = resp.json() - self.assertEqual(2, len(resp_json)) - self.assertEqual(self.fleet_states[0].name, resp_json[0]["name"]) - - def test_get_fleet_state(self): - resp = self.client.get(f"/fleets/{self.fleet_states[0].name}/state") - self.assertEqual(200, resp.status_code) - state = resp.json() - self.assertEqual(self.fleet_states[0].name, state["name"]) - - def test_sub_fleet_state(self): - fleet = self.fleet_states[0].name - gen = self.subscribe_sio(f"/fleets/{fleet}/state") + def test_fleet_states(self): + # subscribe to fleet states + fleet_state = make_fleet_state() + gen = self.subscribe_sio(f"/fleets/{fleet_state.name}/state") with self.client.websocket_connect("/_internal") as ws: ws.send_text( - FleetStateUpdate( - type="fleet_state_update", data=self.fleet_states[0] - ).json() + FleetStateUpdate(type="fleet_state_update", data=fleet_state).json() ) msg = next(gen) - self.assertEqual(fleet, msg.name) # type: ignore + self.assertEqual(fleet_state.name, msg.name) # type: ignore - def test_get_fleet_log(self): - # Since there are no sample fleet logs, we cannot check the log contents - resp = self.client.get(f"/fleets/{self.fleet_logs[0].name}/log") + # get fleet state + resp = self.client.get(f"/fleets/{fleet_state.name}/state") self.assertEqual(200, resp.status_code) - self.assertEqual(self.fleet_logs[0].name, resp.json()["name"]) + state = resp.json() + self.assertEqual(fleet_state.name, state["name"]) - def test_sub_fleet_log(self): - fleet = self.fleet_logs[0].name - gen = self.subscribe_sio(f"/fleets/{fleet}/log") + # query fleets + resp = self.client.get(f"/fleets?fleet_name={fleet_state.name}") + self.assertEqual(200, resp.status_code) + resp_json = resp.json() + self.assertEqual(1, len(resp_json)) + self.assertEqual(fleet_state.name, resp_json[0]["name"]) + + def test_fleet_logs(self): + fleet_log = make_fleet_log() + gen = self.subscribe_sio(f"/fleets/{fleet_log.name}/log") with self.client.websocket_connect("/_internal") as ws: - ws.send_text( - FleetLogUpdate(type="fleet_log_update", data=self.fleet_logs[0]).json() - ) + ws.send_text(FleetLogUpdate(type="fleet_log_update", data=fleet_log).json()) msg = next(gen) - self.assertEqual(fleet, msg.name) # type: ignore + self.assertEqual(fleet_log.name, msg.name) # type: ignore + + # Since there are no sample fleet logs, we cannot check the log contents + resp = self.client.get(f"/fleets/{fleet_log.name}/log") + self.assertEqual(200, resp.status_code) + self.assertEqual(fleet_log.name, resp.json()["name"]) diff --git a/packages/api-server/api_server/test/test_data.py b/packages/api-server/api_server/test/test_data.py index 85061f102..4fa979e06 100644 --- a/packages/api-server/api_server/test/test_data.py +++ b/packages/api-server/api_server/test/test_data.py @@ -1,4 +1,5 @@ import json +from uuid import uuid4 from rmf_building_map_msgs.msg import Door as RmfDoor from rmf_dispenser_msgs.msg import DispenserState as RmfDispenserState @@ -98,12 +99,12 @@ def make_ingestor_state(guid: str = "test_ingestor") -> IngestorState: ) -def make_fleet_state(name: str = "test_fleet") -> FleetState: - return FleetState(name=name, robots={}) +def make_fleet_state() -> FleetState: + return FleetState(name=str(uuid4()), robots={}) -def make_fleet_log(name: str = "test_fleet") -> FleetLog: - return FleetLog(name=name, log=[], robots={}) +def make_fleet_log() -> FleetLog: + return FleetLog(name=str(uuid4()), log=[], robots={}) def make_task_state(task_id: str = "test_task") -> TaskState: diff --git a/packages/api-server/api_server/test/test_fixtures.py b/packages/api-server/api_server/test/test_fixtures.py index 12ac90f26..ae0b75126 100644 --- a/packages/api-server/api_server/test/test_fixtures.py +++ b/packages/api-server/api_server/test/test_fixtures.py @@ -103,12 +103,11 @@ async def handle_resp(emit_room, msg, *_args, **_kwargs): mock_sio.emit.side_effect = handle_resp - loop = asyncio.get_event_loop() - loop.run_until_complete( - on_sio_connect("test", {}, {"token": self.client.token(user)}) + self.client.portal.call( + on_sio_connect, "test", {}, {"token": self.client.token(user)} ) # pylint: disable=protected-access - loop.run_until_complete(app._on_subscribe("test", {"room": room})) + self.client.portal.call(app._on_subscribe, "test", {"room": room}) yield @@ -120,11 +119,11 @@ async def wait_for_msgs(): try: while True: - yield loop.run_until_complete( - asyncio.wait_for(wait_for_msgs(), 5) + yield self.client.portal.call( + asyncio.wait_for, wait_for_msgs(), 5 ) finally: - loop.run_until_complete(app._on_disconnect("test")) + self.client.portal.call(app._on_disconnect, "test") gen = impl() next(gen) diff --git a/packages/api-server/generate-models.sh b/packages/api-server/generate-models.sh index 45d64c833..f2b72f630 100755 --- a/packages/api-server/generate-models.sh +++ b/packages/api-server/generate-models.sh @@ -6,7 +6,7 @@ RMF_BUILDING_MAP_MSGS_VER=c5e0352e2dfd3d11e4d292a1c2901cad867c1441 RMF_INTERNAL_MSGS_VER=0c237e1758872917661879975d7dc0acf5fa518c RMF_API_MSGS_VER=91295892192d24ec73c9a1c6fa54334963586784 RMF_ROS2_VER=bf038461b5b0fb7d4594461a724bc9e5e7cb97c6 -CODEGEN_VER=0.11.19 +CODEGEN_VER=$(datamodel-codegen --version) cd "$(dirname $0)" source ../../scripts/rmf-helpers.sh @@ -62,12 +62,6 @@ EOF pipenv run isort api_server/models/ros_pydantic pipenv run black api_server/models/ros_pydantic -# install datamodel-codegen -if [[ ! -d .venv_local/lib ]]; then - python3 -m venv .venv_local -fi -bash -c ". .venv_local/bin/activate && pip3 install wheel && pip3 install 'datamodel-code-generator==${CODEGEN_VER}'" - generate_from_json_schema() { input=$1 output=$2 @@ -76,7 +70,7 @@ generate_from_json_schema() { rm -rf "$output" mkdir -p "$output" - bash -c ". .venv_local/bin/activate && datamodel-codegen --disable-timestamp --input-file-type jsonschema --enum-field-as-literal one --input "$input" --output \"$output\"" + bash -c "datamodel-codegen --disable-timestamp --input-file-type jsonschema --enum-field-as-literal one --input "$input" --output \"$output\"" cat << EOF > "$output/version.py" # THIS FILE IS GENERATED version = { diff --git a/packages/api-server/package.json b/packages/api-server/package.json index 350730865..0ed373a6a 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -4,16 +4,17 @@ "description": "dummy package", "private": true, "scripts": { - "prepack": "../../scripts/nws.sh build -d && pipenv run python setup.py bdist_wheel", - "restart": "../../scripts/nws.sh build -d && RMF_API_SERVER_CONFIG=sqlite_local_config.py pipenv run python -m api_server", - "start": "../../scripts/nws.sh build -d && rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=sqlite_local_config.py pipenv run python -m api_server", - "start:psql": "../../scripts/nws.sh build -d && rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=psql_local_config.py pipenv run python -m api_server", - "test": "../../scripts/nws.sh build -d && pipenv run python scripts/test.py", - "test:cov": "../../scripts/nws.sh build -d && pipenv run python -m coverage run scripts/test.py", - "test:report": "pipenv run python -m coverage html && xdg-open htmlcov/index.html", - "lint": "pipenv run pyright && pipenv run pylint api_server --ignore=ros_pydantic,rmf_api" + "prepack": "../../scripts/pipenv run python setup.py bdist_wheel", + "restart": "RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../scripts/pipenv run python -m api_server", + "start": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=sqlite_local_config.py ../../scripts/pipenv run python -m api_server", + "start:psql": "rm -rf run && mkdir -p run && RMF_API_SERVER_CONFIG=psql_local_config.py ../../scripts/pipenv run python -m api_server", + "test": "../../scripts/pipenv run python scripts/test.py", + "test:cov": "../../scripts/pipenv run python -m coverage run scripts/test.py", + "test:report": "../../scripts/pipenv run python -m coverage html && xdg-open htmlcov/index.html", + "lint": "../../scripts/pipenv run pyright && ../../scripts/pipenv run pylint api_server --ignore=ros_pydantic,rmf_api", + "generate-models": "../../scripts/pipenv run generate-models.sh" }, "devDependencies": { - "pipenv-install": "file:../../pipenv-install" + "pipenv-install": "workspace:*" } } diff --git a/packages/api-server/scripts/test.py b/packages/api-server/scripts/test.py index c4ae4da24..4acdf5e90 100644 --- a/packages/api-server/scripts/test.py +++ b/packages/api-server/scripts/test.py @@ -8,6 +8,7 @@ from api_server.test import test_client +test_client.client() result = unittest.main(module=None, exit=False) test_client.shutdown() exit(1 if not result.result.wasSuccessful() else 0) diff --git a/packages/api-server/setup.py b/packages/api-server/setup.py index 237dab9e7..6cedded18 100644 --- a/packages/api-server/setup.py +++ b/packages/api-server/setup.py @@ -16,20 +16,21 @@ "Programming Language :: Python", "Topic :: Software Development", ], + python_requires="~=3.10.4", install_requires=[ - "fastapi~=0.65.2", - "aiofiles~=0.6.0", - "uvicorn[standard]~=0.16.0", - "python-socketio~=5.1", - "rx~=3.1", - "tortoise-orm~=0.17.4", - "pyjwt[crypto]~=2.0", - "pydantic~=1.8", + "fastapi~=0.78.0", + "aiofiles~=0.8.0", + "uvicorn[standard]~=0.18.2", + "python-socketio~=5.7", + "rx~=3.2", + "tortoise-orm~=0.18.1", + "pyjwt[crypto]~=2.4", + "pydantic~=1.9", ], extras_require={ "postgres": ["asyncpg~=0.25.0"], - "mysql": ["aiomysql~=0.0.21"], - "maria": ["aiomysql~=0.0.21"], + "mysql": ["aiomysql~=0.1.1"], + "maria": ["aiomysql~=0.1.1"], }, entry_points={ "console_scripts": [ diff --git a/packages/dashboard-e2e/package.json b/packages/dashboard-e2e/package.json index 4ef04b6ce..9c9109ecb 100644 --- a/packages/dashboard-e2e/package.json +++ b/packages/dashboard-e2e/package.json @@ -6,12 +6,13 @@ "test": "tests" }, "scripts": { - "start": "../../scripts/nws.sh build -d && node scripts/start.js", + "start": "node scripts/start.js", "start:rmf-server": "npm --prefix ../api-server start", - "test": "../../scripts/nws.sh build -d && node scripts/test-e2e.js", + "test": "node scripts/test-e2e.js", "test:dev": "E2E_DASHBOARD_URL=http://localhost:3000 RMF_LAUNCH_MODE=none wdio" }, "devDependencies": { + "@babel/core": "^7.18.6", "@types/mocha": "^9.0.0", "@wdio/browserstack-service": "7.11.1", "@wdio/cli": "7.11.1", diff --git a/packages/dashboard-e2e/scripts/test-e2e.js b/packages/dashboard-e2e/scripts/test-e2e.js index 2bf5001e5..c0de42b29 100644 --- a/packages/dashboard-e2e/scripts/test-e2e.js +++ b/packages/dashboard-e2e/scripts/test-e2e.js @@ -5,7 +5,7 @@ const path = require('path'); process.env.RMF_DASHBOARD_RESOURCES_FILE = path.resolve(`${__dirname}/../dashboard-resources.json`); execSync('cd ../dashboard && npm run setup', { stdio: 'inherit' }); -execSync('npm --prefix ../dashboard run build', { stdio: 'inherit' }); +execSync('pnpm run --filter {.}^... build build', { stdio: 'inherit' }); // wrap in double quotes to support args with spaces const wdioArgs = process.argv diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index c1280c857..77a711d1b 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -4,23 +4,23 @@ "private": true, "scripts": { "analyze": "source-map-explorer 'build/static/js/*.js'", - "start": "../../scripts/nws.sh build -d && concurrently npm:start:rmf-server npm:start:react", - "start:sim": "../../scripts/nws.sh build -d && concurrently npm:start:rmf-server npm:start:rmf npm:start:react", - "start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml npm run start:sim", - "start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml npm run start:sim", + "start": "pnpm run --filter {.}^... build && concurrently npm:start:rmf-server npm:start:react", + "start:sim": "concurrently npm:start:rmf-server npm:start:rmf npm:start:react", + "start:clinic": "RMF_DASHBOARD_DEMO_MAP=clinic.launch.xml pnpm run start:sim", + "start:airport": "RMF_DASHBOARD_DEMO_MAP=airport_terminal.launch.xml pnpm run start:sim", "start:react": "react-scripts start", "start:rmf": "node scripts/start-rmf.js", "start:rmf-server": "RMF_SERVER_USE_SIM_TIME=true npm --prefix ../api-server start", "start:rmf-server:psql": "RMF_SERVER_USE_SIM_TIME=true npm run --prefix ../api-server start:psql", - "build": "../../scripts/nws.sh build -d && react-scripts build", - "test": "../../scripts/nws.sh build -d && react-scripts test", - "test:coverage": "npm run test -- --coverage --watchAll=false", + "build": "react-scripts build", + "test": "react-scripts test", + "test:coverage": "pnpm test -- --coverage --watchAll=false", "test:e2e": "cd e2e && npm test", - "test:e2e:dev": "cd e2e && npm run test:dev", + "test:e2e:dev": "cd e2e && pnpm run test:dev", "eject": "react-scripts eject", "setup": "node ./scripts/setup/setup.js", "storybook": "start-storybook -p 9009 -s public -s src/stories/static", - "build:storybook": "../../scripts/nws.sh build -d && build-storybook -s public -s src/stories/static" + "build:storybook": "build-storybook -s public -s src/stories/static" }, "eslintConfig": { "extends": "react-app" @@ -37,56 +37,70 @@ "last 1 safari version" ] }, - "devDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", + "dependencies": { "@fontsource/roboto": "^4.3.0", "@fortawesome/fontawesome-svg-core": "^1.2.30", "@fortawesome/free-solid-svg-icons": "^5.14.0", "@fortawesome/react-fontawesome": "^0.1.11", + "@mui/icons-material": "^5.8.3", "@mui/material": "^5.8.3", - "@mui/styles": "^5.8.3", - "@storybook/addon-actions": "^6.5.8", - "@storybook/addon-essentials": "^6.5.8", - "@storybook/addon-links": "^6.5.8", - "@storybook/preset-create-react-app": "^3.2.0", - "@storybook/react": "^6.5.8", - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.2.3", - "@testing-library/react-hooks": "^5.0.3", - "@testing-library/user-event": "^12.1.9", + "@mui/system": "^5.8.3", "@types/debug": "^4.1.5", - "@types/jest": "^26.0.13", + "@types/leaflet": "^1.5.17", "@types/react": "^17.0.19", "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", "@types/react-leaflet": "^2.5.2", "@types/react-router": "^5.1.7", "@types/react-router-dom": "^5.1.7", - "@types/reactour": "^1.17.1", - "api-client": "file:../api-client", - "api-server": "file:../api-server", + "ajv": "^8.10.0", + "api-client": "workspace:*", "axios": "^0.21.1", - "canvas": "^2.6.1", - "chalk": "^4.1.0", - "concurrently": "^5.3.0", + "date-fns": "^2.21.3", "debug": "^4.2.0", "eventemitter3": "^4.0.7", - "inquirer": "^8.1.2", "keycloak-js": "^11.0.2", + "leaflet": "^1.7.1", "node-vibrant": "^3.1.6", "react": "^17.0.2", - "react-components": "file:../react-components", + "react-components": "workspace:*", "react-customizable-progressbar": "^1.0.3", "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", + "react-leaflet": "^2.7.0", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", + "rmf-auth": "workspace:*", + "rmf-models": "workspace:*", + "rxjs": "^7.5.5" + }, + "devDependencies": { + "@babel/core": "^7.18.6", + "@storybook/addon-actions": "^6.5.8", + "@storybook/addon-essentials": "^6.5.8", + "@storybook/addon-links": "^6.5.8", + "@storybook/node-logger": "^6.5.9", + "@storybook/preset-create-react-app": "^3.2.0", + "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.2.3", + "@testing-library/react-hooks": "^5.0.3", + "@testing-library/user-event": "^12.1.9", + "@types/jest": "^26.0.13", + "api-server": "file:../api-server", + "canvas": "^2.6.1", + "chalk": "^4.1.0", + "concurrently": "^5.3.0", + "inquirer": "^8.1.2", + "react-refresh": "^0.9", "react-scripts": "^4.0.3", - "rmf-auth": "file:../rmf-auth", - "rmf-models": "file:../rmf-models", + "require-from-string": "^2.0.2", "source-map-explorer": "^2.5.2", "styled-components": "^4.4.1", "ts-node": "^9.1.1", - "typescript": "~4.4.4" + "typescript": "~4.4.4", + "webpack": "^4" }, "jest": { "collectCoverageFrom": [ @@ -99,9 +113,5 @@ "!**/stories/**", "!**/tests/**" ] - }, - "dependencies": { - "ajv": "^8.10.0", - "rxjs": "^7.5.5" } } diff --git a/packages/react-components/karma.conf.js b/packages/react-components/karma.conf.js index 13d0791e9..2bea83d55 100644 --- a/packages/react-components/karma.conf.js +++ b/packages/react-components/karma.conf.js @@ -76,7 +76,14 @@ module.exports = (config) => { // List of plugins to load. A plugin can be a string (in which case it will be required by // Karma or an inlined plugin - Object. By default, Karma loads all sibling NPM modules which // have a name starting with karma-*. - // plugins: [], + plugins: [ + 'karma-browserstack-launcher', + 'karma-chrome-launcher', + 'karma-coverage', + 'karma-jasmine', + 'karma-source-map-support', + 'karma-webpack', + ], // test results reporter to use // possible values: 'dots', 'progress' diff --git a/packages/react-components/lib/index.ts b/packages/react-components/lib/index.ts index 08c03b33d..4615c7996 100644 --- a/packages/react-components/lib/index.ts +++ b/packages/react-components/lib/index.ts @@ -1,7 +1,9 @@ +import '@emotion/styled'; import '@fontsource/roboto/300.css'; import '@fontsource/roboto/400.css'; import '@fontsource/roboto/500.css'; import '@fontsource/roboto/700.css'; +import '@mui/system'; export * from './appbar-tab'; export * from './color-manager'; diff --git a/packages/react-components/lib/workcells/workcell-table.tsx b/packages/react-components/lib/workcells/workcell-table.tsx index 095ff1fc9..e931c8686 100644 --- a/packages/react-components/lib/workcells/workcell-table.tsx +++ b/packages/react-components/lib/workcells/workcell-table.tsx @@ -1,7 +1,7 @@ import { styled, Table, TableBody, TableHead, TableRow } from '@mui/material'; import clsx from 'clsx'; import React from 'react'; -import AutoSizer, { AutoSizerProps } from 'react-virtualized-auto-sizer'; +import AutoSizer, { AutoSizerProps, Size } from 'react-virtualized-auto-sizer'; import { FixedSizeList, ListChildComponentProps } from 'react-window'; import { DispenserState as RmfDispenserState } from 'rmf-models'; import { Workcell, WorkcellState } from '.'; @@ -193,7 +193,7 @@ export const WorkcellTable = ({ workcells, workcellStates }: WorkcellTableProps) const { fixedTableCell } = useFixedTableCellStylesClasses; return ( - {({ width }) => { + {({ width }: Size) => { return ( diff --git a/packages/react-components/package.json b/packages/react-components/package.json index 659f98d89..f519ef357 100644 --- a/packages/react-components/package.json +++ b/packages/react-components/package.json @@ -2,15 +2,15 @@ "name": "react-components", "version": "0.0.1", "description": "", - "main": "dist/lib/index.js", + "main": "dist/index.js", "scripts": { - "build": "../../scripts/nws.sh build -d && tsc --build", - "build:storybook": "npm run build && build-storybook -s test-data", - "build:watch": "npm run build -- --watch", + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "tsc --build --watch", "clean": "tsc --build --clean", "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", - "prepack": "npm run clean && npm run lint && npm run build && npm run test && cp package.json dist/", - "start": "npm run build && start-storybook -p 6006 -s test-data", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm run test", + "start": "pnpm run --filter {.}^... build && start-storybook -p 6006 -s test-data", "test": "karma start karma.conf.js", "test:coverage": "karma start karma.conf.js --coverage" }, @@ -19,27 +19,24 @@ "dependencies": { "@date-io/core": "^2.11.0", "@date-io/date-fns": "^2.11.0", - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@fontsource/roboto": "^4.3.0", + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", "@mui/icons-material": "^5.8.3", "@mui/lab": "5.0.0-alpha.86", "@mui/styles": "^5.8.3", "@mui/x-data-grid": "^5.12.1", "@mui/x-date-pickers": "5.0.0-alpha.6", "@types/crc": "^3.4.0", - "@types/leaflet": "^1.5.17", "@types/rbush": "^3.0.0", "@types/react-grid-layout": "^1.3.2", "@types/react-leaflet": "^2.5.2", "@types/shallowequal": "^1.1.1", - "api-client": "*", + "api-client": "workspace:*", "clsx": "^1.1.1", "crc": "^3.8.0", "date-fns": "^2.21.3", "debug": "^4.2.0", "eventemitter3": "^4.0.7", - "leaflet": "^1.7.1", "node-vibrant": "^3.1.6", "rbush": "^3.0.1", "react-customizable-progressbar": "^1.0.3", @@ -47,23 +44,29 @@ "react-leaflet": "^2.7.0", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6", - "rmf-models": "*", + "rmf-models": "workspace:*", "shallowequal": "^1.1.0" }, "devDependencies": { + "@babel/core": "^7.18.6", + "@fontsource/roboto": "^4.3.0", "@jsdevtools/coverage-istanbul-loader": "^3.0.5", "@mui/material": "^5.8.3", + "@mui/system": "^5.8.3", "@storybook/addon-actions": "^6.5.8", "@storybook/addon-essentials": "^6.5.8", "@storybook/addon-links": "^6.5.8", "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", "@testing-library/react": "^11.2.3", "@testing-library/react-hooks": "^5.0.3", "@testing-library/user-event": "^12.1.9", "@types/debug": "^4.1.5", "@types/jasmine": "^3.8.2", + "@types/leaflet": "^1.5.17", "@types/react": "^17.0.19", "@types/react-dom": "^17.0.9", + "@types/react-grid-layout": "^1.3.2", "@types/react-router": "^5.1.7", "@types/react-router-dom": "^5.1.7", "@types/react-virtualized-auto-sizer": "^1.0.1", @@ -71,9 +74,12 @@ "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "concurrently": "^5.3.0", + "css-loader": "^5", + "date-fns": "^2.21.3", "eslint": "^7.26.0", "eslint-plugin-react": "^7.21.4", "eslint-plugin-react-hooks": "^4.1.2", + "file-loader": "^6.2.0", "jasmine": "^3.6.6", "karma": "^6.3.20", "karma-browserstack-launcher": "^1.6.0", @@ -90,15 +96,19 @@ "react-leaflet": "^2.7.0", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", + "style-loader": "^2", "ts-loader": "^8.1.0", "typescript": "~4.4.4", "webpack": "^4.46.0", "webpack-cli": "^4.8.0" }, "peerDependencies": { + "@fontsource/roboto": "^4.3.0", "@mui/material": "^5.8.3", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-grid-layout": "^1.3.4", "react-router": "^5.2.0", "react-router-dom": "^5.2.0" } diff --git a/packages/react-components/tsconfig.json b/packages/react-components/tsconfig.json index 4240b4fb5..1de0a87d2 100644 --- a/packages/react-components/tsconfig.json +++ b/packages/react-components/tsconfig.json @@ -14,8 +14,7 @@ "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "react", - "composite": true + "jsx": "react" }, "include": ["lib/"], "exclude": ["**/*.spec.*", "**/*.stories.*"] diff --git a/packages/reporting-e2e/.eslintrc.js b/packages/reporting-e2e/.eslintrc.js deleted file mode 100644 index 933322cd0..000000000 --- a/packages/reporting-e2e/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - extends: ['../../.eslintrc.js'], - globals: { - browser: 'readonly', - }, -}; diff --git a/packages/reporting-e2e/.gitignore b/packages/reporting-e2e/.gitignore deleted file mode 100644 index 15105c597..000000000 --- a/packages/reporting-e2e/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/static/ -/build -/artifacts \ No newline at end of file diff --git a/packages/reporting-e2e/README.md b/packages/reporting-e2e/README.md deleted file mode 100644 index df011cc28..000000000 --- a/packages/reporting-e2e/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# Running with Keycloak - -The tests are run with keycloak as the authentication server and we use docker and docker-compose to simplify the setup of keycloak. - -## Ubuntu 20.04 - -Install docker and docker-compose -```bash -sudo apt update && sudo apt install docker.io docker-compose -``` - -If you're using GNOME or KDE, there will be a pop-up window to ask for privilege escalation when running the Docker container which runs Keycloak, the authentication mechanism we are currently using. -If you're using `i3` or other "unusual" window managers, this pop-up may not occur, which can be confusing since a password prompt can be easily lost in the console text stream. -You can add yourself to the `docker` group to allow containers to start without requesting your password: -``` -sudo usermod -aG docker $USER -``` -After issuing this command, you may need to logout/login or restart your system depending on your OS/environment. - -Keep in mind that this convenience has security implications. This tradeoff is described in more detail in the Docker documentation: -https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user - -## Others - -See - -* [docker](https://docs.docker.com/engine/install/ubuntu/) -* [docker-compose](https://docs.docker.com/compose/install/) - -# Settings - -There are some environment variables that control how the test runs. - -| Key | Description | -|---|---| -| E2E_DOCKER_NETWORK | _(string)_ The network that services uses, defaults to `rmf-web_default` | -| E2E_NO_AUTH | _(bool)_ Do not launch the authentication provider service | -| E2E_NO_REPORTING | _(bool)_ Do not launch the reporting ui server | -| E2E_NO_REPORTING_SERVER | _(bool)_ Do not launch the reporting server | -| E2E_USER | _(string)_ The user to login with | -| E2E_PASSWORD | _(string)_ The password to login with | -| E2E_REPORTING_URL | _(string)_ Base url where the dashboard is hosted | - -Boolean values can be 0/1/true/false. - -There are also some environment variables the test runner sets by default - -| Key | Default Value | -|---|---| -| REACT_APP_AUTH_PROVIDER | keycloak | -| REACT_APP_KEYCLOAK_CONFIG | { "realm": "master", "clientId": "reporting", "url": "http://localhost:8088/auth" } | -| E2E_USER | admin | -| E2E_PASSWORD | admin | -| E2E_REPORTING_URL | http://localhost:5000 | - -You can overwrite them by setting them in your environment variables. - -# E2E workflow in CI - -NOTE: This section only pertains to running the e2e tests in github workflows. - -This is to document the flow and interaction of the e2e services in the github environment when: - -- starting up the services -- running the tests - -## Starting up the services - -Below is a diagram representing the flow of commands when running `npm run test` - -![Flow of commands diagram](docs/resources/reporting-e2e-process.png) - -## Container and network interactions - -The key difference between running the tests locally and in github workflows is that in github, the tests are ran from inside a container with docker-beside-docker. So, the docker commands connect to the host daemon, this causes that the "localhost" in GitHub refers to the container. "Localhost" in local runs refers to the host (where the docker daemon is running). Tests in CI runs wouldn't be able to connect to the auth service with "localhost" because when a port is "exposed" or "published" is mapped to the host and not the container. - -Instead of host <-> container communication, we will need to do container <-> container communication. This is achieved by setting `E2E_DOCKER_NETWORK` to the github workflow's network and setting `REACT_APP_KEYCLOAK_CONFIG` to point to the auth service via the container name. \ No newline at end of file diff --git a/packages/reporting-e2e/docs/resources/reporting-e2e-process.png b/packages/reporting-e2e/docs/resources/reporting-e2e-process.png deleted file mode 100644 index 2485a361f..000000000 Binary files a/packages/reporting-e2e/docs/resources/reporting-e2e-process.png and /dev/null differ diff --git a/packages/reporting-e2e/package.json b/packages/reporting-e2e/package.json deleted file mode 100644 index a78bb848d..000000000 --- a/packages/reporting-e2e/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "reporting-e2e", - "description": "", - "main": "index.js", - "directories": { - "test": "tests" - }, - "scripts": { - "start:reporting-server": "scripts/start-reporting-server.sh", - "test": "node scripts/test-e2e.js", - "test:dev": "E2E_REPORTING_URL=http://localhost:3000 RMF_LAUNCH_MODE=none wdio" - }, - "devDependencies": { - "@types/mocha": "^9.0.0", - "@wdio/cli": "7.11.1", - "@wdio/local-runner": "7.11.1", - "@wdio/mocha-framework": "7.11.1", - "@wdio/spec-reporter": "7.10.1", - "concurrently": "^5.3.0", - "node-fetch": "^2.6.1", - "reporting": "file:../reporting", - "serve": "^11.3.2", - "ts-node": "^9.1.1", - "typescript": "~4.4.4" - } -} diff --git a/packages/reporting-e2e/scripts/start-reporting-server.sh b/packages/reporting-e2e/scripts/start-reporting-server.sh deleted file mode 100755 index 8b572ef6a..000000000 --- a/packages/reporting-e2e/scripts/start-reporting-server.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -set -e; - -export PIPENV_PIPFILE=../../Pipfile - -pipenv run reporting_server diff --git a/packages/reporting-e2e/scripts/test-e2e.js b/packages/reporting-e2e/scripts/test-e2e.js deleted file mode 100644 index cfc3b06f6..000000000 --- a/packages/reporting-e2e/scripts/test-e2e.js +++ /dev/null @@ -1,48 +0,0 @@ -const concurrently = require('concurrently'); -const { execSync } = require('child_process'); - -process.env.BUILD_PATH = process.env.BUILD_PATH || '../reporting-e2e/build'; -process.env.REACT_APP_REPORTING_SERVER = - process.env.REACT_APP_REPORTING_SERVER || 'http://localhost:8002'; -process.env.E2E_REPORTING_SERVER = process.env.E2E_REPORTING_SERVER || 'http://localhost:8003'; -process.env.E2E_REPORTING_URL = process.env.E2E_REPORTING_URL || 'http://localhost:5000'; - -execSync('npm --prefix ../reporting run build', { stdio: 'inherit' }); - -// wrap in double quotes to support args with spaces -const wdioArgs = process.argv - .slice(2) - .map((arg) => `"${arg}"`) - .join(' '); - -const services = []; - -// eslint-disable-next-line no-eval -if (!eval(process.env.E2E_NO_REPORTING)) { - services.push('serve build'); -} -// eslint-disable-next-line no-eval -if (!eval(process.env.E2E_NO_REPORTING_SERVER)) { - services.push('npm run start:reporting-server'); -} - -concurrently([...services, `wdio ${wdioArgs}`], { - killOthers: ['success', 'failure'], - successCondition: 'first', -}) - .then( - function onSuccess(/* exitInfo */) { - // This code is necessary to make sure the parent terminates - // when the application is closed successfully. - process.exit(); - }, - function onFailure(/* exitInfo */) { - // This code is necessary to make sure the parent terminates - // when the application is closed because of a failure. - process.exit(); - }, - ) - .catch((e) => { - console.error(e); - process.exitCode = -1; - }); diff --git a/packages/reporting-e2e/tests/1-logs.test.ts b/packages/reporting-e2e/tests/1-logs.test.ts deleted file mode 100644 index c90ad0f26..000000000 --- a/packages/reporting-e2e/tests/1-logs.test.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { rmfData } from './mock-data'; -import fetch from 'node-fetch'; - -describe('logs', () => { - it('should store the logs correctly', async () => { - const options = { - method: 'POST', - body: JSON.stringify(rmfData), - headers: { - 'Content-Type': 'application/json', - }, - }; - - let response; - try { - const res = await fetch(`http://localhost:8003/log/rmfserver`, options); - response = await res.text(); - } catch (error) { - console.log(error); - } - - expect(response).toBe('"Logs were saved correctly"'); - }); -}); diff --git a/packages/reporting-e2e/tests/2-reporting.test.ts b/packages/reporting-e2e/tests/2-reporting.test.ts deleted file mode 100644 index 71a2b7053..000000000 --- a/packages/reporting-e2e/tests/2-reporting.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -import fetch from 'node-fetch'; -import { rmfData } from './mock-data'; -import { getReport, overwriteClick } from './utils'; - -describe('reporting interactions', () => { - before(() => overwriteClick()); - before(() => browser.url('/')); - - before(async () => { - const options = { - method: 'POST', - body: JSON.stringify(rmfData), - headers: { - 'Content-Type': 'application/json', - }, - }; - - try { - const res = await fetch(`http://localhost:8003/log/rmfserver`, options); - await res.text(); - } catch (error) { - console.log(error); - } - }); - - it('should retrieve dispenser state report', async () => { - const options = { - listOrder: 2, - elemName: 'div*=Dispensers', - reportTitle: 'h6*=Dispenser State', - }; - await getReport(options); - await expect($('h6*=Dispenser State')).toBeDisplayed(); - }); - - it('should retrieve door state report', async () => { - const options = { - listOrder: 3, - elemName: 'div*=Doors', - reportTitle: 'h6*=Door State', - }; - await getReport(options); - await expect($('h6*=Door State')).toBeDisplayed(); - }); - - it('should retrieve the fleet state report', async () => { - const options = { - listOrder: 4, - elemName: 'div*=Fleets', - reportTitle: 'h6*=Fleet State', - }; - await getReport(options); - await expect($('h6*=Fleet State')).toBeDisplayed(); - }); - - it('should retrieve the health report', async () => { - const options = { - listOrder: 5, - elemName: 'div*=Health', - reportTitle: 'h6*=Health', - }; - await getReport(options); - await expect($('h6*=Health')).toBeDisplayed(); - }); - - it('should retrieve ingestor state report', async () => { - const options = { - listOrder: 6, - elemName: 'div*=Ingestor', - reportTitle: 'h6*=Ingestor State', - }; - await getReport(options); - await expect($('h6*=Ingestor State')).toBeDisplayed(); - }); - - it('should retrieve lift state report', async () => { - const options = { - listOrder: 7, - elemName: 'div*=Lifts', - reportTitle: 'h6*=Lift State', - }; - await getReport(options); - await expect($('h6*=Lift State')).toBeDisplayed(); - }); - - it('should retrieve the task summary report', async () => { - const options = { - listOrder: 8, - elemName: 'div*=Tasks', - reportTitle: 'h6*=Task', - }; - await getReport(options); - await expect($('h6*=Task')).toBeDisplayed(); - }); -}); diff --git a/packages/reporting-e2e/tests/mock-data.ts b/packages/reporting-e2e/tests/mock-data.ts deleted file mode 100644 index 940b4a304..000000000 --- a/packages/reporting-e2e/tests/mock-data.ts +++ /dev/null @@ -1,147 +0,0 @@ -export const rmfData = [ - { - log: - 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - stream: 'stdout', - kubernetes: { - container_name: 'app-that-writes-logs', - namespace_name: 'default', - pod_name: 'app-that-writes-logs', - container_image: 'busybox:latest', - container_image_id: - 'docker-pullable://busybox@sha256:ae39a6f5c07297d7ab64dbd4f82c77c874cc6a94cea29fdec309d0992574b4f7', - pod_id: '978761c6-2a19-422f-b710-d43da2348f1f', - host: 'minikube', - master_url: 'https://10.96.0.1:443/api', - namespace_id: 'e192acd4-e6e7-46c2-8514-44a27a367749', - }, - }, - { - log: - 'INFO:app.BookKeeper.door_state:{"door_time": {"sec": 1596, "nanosec": 548000000}, "door_name": "hardware_door", "current_mode": {"value": 0}}\n', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.fleet_state:{"name": "tinyRobot", "robots": [{"name": "tinyRobot1", "model": "", "task_id": "", "seq": 3194, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1600, "nanosec": 189000000}, "x": 11.55367374420166, "y": -11.317498207092285, "yaw": -1.5998055934906006, "level_name": "L1", "index": 0}, "path": []}, {"name": "tinyRobot2", "model": "", "task_id": "", "seq": 3194, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1600, "nanosec": 189000000}, "x": 15.15751838684082, "y": -11.22861385345459, "yaw": -1.5839799642562866, "level_name": "L1", "index": 0}, "path": []}]}\n', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.door_health:{"id": "hardware_door", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.ingestor_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_ingestor", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.lift_state: {"lift_name": "test_lift", "lift_time": 0, "available_floors": ["L1", "L2"], "current_floor": "L1", "destination_floor": "L2", "door_state": 0, "motion_state": 0, "available_modes": [0], "current_mode": 0, "session_id": "test_session"}\n', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Loop0", "task_profile": {"task_id": "Loop0", "submission_time": {"sec": 131, "nanosec": 553000000}, "description": {"start_time": {"sec": 1623383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 1}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": 1, "start_name": "supplies", "finish_name": "coe"}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": ""}}}, "state": 0, "status": "test_status", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623383362, "nanosec": 348338289}, "end_time": {"sec": 1623383449, "nanosec": 79154833}, "robot_name": "tinyRobot2"}', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Delivery1", "task_profile": {"task_id": "Delivery1", "submission_time": {"sec": 132, "nanosec": 553000098}, "description": {"start_time": {"sec": 1623383487, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 2}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": "", "start_name": "", "finish_name": ""}, "delivery": {"task_id": "", "items": ["item1", "item2"], "pickup_place_name": "pantry", "pickup_dispenser": "coke_dispenser", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "lounge", "dropoff_ingestor": "ingestor", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": ""}}}, "state": 0, "status": "test_status2", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623383362, "nanosec": 348338289}, "end_time": {"sec": 1623383449, "nanosec": 79154833}, "robot_name": "tinyRobot1"}', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Clean2", "task_profile": {"task_id": "Clean2", "submission_time": {"sec": 131, "nanosec": 552120070}, "description": {"start_time": {"sec": 145383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 4}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": "", "start_name": "", "finish_name": ""}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": "cleanzone"}}}, "state": 0, "status": "test_status3", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623283162, "nanosec": 348332939}, "end_time": {"sec": 162593449, "nanosec": 79154833}, "robot_name": "tinyRobot3"}', - stream: 'stdout', - }, -]; - -export const dispenserStateData = [ - { - log: - 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - stream: 'stdout', - kubernetes: { - container_name: 'app-that-writes-logs', - namespace_name: 'default', - pod_name: 'app-that-writes-logs', - container_image: 'busybox:latest', - container_image_id: - 'docker-pullable://busybox@sha256:ae39a6f5c07297d7ab64dbd4f82c77c874cc6a94cea29fdec309d0992574b4f7', - pod_id: '978761c6-2a19-422f-b710-d43da2348f1f', - host: 'minikube', - master_url: 'https://10.96.0.1:443/api', - namespace_id: 'e192acd4-e6e7-46c2-8514-44a27a367749', - }, - }, -]; - -export const doorStateData = [ - { - log: - 'INFO:app.BookKeeper.door_state:{"door_time": {"sec": 1596, "nanosec": 548000000}, "door_name": "hardware_door", "current_mode": {"value": 0}}\n', - stream: 'stdout', - }, -]; - -export const fleetStateData = [ - { - log: - 'INFO:app.BookKeeper.fleet_state:{"name": "tinyRobot", "robots": [{"name": "tinyRobot1", "model": "", "task_id": "", "seq": 3194, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1600, "nanosec": 189000000}, "x": 11.55367374420166, "y": -11.317498207092285, "yaw": -1.5998055934906006, "level_name": "L1", "index": 0}, "path": []}, {"name": "tinyRobot2", "model": "", "task_id": "", "seq": 3194, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1600, "nanosec": 189000000}, "x": 15.15751838684082, "y": -11.22861385345459, "yaw": -1.5839799642562866, "level_name": "L1", "index": 0}, "path": []}]}\n', - stream: 'stdout', - }, -]; - -export const healthData = [ - { - log: - 'INFO:app.BookKeeper.door_health:{"id": "hardware_door", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n', - stream: 'stdout', - }, -]; - -export const ingestorData = [ - { - log: - 'INFO:app.BookKeeper.ingestor_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_ingestor", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - stream: 'stdout', - }, -]; - -export const liftsStateData = [ - { - log: - 'INFO:app.BookKeeper.lift_state: {"lift_name": "test_lift", "lift_time": 0, "available_floors": ["L1", "L2"], "current_floor": "L1", "destination_floor": "L2", "door_state": 0, "motion_state": 0, "available_modes": [0], "current_mode": 0, "session_id": "test_session"}\n', - stream: 'stdout', - }, -]; - -export const taskSummaryData = [ - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Loop0", "task_profile": {"task_id": "Loop0", "submission_time": {"sec": 131, "nanosec": 553000000}, "description": {"start_time": {"sec": 1623383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 1}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": 1, "start_name": "supplies", "finish_name": "coe"}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": ""}}}, "state": 0, "status": "test_status", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623383362, "nanosec": 348338289}, "end_time": {"sec": 1623383449, "nanosec": 79154833}, "robot_name": "tinyRobot2"}', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Delivery1", "task_profile": {"task_id": "Delivery1", "submission_time": {"sec": 132, "nanosec": 553000098}, "description": {"start_time": {"sec": 1623383487, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 2}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": "", "start_name": "", "finish_name": ""}, "delivery": {"task_id": "", "items": ["item1", "item2"], "pickup_place_name": "pantry", "pickup_dispenser": "coke_dispenser", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "lounge", "dropoff_ingestor": "ingestor", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": ""}}}, "state": 0, "status": "test_status2", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623383362, "nanosec": 348338289}, "end_time": {"sec": 1623383449, "nanosec": 79154833}, "robot_name": "tinyRobot1"}', - stream: 'stdout', - }, - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Clean2", "task_profile": {"task_id": "Clean2", "submission_time": {"sec": 131, "nanosec": 552120070}, "description": {"start_time": {"sec": 145383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 4}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": "", "start_name": "", "finish_name": ""}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": "cleanzone"}}}, "state": 0, "status": "test_status3", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623283162, "nanosec": 348332939}, "end_time": {"sec": 162593449, "nanosec": 79154833}, "robot_name": "tinyRobot3"}', - stream: 'stdout', - }, -]; - -export const singleLog = [ - { - log: - 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Clean2", "task_profile": {"task_id": "Clean2", "submission_time": {"sec": 131, "nanosec": 552120070}, "description": {"start_time": {"sec": 145383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 4}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": "", "start_name": "", "finish_name": ""}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": "cleanzone"}}}, "state": 0, "status": "test_status3", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623283162, "nanosec": 348332939}, "end_time": {"sec": 162593449, "nanosec": 79154833}, "robot_name": "tinyRobot3"}', - stream: 'stdout', - }, -]; - -export const userData = []; diff --git a/packages/reporting-e2e/tests/utils.ts b/packages/reporting-e2e/tests/utils.ts deleted file mode 100644 index 00eaec060..000000000 --- a/packages/reporting-e2e/tests/utils.ts +++ /dev/null @@ -1,85 +0,0 @@ -import fetch from 'node-fetch'; - -/** - * Overwrites the default click command to wait for animation to finish before attempting to click, - * this can fix flaky tests where the click is missed as the position changes as the animation is - * running. - */ -export function overwriteClick(): void { - browser.overwriteCommand( - 'click', - async function (this: WebdriverIO.Element, origClick) { - await this.waitForClickable(); - let prevLocation = await this.getLocation(); - await this.waitUntil(async () => { - const newLocation = await this.getLocation(); - const stablized = prevLocation.x === newLocation.x && prevLocation.y === newLocation.y; - prevLocation = newLocation; - return stablized; - }); - return origClick(); - }, - true, - ); -} - -/** - * Return a list of backspace characters. This is only used in case we want to delete characters from the Autocomplete material-ui component - */ -export function removeTextFromAutocomplete(characterNum: number): string { - const backspace = '\u0008'; - let backspaces = ''; - for (let index = 0; index < characterNum; index++) { - backspaces += backspace; - } - return backspaces; -} - -export const populateDatabase = async ( - data: { log: string; stream: string }[], -): Promise => { - const options = { - method: 'POST', - body: JSON.stringify(data), - headers: { - 'Content-Type': 'application/json', - }, - }; - - try { - const res = await fetch('http:localhost:8003/log/rmfserver', options); - return await res.json(); - } catch (error) { - return error as Error; - } -}; - -export const selectDateAndRetrieveLogs = async (): Promise => { - const datePickerIconButton = await (await $('.MuiInputBase-root')).$('.MuiIconButton-root'); - await datePickerIconButton.click(); - const prevMonthButton = (await $$('.MuiPickersCalendarHeader-iconButton'))[0]; - await prevMonthButton.click(); - const dayOneButton = await $('button=1'); - await dayOneButton.click(); - await (await $('body')).click(); - await (await $('button=Retrieve Logs')).click(); - await browser.pause(1000); -}; - -export const getReport = async (options: { - listOrder: number; - elemName: string; - reportTitle: string; -}): Promise => { - await browser.waitUntil( - async () => (await (await $('.MuiList-root')).waitForDisplayed()) === true, - ); - const targetButton = await ( - await $(`.MuiList-root .MuiListItem-root:nth-child(${options.listOrder})`) - ).$(options.elemName); - await targetButton.click(); - await selectDateAndRetrieveLogs(); - await browser.waitUntil( - async () => (await (await $(options.reportTitle)).waitForDisplayed({ timeout: 5000 })) === true, - ); -}; diff --git a/packages/reporting-e2e/tsconfig.json b/packages/reporting-e2e/tsconfig.json deleted file mode 100644 index c77ffd695..000000000 --- a/packages/reporting-e2e/tsconfig.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - // "incremental": true, /* Enable incremental compilation */ - "target": "es2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - // "noUnusedLocals": true, /* Report errors on unused locals. */ - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - "types": ["node", "webdriverio/async", "@wdio/mocha-framework", "expect-webdriverio"], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ - } -} diff --git a/packages/reporting-e2e/wdio.conf.js b/packages/reporting-e2e/wdio.conf.js deleted file mode 100644 index ee7f1b093..000000000 --- a/packages/reporting-e2e/wdio.conf.js +++ /dev/null @@ -1,291 +0,0 @@ -const path = require('path'); -const fs = require('fs'); -const os = require('os'); -const { execSync } = require('child_process'); - -const headlessArgs = process.env.CI ? ['--headless', '--disable-gpu'] : []; -const chromeArgs = [...headlessArgs]; -if (os.userInfo().uid === 0) { - chromeArgs.push('--no-sandbox'); -} - -exports.config = { - // - // ==================== - // Runner Configuration - // ==================== - // - // WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or - // on a remote machine). - runner: 'local', - // - // ================== - // Specify Test Files - // ================== - // Define which test specs should run. The pattern is relative to the directory - // from which `wdio` was called. Notice that, if you are calling `wdio` from an - // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working - // directory is where your package.json resides, so `wdio` will be called from there. - // - specs: ['tests/**/*.test.ts'], - // Patterns to exclude. - exclude: [ - // 'path/to/excluded/files' - ], - // - // ============ - // Capabilities - // ============ - // Define your capabilities here. WebdriverIO can run multiple capabilities at the same - // time. Depending on the number of capabilities, WebdriverIO launches several test - // sessions. Within your capabilities you can overwrite the spec and exclude options in - // order to group specific specs to a specific capability. - // - // First, you can define how many instances should be started at the same time. Let's - // say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have - // set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec - // files and you set maxInstances to 10, all spec files will get tested at the same time - // and 30 processes will get spawned. The property handles how many capabilities - // from the same test should run tests. - // - maxInstances: 1, - // - // If you have trouble getting all important capabilities together, check out the - // Sauce Labs platform configurator - a great tool to configure your capabilities: - // https://docs.saucelabs.com/reference/platforms-configurator - // - capabilities: [ - { - // maxInstances can get overwritten per capability. So if you have an in-house Selenium - // grid with only 5 firefox instances available you can make sure that not more than - // 5 instances get started at a time. - maxInstances: 1, - // - browserName: 'chrome', - // If outputDir is provided WebdriverIO can capture driver session logs - // it is possible to configure which logTypes to include/exclude. - // excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs - // excludeDriverLogs: ['bugreport', 'server'], - - acceptInsecureCerts: true, - - 'goog:chromeOptions': { - binary: process.env.CHROME_BIN || undefined, - // to run chrome headless the following flags are required - // (see https://developers.google.com/web/updates/2017/04/headless-chrome) - args: [...chromeArgs, '--window-size=1366,768'], - }, - }, - ], - // - // =================== - // Test Configurations - // =================== - // Define all options that are relevant for the WebdriverIO instance here - // - // Level of logging verbosity: trace | debug | info | warn | error | silent - logLevel: 'warn', - // - // Set specific log levels per logger - // loggers: - // - webdriver, webdriverio - // - @wdio/applitools-service, @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service - // - @wdio/mocha-framework, @wdio/jasmine-framework - // - @wdio/local-runner, @wdio/lambda-runner - // - @wdio/sumologic-reporter - // - @wdio/cli, @wdio/config, @wdio/sync, @wdio/utils - // Level of logging verbosity: trace | debug | info | warn | error | silent - // logLevels: { - // webdriver: 'info', - // '@wdio/applitools-service': 'info' - // }, - // - // If you only want to run your tests until a specific amount of tests have failed use - // bail (default is 0 - don't bail, run all tests). - bail: 1, - // - // Set a base URL in order to shorten url command calls. If your `url` parameter starts - // with `/`, the base url gets prepended, not including the path portion of your baseUrl. - // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url - // gets prepended directly. - baseUrl: process.env.E2E_REPORTING_URL, - // - // Default timeout for all waitFor* commands. - waitforTimeout: 10000, - // - // Default timeout in milliseconds for request - // if browser driver or grid doesn't send response - connectionRetryTimeout: 120000, - // - // Default request retries count - connectionRetryCount: 3, - // - // Test runner services - // Services take over a specific job you don't want to take care of. They enhance - // your test setup with almost no effort. Unlike plugins, they don't add new - // commands. Instead, they hook themselves up into the test process. - services: [], - - // Framework you want to run your specs with. - // The following are supported: Mocha, Jasmine, and Cucumber - // see also: https://webdriver.io/docs/frameworks.html - // - // Make sure you have the wdio adapter package for the specific framework installed - // before running any tests. - framework: 'mocha', - // - // The number of times to retry the entire specfile when it fails as a whole - // specFileRetries: 1, - // - // Whether or not retried specfiles should be retried immediately or deferred to the end of the queue - // specFileRetriesDeferred: false, - // - // Test reporter for stdout. - // The only one supported by default is 'dot' - // see also: https://webdriver.io/docs/dot-reporter.html - reporters: ['spec'], - - // - // Options to be passed to Mocha. - // See the full list at http://mochajs.org/ - mochaOpts: { - // as of wdio 6.12.1, it automatically registers ts-node, registering it again would cause conflict - // require: ['ts-node/register'], - ui: 'bdd', - timeout: 60000, - }, - // - // ===== - // Hooks - // ===== - // WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance - // it and to build services around it. You can either apply a single function or an array of - // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got - // resolved to continue. - /** - * Gets executed once before all workers get launched. - * @param {Object} config wdio configuration object - * @param {Array.} capabilities list of capabilities details - */ - // onPrepare: function (config, capabilities) { - // }, - /** - * Gets executed before a worker process is spawned and can be used to initialise specific service - * for that worker as well as modify runtime environments in an async fashion. - * @param {String} cid capability id (e.g 0-0) - * @param {[type]} caps object containing capabilities for session that will be spawn in the worker - * @param {[type]} specs specs to be run in the worker process - * @param {[type]} args object that will be merged with the main configuration once worker is initialised - * @param {[type]} execArgv list of string arguments passed to the worker process - */ - // onWorkerStart: function (cid, caps, specs, args, execArgv) { - // }, - /** - * Gets executed just before initialising the webdriver session and test framework. It allows you - * to manipulate configurations depending on the capability or spec. - * @param {Object} config wdio configuration object - * @param {Array.} capabilities list of capabilities details - * @param {Array.} specs List of spec file paths that are to be run - */ - // beforeSession: function (config, capabilities, specs) { - // }, - /** - * Gets executed before test execution begins. At this point you can access to all global - * variables like `browser`. It is the perfect place to define custom commands. - * @param {Array.} capabilities list of capabilities details - * @param {Array.} specs List of spec file paths that are to be run - */ - // before: function (capabilities, specs) { - // }, - /** - * Runs before a WebdriverIO command gets executed. - * @param {String} commandName hook command name - * @param {Array} args arguments that command would receive - */ - // beforeCommand: function (commandName, args) { - // }, - /** - * Hook that gets executed before the suite starts - * @param {Object} suite suite details - */ - // beforeSuite: function (suite) { - // }, - /** - * Function to be executed before a test (in Mocha/Jasmine) starts. - */ - // beforeTest: function (test, context) { - // }, - /** - * Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling - * beforeEach in Mocha) - */ - // beforeHook: function (test, context) { - // }, - /** - * Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling - * afterEach in Mocha) - */ - // afterHook: function (test, context, { error, result, duration, passed, retries }) { - // }, - /** - * Function to be executed after a test (in Mocha/Jasmine). - */ - afterTest: async function (test /*, context, { error, result, duration, passed, retries }*/) { - const testPath = path.relative('tests', test.file); - const artifactDir = `artifacts/${testPath}/${test.title}`; - fs.mkdirSync(artifactDir, { recursive: true }); - await browser.saveScreenshot(`${artifactDir}/end.png`); - }, - - /** - * Hook that gets executed after the suite has ended - * @param {Object} suite suite details - */ - // afterSuite: function (suite) { - // }, - /** - * Runs after a WebdriverIO command gets executed - * @param {String} commandName hook command name - * @param {Array} args arguments that command would receive - * @param {Number} result 0 - command success, 1 - command error - * @param {Object} error error object if any - */ - // afterCommand: function (commandName, args, result, error) { - // }, - /** - * Gets executed after all tests are done. You still have access to all global variables from - * the test. - * @param {Number} result 0 - test pass, 1 - test fail - * @param {Array.} capabilities list of capabilities details - * @param {Array.} specs List of spec file paths that ran - */ - // after: function (result, capabilities, specs) { - // }, - /** - * Gets executed right after terminating the webdriver session. - * @param {Object} config wdio configuration object - * @param {Array.} capabilities list of capabilities details - * @param {Array.} specs List of spec file paths that ran - */ - // afterSession: function (config, capabilities, specs) { - // }, - /** - * Gets executed after all workers got shut down and the process is about to exit. An error - * thrown in the onComplete hook will result in the test run failing. - * @param {Object} exitCode 0 - success, 1 - fail - * @param {Object} config wdio configuration object - * @param {Array.} capabilities list of capabilities details - * @param {} results object containing test results - */ - onComplete: function (/* exitCode, config, capabilities, results */) { - // FIXME: This is very dangerous. Also force killing the process is definitely not a right way to close it. - execSync('kill -9 `pgrep reporting`'); - }, - /** - * Gets executed when a refresh happens. - * @param {String} oldSessionId session ID of the old session - * @param {String} newSessionId session ID of the new session - */ - //onReload: function(oldSessionId, newSessionId) { - //} -}; diff --git a/packages/reporting-server/.coverage b/packages/reporting-server/.coverage deleted file mode 100644 index 40ada75b8..000000000 Binary files a/packages/reporting-server/.coverage and /dev/null differ diff --git a/packages/reporting-server/.coveragerc b/packages/reporting-server/.coveragerc deleted file mode 100644 index c020df653..000000000 --- a/packages/reporting-server/.coveragerc +++ /dev/null @@ -1,7 +0,0 @@ -[run] -source = - rest_server -omit = - # test files - **/test_*.py - diff --git a/packages/reporting-server/.gitignore b/packages/reporting-server/.gitignore deleted file mode 100644 index 6c816b8e7..000000000 --- a/packages/reporting-server/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -/reporting_server.egg-info -/static -/test_artifacts/ -/.coverage -/.coverage.* -/htmlcov/ -/build/ -/dist/ - diff --git a/packages/reporting-server/.pylintrc b/packages/reporting-server/.pylintrc deleted file mode 100644 index 4cc9f477f..000000000 --- a/packages/reporting-server/.pylintrc +++ /dev/null @@ -1,600 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-whitelist=pydantic - -# Specify a score threshold to be exceeded before program exits with error. -fail-under=10.0 - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore=CVS - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. -jobs=1 - -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. -limit-inference-results=100 - -# List of plugins (as comma separated values of python module names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable=print-statement, - parameter-unpacking, - unpacking-in-except, - old-raise-syntax, - backtick, - long-suffix, - old-ne-operator, - old-octal-literal, - import-star-module-level, - non-ascii-bytes-literal, - raw-checker-failed, - bad-inline-option, - locally-disabled, - file-ignored, - suppressed-message, - useless-suppression, - deprecated-pragma, - use-symbolic-message-instead, - apply-builtin, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - execfile-builtin, - file-builtin, - long-builtin, - raw_input-builtin, - reduce-builtin, - standarderror-builtin, - unicode-builtin, - xrange-builtin, - coerce-method, - delslice-method, - getslice-method, - setslice-method, - no-absolute-import, - old-division, - dict-iter-method, - dict-view-method, - next-method-called, - metaclass-assignment, - indexing-exception, - raising-string, - reload-builtin, - oct-method, - hex-method, - nonzero-method, - cmp-method, - input-builtin, - round-builtin, - intern-builtin, - unichr-builtin, - map-builtin-not-iterating, - zip-builtin-not-iterating, - range-builtin-not-iterating, - filter-builtin-not-iterating, - using-cmp-argument, - eq-without-hash, - div-method, - idiv-method, - rdiv-method, - exception-message-attribute, - invalid-str-codec, - sys-max-int, - bad-python3-import, - deprecated-string-function, - deprecated-str-translate-call, - deprecated-itertools-function, - deprecated-types-field, - next-method-defined, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, - deprecated-operator-function, - deprecated-urllib-function, - xreadlines-attribute, - deprecated-sys-function, - exception-escape, - comprehension-escape, - -# added disables - design, - similarities, - invalid-name, - missing-module-docstring, - missing-class-docstring, - missing-function-docstring, - attribute-defined-outside-init, - fixme, - logging-fstring-interpolation, - line-too-long, - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a score less than or equal to 10. You -# have access to the variables 'error', 'warning', 'refactor', and 'convention' -# which contain the number of messages in each category, as well as 'statement' -# which is the total number of statements analyzed. This score is used by the -# global evaluation report (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - -[LOGGING] - -# The type of string formatting that logging methods do. `old` means using % -# formatting, `new` is for `{}` formatting. -logging-format-style=old - -# Logging modules to check that the string format arguments are in logging -# function parameter format. -logging-modules=logging - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. -ignore-none=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis). It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - -# List of decorators that change the signature of a decorated function. -signature-mutators= - - -[BASIC] - -# Naming style matching correct argument names. -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style. -#argument-rgx= - -# Naming style matching correct attribute names. -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Bad variable names regexes, separated by a comma. If names match any regex, -# they will always be refused -bad-names-rgxs= - -# Naming style matching correct class attribute names. -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. -#class-attribute-rgx= - -# Naming style matching correct class names. -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming- -# style. -#class-rgx= - -# Naming style matching correct constant names. -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style. -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names. -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style. -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma. -good-names=i, - j, - k, - ex, - Run, - _ - -# Good variable names regexes, separated by a comma. If names match any regex, -# they will always be accepted -good-names-rgxs= - -# Include a hint for the correct naming format with invalid-name. -include-naming-hint=no - -# Naming style matching correct inline iteration names. -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. -#inlinevar-rgx= - -# Naming style matching correct method names. -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style. -#method-rgx= - -# Naming style matching correct module names. -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style. -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names. -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style. -#variable-rgx= - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=100 - -# Maximum number of lines in a module. -max-module-lines=1000 - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[STRING] - -# This flag controls whether inconsistent-quotes generates a warning when the -# character used as a quote delimiter is used inconsistently within a module. -check-quote-consistency=no - -# This flag controls whether the implicit-str-concat should generate a warning -# on implicit string concatenation in sequences defined over several lines. -check-str-concat-over-line-jumps=no - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes. -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it work, -# install the python-enchant package. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains the private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to the private dictionary (see the -# --spelling-private-dict-file option) instead of raising a message. -spelling-store-unknown-words=no - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - -# Regular expression of note tags to take in consideration. -#notes-rgx= - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io - - -[IMPORTS] - -# List of modules that can be imported at any level, not just the top level -# one. -allow-any-import-level= - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled). -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled). -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Couples of modules and preferred modules, separated by a comma. -preferred-modules= - - -[DESIGN] - -# Maximum number of arguments for function / method. -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in an if statement (see R0916). -max-bool-expr=5 - -# Maximum number of branch for function / method body. -max-branches=12 - -# Maximum number of locals for function / method body. -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body. -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp, - __post_init__ - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=cls - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "BaseException, Exception". -overgeneral-exceptions=BaseException, - Exception diff --git a/packages/reporting-server/LICENSE b/packages/reporting-server/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/packages/reporting-server/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/reporting-server/README.md b/packages/reporting-server/README.md deleted file mode 100644 index 88aa0a8c7..000000000 --- a/packages/reporting-server/README.md +++ /dev/null @@ -1,122 +0,0 @@ -# Description - -This project is about a server that exposes two APIs, one for writing logs to a persistent storage and the other for generating reports. As the project's name says, the idea is to work as a reporting server. The reporting server is designed to receive data through [Fluentd](https://www.fluentd.org/) (a data collection tool) from different pods within a Kubernetes cluster. Log data is transformed via a parser from the format that Fluentd uses for storage in the server. You can find the log formats [here](https://github.com/open-rmf/rmf-web/blob/main/packages/reporting-server/rest_server/__mocks__/raw_data.py). - -In the following image, we can observe how all the pods interact with the reporting server -![rmf-web kubernetes cluster diagram](https://user-images.githubusercontent.com/28668944/123916706-8b56e300-d9b4-11eb-990f-69e717f87b38.png) - - -# Setup - -Install pipenv - -```bash -pip3 install pipenv -``` - -If not already done so, [bootstrap](../../README.md#bootstrap) the project, you can use - -```bash -scripts/bootstrap.sh reporting-server -``` - -to bootstrap only this package. - -# Run the server - -```bash -reporting_server -``` - -When you run this command, two instances of the reporting server will run. One on port 8002 where the endpoints will be enabled to ask for reports and 8003 where the endpoints will be enabled to send logs to the reporting server. - -![image](https://user-images.githubusercontent.com/11761240/123881439-b12bab80-d912-11eb-987a-77591add6c5d.png) - -For development we recommend running this command: - -```bash -uvicorn --reload rest_server.app:get_app -``` - -This would only create one instance of the reporting-server and it'll serve on the default port. - -## Configuration - -Config files are python modules that export a variable named `config`. See [default_config.py](rest_server/default_config.py) for an example and list of the options available. All options are REQUIRED unless specified otherwise. - -Configuration is read from the file specified in the env `RMF_REPORT_REST_SERVER_CONFIG`, if not provided, the default config is used. - -e.g. -```bash -RMF_REPORT_REST_SERVER_CONFIG='my_config.py' reporting_server -``` - - -## Supported databases - -`reporting-server` uses [tortoise-orm](https://github.com/tortoise/tortoise-orm/) to perform database operations. Currently, the supported databases are - -* PostgreSQL -* SQLite -* MySQL -* MariaDB - -by default it uses a in-memory sqlite instance, to use other databases, install rmf-server with the relevalent extras - -* PostgreSQL - postgres -* MySQL - mysql -* MariaDB - maria - -.e.g. - -```bash -pip3 install reporting-server[postgres] -``` - -Then in your config, set the `db_url` accordingly, the url should be in the form - -``` -DB_TYPE://USERNAME:PASSWORD@HOST:PORT/DB_NAME?PARAM1=value&PARAM2=value -``` - -for example, to connect to postgres - -``` -postgres://:@/ -``` - -for more information, see https://tortoise-orm.readthedocs.io/en/latest/databases.html. - - -# Developers - -## Running tests - -### Running unit tests - -```bash -npm run test -``` - -### Collecting code coverage - -```bash -npm run test:cov -``` - -Generate coverage report -```bash -npm run test:report -``` - -## Live reload - -```bash -uvicorn --reload rest_server.app:get_app -``` - -## QA - -* I have a zombie process running either on port 8002 or 8003? - - The `reporting_server` runs two instances of the app on the same process. So, sometimes when you shut down one of the reporting-server instances, the other stay alive, resulting in a zombie process. You can kill it by running this command `kill -9 ` (on Linux based OS). That's why we recommend using `uvicorn --reload rest_server.app:get_app` for development purposes. diff --git a/packages/reporting-server/dependencies/__init__.py b/packages/reporting-server/dependencies/__init__.py deleted file mode 100644 index 09fb7aa3b..000000000 --- a/packages/reporting-server/dependencies/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .auth import auth_scheme, authenticator -from .logging import logger diff --git a/packages/reporting-server/dependencies/auth.py b/packages/reporting-server/dependencies/auth.py deleted file mode 100644 index 8729c606e..000000000 --- a/packages/reporting-server/dependencies/auth.py +++ /dev/null @@ -1,53 +0,0 @@ -from dependencies.logging import logger -from fastapi import Depends, HTTPException -from fastapi.security import OpenIdConnect -from rest_server.app_config import app_config -from rest_server.authenticator import AuthenticationError, JwtAuthenticator - -if app_config.jwt_public_key: - authenticator = JwtAuthenticator(app_config.jwt_public_key) - - if app_config.oidc_url: - oidc_url = app_config.oidc_url - else: - oidc_url = "" - - # TODO: Authorization code flow doesn't actually work because of this bug https://github.com/swagger-api/swagger-ui/issues/6741. - # althrough fastapi uses the latest version of swagger ui from a cdn, - # the oauth2-redirect is hardcoded using an old version. - # - # Also, password flow may not work because it is not actually part of the oidc standard. - # For keycloak, it doesn't return the id_token, which is required in a typical authorization code - # flow. - # - # On top of the above problems, swagger ui doesn't actually fully support oidc in the - # way we use it. We expect the id_token because it is the only token that MUST be a - # JWT according to oidc spec (although most implementation nowadays also uses JWT - # for the access token). Swagger UI passes the access_token to the server instead of the - # id_token, so in the case that the authentication provider is not using a JWT for the - # access_token, the authentication will fail. Even if the provider uses JWT for access_token, - # it may still fail because of the different claims present in the access_token and id_token. - # In the oidc spec, for an id_token, the "aud" claim MUST contain the client_id, but in - # the case of keycloak, even though the access_token is also a JWT, it does not have to - # follow the id_token spec, so the "aud" claim MAY NOT contain the client_id. - # This causes authentication to fail because in the JWT spec, if the "aud" claim is present, - # the verifier MUST check that it contains an expected value, since we expect an oidc - # id_token, we MUST verify that the "aud" contains the client_id. - security_scheme = OpenIdConnect(openIdConnectUrl=oidc_url) - - def auth_scheme(auth_header: str = Depends(security_scheme)): - parts = auth_header.split(" ") - if len(parts) != 2 or parts[0].lower() != "bearer": - raise HTTPException(401, "invalid bearer format") - try: - authenticator.verify_token(parts[1]) - except AuthenticationError as e: - raise HTTPException(401, str(e)) from e - - -else: - logger.warning("authentication is disabled") - authenticator = None - - def auth_scheme(): - return None # no authentication diff --git a/packages/reporting-server/dependencies/logging.py b/packages/reporting-server/dependencies/logging.py deleted file mode 100644 index 6419ce6ae..000000000 --- a/packages/reporting-server/dependencies/logging.py +++ /dev/null @@ -1,13 +0,0 @@ -import logging -import os -import sys - -from rest_server.app_config import app_config - -logger = logging.getLogger("app") -handler = logging.StreamHandler(sys.stdout) -handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT)) -logger.addHandler(handler) -logger.setLevel(app_config.log_level) -if "RMF_API_SERVER_LOG_LEVEL" in os.environ: - logger.setLevel(os.environ["RMF_API_SERVER_LOG_LEVEL"]) diff --git a/packages/reporting-server/models/pydantic_models.py b/packages/reporting-server/models/pydantic_models.py deleted file mode 100644 index 03642cb1e..000000000 --- a/packages/reporting-server/models/pydantic_models.py +++ /dev/null @@ -1,33 +0,0 @@ -from tortoise.contrib.pydantic import pydantic_model_creator - -from .tortoise_models import ( - AuthEvents, - Container, - DispenserState, - Door, - DoorState, - Fleet, - FleetState, - HealthStatus, - IngestorState, - Lift, - LiftState, - RawLog, - Robot, - TaskSummary, -) - -AuthEvents_Pydantic = pydantic_model_creator(AuthEvents, name="AuthEvents") -Container_Pydantic = pydantic_model_creator(Container, name="Container") -DispenserState_Pydantic = pydantic_model_creator(DispenserState, name="DispenserState") -Door_Pydantic = pydantic_model_creator(Door, name="Door") -DoorState_Pydantic = pydantic_model_creator(DoorState, name="DoorState") -Fleet_Pydantic = pydantic_model_creator(Fleet, name="Fleet") -FleetState_Pydantic = pydantic_model_creator(FleetState, name="FleetState") -HealthStatus_Pydantic = pydantic_model_creator(HealthStatus, name="HealthStatus") -IngestorState_Pydantic = pydantic_model_creator(IngestorState, name="IngestorState") -Lift_Pydantic = pydantic_model_creator(Lift, name="Lift") -LiftState_Pydantic = pydantic_model_creator(LiftState, name="LiftStates") -RawLog_Pydantic = pydantic_model_creator(RawLog, name="RawLog") -Robot_Pydantic = pydantic_model_creator(Robot, name="Robot") -TaskSummary_Pydantic = pydantic_model_creator(TaskSummary, name="TaskSummary") diff --git a/packages/reporting-server/models/tortoise_models/__init__.py b/packages/reporting-server/models/tortoise_models/__init__.py deleted file mode 100644 index 5e7749c73..000000000 --- a/packages/reporting-server/models/tortoise_models/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from .auth_events import AuthEvents -from .container import Container -from .dispenser_state import DispenserState -from .door import Door -from .door_state import DoorState -from .fleet import Fleet, Robot -from .fleet_state import FleetState -from .health import Device, HealthStatus -from .ingestor_state import IngestorState -from .lift import Lift -from .lift_state import LiftState -from .raw_log import RawLog -from .task_summary import TaskSummary diff --git a/packages/reporting-server/models/tortoise_models/auth_events.py b/packages/reporting-server/models/tortoise_models/auth_events.py deleted file mode 100644 index c43be16d9..000000000 --- a/packages/reporting-server/models/tortoise_models/auth_events.py +++ /dev/null @@ -1,16 +0,0 @@ -from tortoise import fields, models - - -class AuthEvents(models.Model): - id = fields.IntField(pk=True) - # user = fields.ForeignKey(User, null=True) - username = fields.CharField(max_length=100, null=True) - user_keycloak_id = fields.CharField(max_length=100, null=True) - event_type = fields.CharField(max_length=100) - realm_id = fields.CharField(max_length=100, null=True) - client_id = fields.CharField(max_length=100, null=True) - ip_address = fields.CharField(max_length=50, null=True) - created = fields.DatetimeField(auto_now_add=True) - - def __str__(self): - return str(self.event_type) diff --git a/packages/reporting-server/models/tortoise_models/container.py b/packages/reporting-server/models/tortoise_models/container.py deleted file mode 100644 index 91395d764..000000000 --- a/packages/reporting-server/models/tortoise_models/container.py +++ /dev/null @@ -1,6 +0,0 @@ -from tortoise import fields, models - - -class Container(models.Model): - id = fields.IntField(pk=True) - name = fields.TextField() diff --git a/packages/reporting-server/models/tortoise_models/dispenser_state.py b/packages/reporting-server/models/tortoise_models/dispenser_state.py deleted file mode 100644 index e0434a172..000000000 --- a/packages/reporting-server/models/tortoise_models/dispenser_state.py +++ /dev/null @@ -1,28 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class DispenserStateEnum(str, Enum): - IDLE = "idle" - BUSY = "busy" - OFFLINE = "offline" - - -class DispenserStateService: - def get_state_name(self, state: int): - if state == 0: - return DispenserStateEnum.IDLE - elif state == 1: - return DispenserStateEnum.BUSY - elif state == 2: - return DispenserStateEnum.OFFLINE - - -class DispenserState(models.Model): - id = fields.IntField(pk=True) - state = fields.CharEnumField(DispenserStateEnum) - guid = fields.CharField(max_length=200) - created = fields.DatetimeField(auto_now_add=True) - - service = DispenserStateService() diff --git a/packages/reporting-server/models/tortoise_models/door.py b/packages/reporting-server/models/tortoise_models/door.py deleted file mode 100644 index 6485f07fe..000000000 --- a/packages/reporting-server/models/tortoise_models/door.py +++ /dev/null @@ -1,6 +0,0 @@ -from tortoise import fields, models - - -class Door(models.Model): - id = fields.IntField(pk=True) - name = fields.CharField(max_length=100) diff --git a/packages/reporting-server/models/tortoise_models/door_state.py b/packages/reporting-server/models/tortoise_models/door_state.py deleted file mode 100644 index 9d9fbd493..000000000 --- a/packages/reporting-server/models/tortoise_models/door_state.py +++ /dev/null @@ -1,38 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class DoorStateEnum(str, Enum): - CLOSED = "closed" - MOVING = "moving" - OPEN = "open" - OFFLINE = "offline" - UNKNOWN = "unknown" - - -class DoorStateService: - def get_state_name(self, door_state: int): - if door_state == 0: - return DoorStateEnum.CLOSED - elif door_state == 1: - return DoorStateEnum.MOVING - elif door_state == 2: - return DoorStateEnum.OPEN - elif door_state == 3: - return DoorStateEnum.OFFLINE - elif door_state == 4: - return DoorStateEnum.UNKNOWN - else: - return DoorStateEnum.UNKNOWN - - -class DoorState(models.Model): - id = fields.IntField(pk=True) - state: DoorStateEnum = fields.CharEnumField( - DoorStateEnum, default=DoorStateEnum.UNKNOWN - ) - door = fields.ForeignKeyField("models.Door", related_name="door_states", null=True) - created = fields.DatetimeField(auto_now_add=True) - - service = DoorStateService() diff --git a/packages/reporting-server/models/tortoise_models/fleet.py b/packages/reporting-server/models/tortoise_models/fleet.py deleted file mode 100644 index 679d045e5..000000000 --- a/packages/reporting-server/models/tortoise_models/fleet.py +++ /dev/null @@ -1,10 +0,0 @@ -from tortoise import fields, models - - -class Robot(models.Model): - name = fields.CharField(max_length=100) - model = fields.CharField(max_length=100, null=True) - - -class Fleet(models.Model): - name = fields.CharField(max_length=100) diff --git a/packages/reporting-server/models/tortoise_models/fleet_state.py b/packages/reporting-server/models/tortoise_models/fleet_state.py deleted file mode 100644 index 2e13c31fb..000000000 --- a/packages/reporting-server/models/tortoise_models/fleet_state.py +++ /dev/null @@ -1,57 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class RobotStateEnum(str, Enum): - MODE_IDLE = "closed" - MODE_CHARGING = "charging" - MODE_MOVING = "moving" - MODE_PAUSED = "paused" - MODE_WAITING = "waiting" - MODE_EMERGENCY = "emergency" - MODE_GOING_HOME = "going_home" - MODE_DOCKING = "docking" - MODE_ADAPTER_ERROR = "adapter_error" - - -class RobotStateService: - def get_robot_state_name(self, state: int): - if state == 0: - return RobotStateEnum.MODE_IDLE - elif state == 1: - return RobotStateEnum.MODE_CHARGING - elif state == 2: - return RobotStateEnum.MODE_MOVING - elif state == 3: - return RobotStateEnum.MODE_PAUSED - elif state == 4: - return RobotStateEnum.MODE_WAITING - elif state == 5: - return RobotStateEnum.MODE_EMERGENCY - elif state == 6: - return RobotStateEnum.MODE_GOING_HOME - elif state == 7: - return RobotStateEnum.MODE_DOCKING - elif state == 8: - return RobotStateEnum.MODE_ADAPTER_ERROR - - -class FleetState(models.Model): - id = fields.IntField(pk=True) - created = fields.DatetimeField(auto_now_add=True) - fleet = fields.ForeignKeyField( - "models.Fleet", related_name="fleet_states", null=True - ) - robot = fields.ForeignKeyField( - "models.Robot", related_name="fleet_states", null=True - ) - robot_battery_percent = fields.CharField(max_length=200) - robot_location = fields.CharField(max_length=200) - robot_mode: RobotStateEnum = fields.CharEnumField( - RobotStateEnum, default=RobotStateEnum.MODE_IDLE - ) - robot_seq = fields.IntField() - robot_task_id = fields.CharField(max_length=200) - - service = RobotStateService() diff --git a/packages/reporting-server/models/tortoise_models/health.py b/packages/reporting-server/models/tortoise_models/health.py deleted file mode 100644 index 799c957f9..000000000 --- a/packages/reporting-server/models/tortoise_models/health.py +++ /dev/null @@ -1,36 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class HealthStatusEmun(str, Enum): - HEALTHY = "Healthy" - UNHEALTHY = "Unhealthy" - DEAD = "Dead" - - -class Device(models.Model): - id = fields.IntField(pk=True) - type = fields.TextField() - actor = fields.CharField(max_length=25, null=True) - - -class HealthStatusService: - def get_health_status(self, status: str): - if status == "HealthStatus.HEALTHY": - return HealthStatusEmun.HEALTHY - elif status == "HealthStatus.UNHEALTHY": - return HealthStatusEmun.UNHEALTHY - elif status == "HealthStatus.DEAD": - return HealthStatusEmun.DEAD - - -class HealthStatus(models.Model): - device = fields.ForeignKeyField( - "models.Device", related_name="health_status", null=True - ) - health_status = fields.CharField(max_length=25, null=True) - health_message = fields.TextField(null=True) - created = fields.DatetimeField(auto_now_add=True) - - service = HealthStatusService() diff --git a/packages/reporting-server/models/tortoise_models/ingestor_state.py b/packages/reporting-server/models/tortoise_models/ingestor_state.py deleted file mode 100644 index cb9036185..000000000 --- a/packages/reporting-server/models/tortoise_models/ingestor_state.py +++ /dev/null @@ -1,30 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class IngestorStateEnum(str, Enum): - IDLE = "idle" - BUSY = "busy" - OFFLINE = "offline" - - -class IngestorStateService: - def get_state_name(self, state: int): - if state == 0: - return IngestorStateEnum.IDLE - elif state == 1: - return IngestorStateEnum.BUSY - elif state == 2: - return IngestorStateEnum.OFFLINE - - -class IngestorState(models.Model): - id = fields.IntField(pk=True) - state: IngestorStateEnum = fields.CharEnumField( - IngestorStateEnum, default=IngestorStateEnum.OFFLINE - ) - guid = fields.CharField(max_length=200) - created = fields.DatetimeField(auto_now_add=True) - - service = IngestorStateService() diff --git a/packages/reporting-server/models/tortoise_models/lift.py b/packages/reporting-server/models/tortoise_models/lift.py deleted file mode 100644 index c08dab43f..000000000 --- a/packages/reporting-server/models/tortoise_models/lift.py +++ /dev/null @@ -1,6 +0,0 @@ -from tortoise import fields, models - - -class Lift(models.Model): - id = fields.IntField(pk=True) - name = fields.CharField(max_length=100) diff --git a/packages/reporting-server/models/tortoise_models/lift_state.py b/packages/reporting-server/models/tortoise_models/lift_state.py deleted file mode 100644 index 0f0158df2..000000000 --- a/packages/reporting-server/models/tortoise_models/lift_state.py +++ /dev/null @@ -1,82 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class LiftStateEnum(str, Enum): - MODE_AGV = "avg" - MODE_EMERGENCY = "emergency" - MODE_FIRE = "fire" - MODE_HUMAN = "human" - MODE_OFFLINE = "offline" - MODE_UNKNOWN = "unknown" - - -# FIXME: add all lift states -class LiftMotionStateEnum(str, Enum): - MOTION_DOWN = "down" - MOTION_STOPPED = "stopped" - MOTION_UNKNOWN = "unknown" - MOTION_UP = "up" - - -class LiftDoorStateEmun(str, Enum): - DOOR_CLOSED = "closed" - DOOR_MOVING = "moving" - DOOR_OPEN = "open" - - -class LiftStateService: - def get_state_name(self, state: int): - if state == 0: - return LiftStateEnum.MODE_UNKNOWN - elif state == 1: - return LiftStateEnum.MODE_HUMAN - elif state == 2: - return LiftStateEnum.MODE_AGV - elif state == 3: - return LiftStateEnum.MODE_FIRE - elif state == 4: - return LiftStateEnum.MODE_OFFLINE - elif state == 5: - return LiftStateEnum.MODE_EMERGENCY - - def get_motion_state_name(self, state: int): - if state == 0: - return LiftMotionStateEnum.MOTION_STOPPED - elif state == 1: - return LiftMotionStateEnum.MOTION_UP - elif state == 2: - return LiftMotionStateEnum.MOTION_DOWN - elif state == 3: - return LiftMotionStateEnum.MOTION_UNKNOWN - - def get_door_state_name(self, state: int): - if state == 0: - return LiftDoorStateEmun.DOOR_CLOSED - elif state == 1: - return LiftDoorStateEmun.DOOR_MOVING - elif state == 2: - return LiftDoorStateEmun.DOOR_OPEN - - -class LiftState(models.Model): - id = fields.IntField(pk=True) - lift = fields.ForeignKeyField( - "models.Lift", related_name="lift_states", on_delete="CASCADE" - ) - door_state: LiftDoorStateEmun = fields.CharEnumField( - LiftDoorStateEmun, default=LiftDoorStateEmun.DOOR_CLOSED - ) - state: LiftStateEnum = fields.CharEnumField( - LiftStateEnum, default=LiftStateEnum.MODE_UNKNOWN - ) - destination_floor = fields.CharField(max_length=20) - motion_state: LiftMotionStateEnum = fields.CharEnumField( - LiftMotionStateEnum, default=LiftMotionStateEnum.MOTION_STOPPED - ) - current_floor = fields.CharField(max_length=20) - session_id = fields.CharField(max_length=200) - created = fields.DatetimeField(auto_now_add=True) - - service = LiftStateService() diff --git a/packages/reporting-server/models/tortoise_models/raw_log.py b/packages/reporting-server/models/tortoise_models/raw_log.py deleted file mode 100644 index cbb5aed06..000000000 --- a/packages/reporting-server/models/tortoise_models/raw_log.py +++ /dev/null @@ -1,25 +0,0 @@ -from enum import Enum - -from tortoise import fields, models - - -class LogLevel(str, Enum): - CRITICAL = "critical" - ERROR = "error" - WARN = "warn" - INFO = "info" - DEBUG = "debug" - UNKNOWN = "unknown" - - -class RawLog(models.Model): - id = fields.IntField(pk=True) - level: LogLevel = fields.CharEnumField(LogLevel, default=LogLevel.INFO) - message = fields.TextField() - created = fields.DatetimeField(auto_now_add=True) - container = fields.ForeignKeyField( - "models.Container", related_name="containers", null=True - ) - - def __str__(self): - return str(self.message) diff --git a/packages/reporting-server/models/tortoise_models/task_summary.py b/packages/reporting-server/models/tortoise_models/task_summary.py deleted file mode 100644 index dc41c198b..000000000 --- a/packages/reporting-server/models/tortoise_models/task_summary.py +++ /dev/null @@ -1,128 +0,0 @@ -from enum import Enum - -from tortoise import fields, models -from tortoise.contrib.pydantic import pydantic_model_creator - - -class TaskStateEnum(str, Enum): - STATE_ACTIVE = "active" - STATE_CANCELLED = "cancelled" - STATE_COMPLETED = "completed" - STATE_FAILED = "failed" - STATE_PENDING = "pending" - STATE_QUEUED = "queued" - - -class TaskTypeEnum(str, Enum): - CLEAN = "clean" - LOOP = "loop" - DELIVERY = "delivery" - - -class TaskSummaryService: - def get_task_state_name(self, state: int): - if state == 0: - return TaskStateEnum.STATE_ACTIVE - elif state == 1: - return TaskStateEnum.STATE_CANCELLED - elif state == 2: - return TaskStateEnum.STATE_COMPLETED - elif state == 3: - return TaskStateEnum.STATE_FAILED - elif state == 4: - return TaskStateEnum.STATE_PENDING - elif state == 5: - return TaskStateEnum.STATE_QUEUED - - def get_task_type_name(self, type: int): - if type == 0: - return TaskTypeEnum.CLEAN - elif type == 1: - return TaskTypeEnum.LOOP - elif type == 2: - return TaskTypeEnum.DELIVERY - - -class Time: - sec = fields.IntField(pk=True) - nanosec = fields.IntField(pk=True) - - -class Priority: - value = fields.IntField(pk=True) - - -class TaskType: - type = TaskTypeEnum = fields.CharEnumField(TaskTypeEnum) - - -class Station: - task_id = fields.CharField(max_length=50) - robot_type = fields.CharField(max_length=50) - place_name = fields.CharField(max_length=50) - - -class Loop: - task_id = fields.CharField(max_length=50) - robot_type = fields.CharField(max_length=50) - num_loops = fields.IntField(max_length=50) - start_name = fields.CharField(max_length=50) - finish_name = fields.CharField(max_length=50) - - -class Behavior: - name = fields.CharField(max_length=50) - parameters = [] - - -class Delivery: - task_id = fields.CharField(max_length=50) - items = [] - pickup_place_name = fields.CharField(max_length=50) - pickup_dispenser = fields.CharField(max_length=50) - pickup_behavior: Behavior = fields.JSONField() - dropoff_place_name = fields.CharField(max_length=50) - dropoff_ingestor = fields.CharField(max_length=50) - dropoff_behavior: Behavior = fields.JSONField() - - -class Clean: - start_waypoint = fields.CharField(max_length=50) - - -class Description: - start_time: Time = fields.JSONField() - priority: Priority = fields.JSONField() - task_type: TaskType = fields.JSONField() - station: Station = fields.JSONField() - loop: Loop = fields.JSONField() - delivery: Delivery = fields.JSONField() - clean: Clean = fields.JSONField() - - -class TaskProfile: - task_id = fields.CharField(max_length=50) - submission_time: Time = fields.JSONField() - description: Description = fields.JSONField() - - -class TaskSummary(models.Model): - id = fields.IntField(pk=True) - created = fields.DatetimeField(auto_now_add=True) - fleet = fields.ForeignKeyField( - "models.Fleet", related_name="task_summary", null=True - ) - robot = fields.ForeignKeyField( - "models.Robot", related_name="task_summary", null=True - ) - task_id = fields.CharField(max_length=50) - task_profile: TaskProfile = fields.JSONField() - state: TaskStateEnum = fields.CharEnumField( - TaskStateEnum, default=TaskStateEnum.STATE_PENDING - ) - status = fields.CharField(max_length=50, null=True) - submission_time: Time = fields.JSONField() - start_time: Time = fields.JSONField() - end_time: Time = fields.JSONField() - - service = TaskSummaryService() diff --git a/packages/reporting-server/models/tortoise_models/user.py b/packages/reporting-server/models/tortoise_models/user.py deleted file mode 100644 index 5c3307fd8..000000000 --- a/packages/reporting-server/models/tortoise_models/user.py +++ /dev/null @@ -1,11 +0,0 @@ -from tortoise import fields, models -from tortoise.contrib.pydantic import pydantic_model_creator - - -class User(models.Model): - id = fields.IntField(pk=True) - username = fields.TextField(null=True) - user_id = fields.TextField(null=True) - - def __str__(self): - return str(self.username) diff --git a/packages/reporting-server/package.json b/packages/reporting-server/package.json deleted file mode 100644 index d2cc1dce9..000000000 --- a/packages/reporting-server/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "reporting-server", - "version": "0.0.1", - "description": "dummy package", - "private": true, - "scripts": { - "prepack": "pipenv run python setup.py bdist_wheel", - "start": "pipenv run python -m reporting_server", - "test": "python3 -m pipenv run python -m unittest", - "test:cov": "RMF_API_SERVER_LOG_LEVEL=CRITICAL RMF_API_SERVER_TEST_COVERAGE=1 pipenv run python -m coverage run -p -m unittest && pipenv run python -m coverage combine", - "test:report": "pipenv run python -m coverage html && xdg-open htmlcov/index.html", - "lint": "python3 -m pipenv run pylint rest_server" - }, - "devDependencies": { - "pipenv-install": "file:../../pipenv-install" - } -} diff --git a/packages/reporting-server/parsers/__init__.py b/packages/reporting-server/parsers/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/reporting-server/parsers/auth_event_parser.py b/packages/reporting-server/parsers/auth_event_parser.py deleted file mode 100644 index bd147a624..000000000 --- a/packages/reporting-server/parsers/auth_event_parser.py +++ /dev/null @@ -1,16 +0,0 @@ -import json - - -async def auth_event_parser(fullstring: str): - splitted_string = fullstring.split("JSON_EVENT::") - modified_string = splitted_string[1] - state_json = json.loads(modified_string) - - return { - "username": state_json.get("username", None), - "user_keycloak_id": state_json.get("userId", None), - "event_type": state_json["type"], - "realm_id": state_json.get("realmId", None), - "client_id": state_json.get("clientId", None), - "ip_address": state_json["ipAddress"], - } diff --git a/packages/reporting-server/parsers/dispenser_state_parser.py b/packages/reporting-server/parsers/dispenser_state_parser.py deleted file mode 100644 index bc88537bd..000000000 --- a/packages/reporting-server/parsers/dispenser_state_parser.py +++ /dev/null @@ -1,13 +0,0 @@ -import json - -from models.tortoise_models.dispenser_state import DispenserState - - -async def dispenser_state_parser(fullstring: str): - modified_string = fullstring.replace("dispenser_state:", "") - state_json = json.loads(modified_string) - - return { - "state": DispenserState.service.get_state_name(state_json["mode"]), - "guid": state_json["guid"], - } diff --git a/packages/reporting-server/parsers/doors_state_parser.py b/packages/reporting-server/parsers/doors_state_parser.py deleted file mode 100644 index d1d81a241..000000000 --- a/packages/reporting-server/parsers/doors_state_parser.py +++ /dev/null @@ -1,15 +0,0 @@ -import json - -from models.tortoise_models.door_state import DoorState - - -async def doors_state_parser(fullstring: str): - modified_string = fullstring.replace("door_state:", "") - door_state_json = json.loads(modified_string) - - return { - "state": DoorState.service.get_state_name( - door_state_json["current_mode"]["value"] - ), - "name": door_state_json["door_name"], - } diff --git a/packages/reporting-server/parsers/fleet_state_parser.py b/packages/reporting-server/parsers/fleet_state_parser.py deleted file mode 100644 index 5b2d6d4cc..000000000 --- a/packages/reporting-server/parsers/fleet_state_parser.py +++ /dev/null @@ -1,31 +0,0 @@ -import json - -from models.tortoise_models import FleetState - - -async def fleet_state_parser(fullstring: str) -> list: - modified_string = fullstring.replace("fleet_state:", "") - state_json = json.loads(modified_string) - - if not isinstance(state_json["robots"], list) or len(state_json["robots"]) == 0: - print("robots should be a list") - return [] - - fleet_list = [] - for robot in state_json["robots"]: - fleet_list.append( - { - "fleet_name": state_json["name"], - "robot_battery_percent": robot["battery_percent"], - "robot_location": robot["location"], - "robot_mode": FleetState.service.get_robot_state_name( - robot["mode"]["mode"] - ), - "robot_model": robot["model"], - "robot_name": robot["name"], - "robot_seq": robot["seq"], - "robot_task_id": robot["task_id"], - } - ) - - return fleet_list diff --git a/packages/reporting-server/parsers/health_parser.py b/packages/reporting-server/parsers/health_parser.py deleted file mode 100644 index e5690dd21..000000000 --- a/packages/reporting-server/parsers/health_parser.py +++ /dev/null @@ -1,17 +0,0 @@ -import json - -from models.tortoise_models.health import HealthStatus - - -async def health_status_parser(fullstring: str, health_device: str): - modified_string = fullstring.replace(health_device + ":", "") - state_json = json.loads(modified_string) - - return { - "device": health_device, - "actor_id": state_json["id"], - "health_status": HealthStatus.service.get_health_status( - state_json["health_status"] - ), - "health_message": state_json["health_message"], - } diff --git a/packages/reporting-server/parsers/ingestor_state_parser.py b/packages/reporting-server/parsers/ingestor_state_parser.py deleted file mode 100644 index 5b1e096b1..000000000 --- a/packages/reporting-server/parsers/ingestor_state_parser.py +++ /dev/null @@ -1,13 +0,0 @@ -import json - -from models.tortoise_models.ingestor_state import IngestorState - - -async def ingestor_state_parser(fullstring: str): - modified_string = fullstring.replace("ingestor_state:", "") - state_json = json.loads(modified_string) - - return { - "state": IngestorState.service.get_state_name(state_json["mode"]), - "guid": state_json["guid"], - } diff --git a/packages/reporting-server/parsers/lift_state_parser.py b/packages/reporting-server/parsers/lift_state_parser.py deleted file mode 100644 index 3e50ee798..000000000 --- a/packages/reporting-server/parsers/lift_state_parser.py +++ /dev/null @@ -1,37 +0,0 @@ -import json - -from models.tortoise_models.lift_state import LiftState - - -async def lift_state_parser(fullstring: str): - modified_string = fullstring.replace("lift_state:", "") - state_json = json.loads(modified_string) - - # In case it is wrapped in a dict - motion_state = LiftState.service.get_motion_state_name( - state_json["motion_state"]["value"] - if isinstance(state_json["motion_state"], dict) - else state_json["motion_state"] - ) - - door_state = LiftState.service.get_door_state_name( - state_json["door_state"]["value"] - if isinstance(state_json["door_state"], dict) - else state_json["door_state"] - ) - - state = LiftState.service.get_state_name( - state_json["current_mode"]["value"] - if isinstance(state_json["current_mode"], dict) - else state_json["current_mode"] - ) - - return { - "name": state_json["lift_name"], - "state": state, - "motion_state": motion_state, - "door_state": door_state, - "session_id": state_json["session_id"], - "destination_floor": state_json["destination_floor"], - "current_floor": state_json["current_floor"], - } diff --git a/packages/reporting-server/parsers/log_type_parser.py b/packages/reporting-server/parsers/log_type_parser.py deleted file mode 100644 index 39a5b366e..000000000 --- a/packages/reporting-server/parsers/log_type_parser.py +++ /dev/null @@ -1,19 +0,0 @@ -from models.tortoise_models.raw_log import LogLevel - - -def get_log_type(fullstring, stream_type="stdout"): - - if "critical" in fullstring.lower(): - return LogLevel.CRITICAL - elif "error" in fullstring.lower(): - return LogLevel.ERROR - elif "warn" in fullstring.lower(): - return LogLevel.WARN - elif "info" in fullstring.lower(): - return LogLevel.INFO - elif "debug" in fullstring.lower(): - return LogLevel.DEBUG - else: - if stream_type == "stderr": - return LogLevel.ERROR - return LogLevel.DEBUG diff --git a/packages/reporting-server/parsers/task_summary_parser.py b/packages/reporting-server/parsers/task_summary_parser.py deleted file mode 100644 index 1b5aa8ff2..000000000 --- a/packages/reporting-server/parsers/task_summary_parser.py +++ /dev/null @@ -1,27 +0,0 @@ -import json - -from models.tortoise_models.task_summary import TaskSummary - - -async def task_summary_parser(fullstring: str): - modified_string = fullstring.replace("task_summary:", "") - state_json = json.loads(modified_string) - - if len(state_json) > 0: - if len(state_json["status"]) <= 0: - status = None - else: - status = state_json["status"] - return { - "fleet_name": state_json["fleet_name"], - "task_id": state_json["task_id"], - "task_profile": state_json["task_profile"], - "state": TaskSummary.service.get_task_state_name(state_json["state"]), - "status": status, - "submission_time": state_json["submission_time"], - "start_time": state_json["start_time"], - "end_time": state_json["end_time"], - "robot_name": state_json["robot_name"], - } - else: - return {} diff --git a/packages/reporting-server/parsers/test_auth_event_parser.py b/packages/reporting-server/parsers/test_auth_event_parser.py deleted file mode 100644 index 1a6e31d63..000000000 --- a/packages/reporting-server/parsers/test_auth_event_parser.py +++ /dev/null @@ -1,21 +0,0 @@ -import unittest - -from rest_server.__mocks__ import raw_data - -from .auth_event_parser import auth_event_parser - - -class TestCaseAuthEvent(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = raw_data.mock_keycloak_login_error["log"] - - async def test_parse_and_get_values(self): - parsed_values = await auth_event_parser(self.data) - self.assertEqual(parsed_values["username"], "test") - self.assertEqual(parsed_values["user_keycloak_id"], None) - self.assertEqual(parsed_values["event_type"], "LOGIN_ERROR") - self.assertEqual( - parsed_values["realm_id"], "579ce396-83c7-4094-964d-7ea07553089f" - ) - self.assertEqual(parsed_values["client_id"], "reporting") - self.assertEqual(parsed_values["ip_address"], "192.168.49.1") diff --git a/packages/reporting-server/parsers/test_dispenser_state_parser.py b/packages/reporting-server/parsers/test_dispenser_state_parser.py deleted file mode 100644 index 9d196224a..000000000 --- a/packages/reporting-server/parsers/test_dispenser_state_parser.py +++ /dev/null @@ -1,20 +0,0 @@ -import unittest - -from models.tortoise_models.dispenser_state import DispenserState -from rest_server.__mocks__.parsed_data import mock_dispenser_state - -from .dispenser_state_parser import dispenser_state_parser - - -class TestCaseDispenserState(unittest.IsolatedAsyncioTestCase): - def setUp(self): - - self.data = mock_dispenser_state - - async def test_parse_and_get_values(self): - parsed_values = await dispenser_state_parser(self.data) - self.assertEqual( - parsed_values["state"], DispenserState.service.get_state_name(0) - ) - - self.assertEqual(parsed_values["guid"], "coke_dispenser") diff --git a/packages/reporting-server/parsers/test_doors_state_parser.py b/packages/reporting-server/parsers/test_doors_state_parser.py deleted file mode 100644 index 2a52742f1..000000000 --- a/packages/reporting-server/parsers/test_doors_state_parser.py +++ /dev/null @@ -1,16 +0,0 @@ -import unittest - -from models.tortoise_models.door_state import DoorState -from rest_server.__mocks__.parsed_data import mock_door_state - -from .doors_state_parser import doors_state_parser - - -class TestCaseDoorsState(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = mock_door_state - - async def test_parse_and_get_values(self): - parsed_values = await doors_state_parser(self.data) - self.assertEqual(parsed_values["state"], DoorState.service.get_state_name(0)) - self.assertEqual(parsed_values["name"], "hardware_door") diff --git a/packages/reporting-server/parsers/test_fleet_state_parser.py b/packages/reporting-server/parsers/test_fleet_state_parser.py deleted file mode 100644 index f600335a4..000000000 --- a/packages/reporting-server/parsers/test_fleet_state_parser.py +++ /dev/null @@ -1,44 +0,0 @@ -import unittest - -from models.tortoise_models.fleet_state import FleetState -from rest_server.__mocks__.parsed_data import mock_fleet_state - -from .fleet_state_parser import fleet_state_parser - - -class TestCaseFleetState(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = mock_fleet_state - - async def test_parse_and_get_values(self): - parsed_values = await fleet_state_parser(self.data) - - self.assertEqual(len(parsed_values), 2) - first_robot = parsed_values[0] - second_robot = parsed_values[1] - - self.assertEqual(first_robot["fleet_name"], "tinyRobot") - self.assertEqual(first_robot["robot_name"], "tinyRobot1") - self.assertEqual(first_robot["robot_model"], "") - self.assertEqual(first_robot["robot_task_id"], "") - self.assertEqual(first_robot["robot_battery_percent"], 100.0) - self.assertEqual(first_robot["robot_seq"], 3190) - self.assertEqual( - first_robot["robot_mode"], FleetState.service.get_robot_state_name(1) - ) - - self.assertEqual(second_robot["fleet_name"], "tinyRobot") - self.assertEqual(second_robot["robot_name"], "tinyRobot2") - self.assertEqual(second_robot["robot_model"], "") - self.assertEqual(second_robot["robot_task_id"], "") - self.assertEqual(second_robot["robot_battery_percent"], 100.0) - self.assertEqual(second_robot["robot_seq"], 3191) - self.assertEqual( - second_robot["robot_mode"], FleetState.service.get_robot_state_name(1) - ) - - async def test_return_empty_list_if_no_robot(self): - parsed_values = await fleet_state_parser( - 'fleet_state:{"name": "tinyRobot", "robots":[]}' - ) - self.assertEqual(parsed_values, []) diff --git a/packages/reporting-server/parsers/test_health_parser.py b/packages/reporting-server/parsers/test_health_parser.py deleted file mode 100644 index db6b72535..000000000 --- a/packages/reporting-server/parsers/test_health_parser.py +++ /dev/null @@ -1,17 +0,0 @@ -import unittest - -from models.tortoise_models.health import HealthStatusEmun - -from .health_parser import health_status_parser - - -class TestCaseHealth(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = 'door_health:{"id": "hardware_door", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n' - - async def test_parse_and_get_values(self): - parsed_values = await health_status_parser(self.data, "door_health") - self.assertEqual(parsed_values["device"], "door_health") - self.assertEqual(parsed_values["actor_id"], "hardware_door") - self.assertEqual(parsed_values["health_status"], HealthStatusEmun.HEALTHY) - self.assertEqual(parsed_values["health_message"], None) diff --git a/packages/reporting-server/parsers/test_ingestor_parser.py b/packages/reporting-server/parsers/test_ingestor_parser.py deleted file mode 100644 index 5d0126903..000000000 --- a/packages/reporting-server/parsers/test_ingestor_parser.py +++ /dev/null @@ -1,18 +0,0 @@ -import unittest - -from models.tortoise_models.ingestor_state import IngestorState -from rest_server.__mocks__.parsed_data import mock_ingestor_state - -from .ingestor_state_parser import ingestor_state_parser - - -class TestCaseIngestorState(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = mock_ingestor_state - - async def test_parse_and_get_values(self): - parsed_values = await ingestor_state_parser(self.data) - self.assertEqual(parsed_values["guid"], "coke_ingestor") - self.assertEqual( - parsed_values["state"], IngestorState.service.get_state_name(0) - ) diff --git a/packages/reporting-server/parsers/test_lift_state_parser.py b/packages/reporting-server/parsers/test_lift_state_parser.py deleted file mode 100644 index e5dc6ec9a..000000000 --- a/packages/reporting-server/parsers/test_lift_state_parser.py +++ /dev/null @@ -1,38 +0,0 @@ -import unittest - -from models.tortoise_models.lift_state import LiftState -from rest_server.__mocks__.parsed_data import mock_lift_state - -from .lift_state_parser import lift_state_parser - - -class TestCaseLiftState(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = mock_lift_state - self.data_with_dict_states = 'lift_state: {"lift_name": "test_lift", "lift_time": 0, "available_floors": ["L1", "L2"], "current_floor": "L1", "destination_floor": "L2", "door_state": {"value": 0}, "motion_state": {"value": 0}, "available_modes": [0], "current_mode": {"value": 0}, "session_id": "test_session"}\n' - - async def test_parse_and_get_values(self): - parsed_values = await lift_state_parser(self.data) - self.assertEqual(parsed_values["state"], LiftState.service.get_state_name(0)) - self.assertEqual( - parsed_values["motion_state"], LiftState.service.get_motion_state_name(0) - ) - self.assertEqual( - parsed_values["door_state"], LiftState.service.get_door_state_name(0) - ) - - self.assertEqual(parsed_values["current_floor"], "L1") - self.assertEqual(parsed_values["destination_floor"], "L2") - self.assertEqual(parsed_values["session_id"], "test_session") - - self.assertEqual(parsed_values["state"], LiftState.service.get_state_name(0)) - - async def test_parse_and_get_values_with_dict_states(self): - parsed_values = await lift_state_parser(self.data_with_dict_states) - self.assertEqual(parsed_values["state"], LiftState.service.get_state_name(0)) - self.assertEqual( - parsed_values["motion_state"], LiftState.service.get_motion_state_name(0) - ) - self.assertEqual( - parsed_values["door_state"], LiftState.service.get_door_state_name(0) - ) diff --git a/packages/reporting-server/parsers/test_log_type_parser.py b/packages/reporting-server/parsers/test_log_type_parser.py deleted file mode 100644 index 21ca3fdb2..000000000 --- a/packages/reporting-server/parsers/test_log_type_parser.py +++ /dev/null @@ -1,37 +0,0 @@ -import unittest - -from models.tortoise_models.raw_log import LogLevel - -from .log_type_parser import get_log_type - - -class TestCaseLogTypeParserCase(unittest.TestCase): - def setUp(self): - pass - - def test_warning_messages(self): - self.assertEqual(get_log_type("this is a Warn", "stdout"), LogLevel.WARN) - self.assertEqual(get_log_type("WARN:", "stdout"), LogLevel.WARN) - self.assertEqual(get_log_type("WARNING:", "stdout"), LogLevel.WARN) - self.assertEqual(get_log_type("warn", "stdout"), LogLevel.WARN) - - def test_error_messages(self): - self.assertEqual(get_log_type("this is an Error", "stdout"), LogLevel.ERROR) - self.assertEqual(get_log_type("ERROR:", "stdout"), LogLevel.ERROR) - self.assertEqual(get_log_type("error", "stdout"), LogLevel.ERROR) - self.assertEqual( - get_log_type("normal test with problems", "stderr"), LogLevel.ERROR - ) - - def test_debug_messages(self): - self.assertEqual(get_log_type("this is a Debug msg", "stdout"), LogLevel.DEBUG) - self.assertEqual(get_log_type("DEBUG:", "stdout"), LogLevel.DEBUG) - self.assertEqual(get_log_type("debug", "stdout"), LogLevel.DEBUG) - self.assertEqual( - get_log_type("This is a random text", "stdout"), LogLevel.DEBUG - ) - - def test_info_messages(self): - self.assertEqual(get_log_type("this is an Info msg", "stdout"), LogLevel.INFO) - self.assertEqual(get_log_type("INFO:", "stdout"), LogLevel.INFO) - self.assertEqual(get_log_type("info", "stdout"), LogLevel.INFO) diff --git a/packages/reporting-server/parsers/test_task_summary_parser.py b/packages/reporting-server/parsers/test_task_summary_parser.py deleted file mode 100644 index fae6a945d..000000000 --- a/packages/reporting-server/parsers/test_task_summary_parser.py +++ /dev/null @@ -1,40 +0,0 @@ -import unittest - -from models.tortoise_models.task_summary import TaskSummary -from rest_server.__mocks__.parsed_data import mock_task_summary - -from .task_summary_parser import task_summary_parser - - -class TestCaseTaskSummary(unittest.IsolatedAsyncioTestCase): - def setUp(self): - self.data = mock_task_summary - - async def test_parse_and_get_values(self): - parsed_values = await task_summary_parser(self.data) - - self.assertEqual(parsed_values["task_id"], "Loop0") - self.assertEqual(parsed_values["fleet_name"], "tinyRobot") - self.assertEqual( - parsed_values["state"], TaskSummary.service.get_task_state_name(0) - ) - self.assertEqual(parsed_values["status"], None) - self.assertEqual( - parsed_values["task_profile"]["submission_time"], - {"sec": 131, "nanosec": 553000000}, - ) - self.assertEqual(parsed_values["submission_time"], {"sec": 0, "nanosec": 0}) - self.assertEqual( - parsed_values["start_time"], {"sec": 1623383362, "nanosec": 348338289} - ) - self.assertEqual( - parsed_values["end_time"], {"sec": 1623383449, "nanosec": 79154833} - ) - self.assertEqual(parsed_values["robot_name"], "tinyRobot2") - self.assertEqual( - parsed_values["task_profile"]["description"]["task_type"]["type"], 1 - ) - - async def test_return_empty_list_if_no_task(self): - parsed_values = await task_summary_parser("task_summary:{}") - self.assertEqual(parsed_values, {}) diff --git a/packages/reporting-server/rest_server/__init__.py b/packages/reporting-server/rest_server/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/reporting-server/rest_server/__main__.py b/packages/reporting-server/rest_server/__main__.py deleted file mode 100644 index 1d4896963..000000000 --- a/packages/reporting-server/rest_server/__main__.py +++ /dev/null @@ -1,47 +0,0 @@ -import asyncio - -from uvicorn import Config, Server - -from .app import get_app -from .app_config import SystemMode, app_config - - -class CustomUvicornServer(Server): - def run(self, sockets=None): - self.config.setup_event_loop() - return self.serve(sockets=sockets) - - -async def run(): - apps = [] - config1 = Config( - get_app(SystemMode.FLUENTD), - host=app_config.host, - port=app_config.port_fluentd, - root_path=app_config.public_url.path, - log_level=app_config.log_level.lower(), - ) - config2 = Config( - get_app(SystemMode.REPORT), - host=app_config.host, - port=app_config.port, - root_path=app_config.public_url.path, - log_level=app_config.log_level.lower(), - ) - - server1 = CustomUvicornServer(config=config1) - server2 = CustomUvicornServer(config=config2) - - apps.append(server1.run()) - apps.append(server2.run()) - - return await asyncio.gather(*apps) - - -def main(): - loop = asyncio.get_event_loop() - loop.run_until_complete(run()) - - -if __name__ == "__main__": - main() diff --git a/packages/reporting-server/rest_server/__mocks__/__init__.py b/packages/reporting-server/rest_server/__mocks__/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/reporting-server/rest_server/__mocks__/parsed_data.py b/packages/reporting-server/rest_server/__mocks__/parsed_data.py deleted file mode 100644 index 43e962d76..000000000 --- a/packages/reporting-server/rest_server/__mocks__/parsed_data.py +++ /dev/null @@ -1,23 +0,0 @@ -from . import raw_data - - -def parse_log(log): - modified_log = log["log"].replace("INFO:app.BookKeeper.", "") - return modified_log - - -# States -mock_dispenser_state: str = parse_log(raw_data.mock_dispenser_state) - -mock_door_state: str = parse_log(raw_data.mock_door_state) - -mock_fleet_state: str = parse_log(raw_data.mock_fleet_state) - -mock_task_summary: str = parse_log(raw_data.mock_task_summary) - -mock_ingestor_state: str = parse_log(raw_data.mock_ingestor_state) - -mock_lift_state: str = parse_log(raw_data.mock_lift_state) - -# Health -mock_door_health: str = parse_log(raw_data.mock_door_health) diff --git a/packages/reporting-server/rest_server/__mocks__/raw_data.py b/packages/reporting-server/rest_server/__mocks__/raw_data.py deleted file mode 100644 index 7e7c1812d..000000000 --- a/packages/reporting-server/rest_server/__mocks__/raw_data.py +++ /dev/null @@ -1,67 +0,0 @@ -# States -mock_dispenser_state = { - "log": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - "kubernetes": { - "container_name": "app-that-writes-logs", - "namespace_name": "default", - "pod_name": "app-that-writes-logs", - "container_image": "busybox:latest", - "container_image_id": "docker-pullable://busybox@sha256:ae39a6f5c07297d7ab64dbd4f82c77c874cc6a94cea29fdec309d0992574b4f7", - "pod_id": "978761c6-2a19-422f-b710-d43da2348f1f", - "host": "minikube", - "master_url": "https://10.96.0.1:443/api", - "namespace_id": "e192acd4-e6e7-46c2-8514-44a27a367749", - }, -} - -mock_door_state = { - "log": 'INFO:app.BookKeeper.door_state:{"door_time": {"sec": 1596, "nanosec": 548000000}, "door_name": "hardware_door", "current_mode": {"value": 0}}\n', - "stream": "stdout", -} - -mock_fleet_state = { - "log": 'INFO:app.BookKeeper.fleet_state:{"name": "tinyRobot", "robots": [{"name": "tinyRobot1", "model": "", "task_id": "", "seq": 3190, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1598, "nanosec": 184999999}, "x": 11.553672790527344, "y": -11.317496299743652, "yaw": -1.599777340888977, "level_name": "L1", "index": 0}, "path": []}, {"name": "tinyRobot2", "model": "", "task_id": "", "seq": 3191, "mode": {"mode": 1, "mode_request_id": 0}, "battery_percent": 100.0, "location": {"t": {"sec": 1598, "nanosec": 685999999}, "x": 15.157517433166504, "y": -11.228611946105957, "yaw": -1.5839587450027466, "level_name": "L1", "index": 0}, "path": []}]}\n', - "stream": "stdout", -} - -mock_task_summary = { - "log": 'INFO:app.BookKeeper.task_summary:{"fleet_name": "tinyRobot", "task_id": "Loop0", "task_profile": {"task_id": "Loop0", "submission_time": {"sec": 131, "nanosec": 553000000}, "description": {"start_time": {"sec": 1623383402, "nanosec": 0}, "priority": {"value": 0}, "task_type": {"type": 1}, "station": {"task_id": "", "robot_type": "", "place_name": ""}, "loop": {"task_id": "", "robot_type": "", "num_loops": 1, "start_name": "supplies", "finish_name": "coe"}, "delivery": {"task_id": "", "items": [], "pickup_place_name": "", "pickup_dispenser": "", "pickup_behavior": {"name": "", "parameters": []}, "dropoff_place_name": "", "dropoff_ingestor": "", "dropoff_behavior": {"name": "", "parameters": []}}, "clean": {"start_waypoint": ""}}}, "state": 0, "status": "", "submission_time": {"sec": 0, "nanosec": 0}, "start_time": {"sec": 1623383362, "nanosec": 348338289}, "end_time": {"sec": 1623383449, "nanosec": 79154833}, "robot_name": "tinyRobot2"}\n', - "stream": "stdout", -} - -mock_ingestor_state = { - "log": 'INFO:app.BookKeeper.ingestor_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_ingestor", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", -} - -mock_lift_state = { - "log": 'INFO:app.BookKeeper.lift_state: {"lift_name": "test_lift", "lift_time": 0, "available_floors": ["L1", "L2"], "current_floor": "L1", "destination_floor": "L2", "door_state": 0, "motion_state": 0, "available_modes": [0], "current_mode": 0, "session_id": "test_session"}\n', - "stream": "stdout", -} - - -# Health -mock_door_health = { - "log": 'INFO:app.BookKeeper.door_health:{"id": "hardware_door", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n', - "stream": "stdout", -} - -# Keycloak -mock_keycloak_login_error = { - "log": '20:41:54,721 INFO [org.keycloak.events] (default task-2) JSON_EVENT::{"type":"LOGIN_ERROR","realmId":"579ce396-83c7-4094-964d-7ea07553089f","clientId":"reporting","ipAddress":"192.168.49.1","error":"user_not_found","auth_method":"openid-connect","auth_type":"code","redirect_uri":"https://example.com/reporting","code_id":"f813403c-2732-4062-9911-cf65b89a2278","username":"test"}', - "stream": "stdout", - "kubernetes": { - "container_name": "app-that-writes-logs", - }, -} - -mock_keycloak_login = { - "log": '19:47:08,004 INFO [org.keycloak.events] (default task-3) JSON_EVENT::{"type":"LOGIN","realmId":"master","clientId":"security-admin-console","userId":"7d2f3cdd-9778-4847-ab9d-db68f70f043f","ipAddress":"172.22.0.1","auth_method":"openid-connect","auth_type":"code","redirect_uri":"http://localhost:8080/auth/admin/master/console/","consent":"no_consent_required","code_id":"ac8c82d7-45ac-4227-86d3-e167b176e26f","username":"admin"}', - "stream": "stdout", -} - -mock_keycloak_logout = { - "log": '19:47:20,649 INFO [org.keycloak.events] (default task-6) JSON_EVENT::{"type":"LOGOUT","realmId":"master","userId":"7d2f3cdd-9778-4847-ab9d-db68f70f043f","ipAddress":"172.22.0.1","redirect_uri":"http://localhost:8080/auth/admin/master/console/#/realms/master"}', - "stream": "stdout", -} diff --git a/packages/reporting-server/rest_server/app.py b/packages/reporting-server/rest_server/app.py deleted file mode 100644 index 4c38d2172..000000000 --- a/packages/reporting-server/rest_server/app.py +++ /dev/null @@ -1,53 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order - -import logging -import os -import sys - -from dependencies import auth_scheme, logger -from fastapi import Depends, FastAPI -from fastapi.middleware.cors import CORSMiddleware -from rest_server.database import setup_database -from rest_server.routers import log_router, report_router - -from .app_config import SystemMode - -logger = logging.getLogger("rest_app") -handler = logging.StreamHandler(sys.stdout) -handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT)) -logger.addHandler(handler) -if "RMF_REST_SERVER_DEBUG" in os.environ: - logger.setLevel(logging.DEBUG) -else: - logger.setLevel(logging.INFO) - -logger.info("started app") - - -def get_app(run_config=SystemMode.ALL): - - app = FastAPI() - - app.add_middleware( - CORSMiddleware, - allow_origins=["*"], - allow_credentials=False, - allow_methods=["*"], - allow_headers=["*"], - ) - - if run_config in (SystemMode.ALL, SystemMode.FLUENTD): - app.include_router(log_router, prefix="/log", tags=["log"]) - - if run_config in (SystemMode.ALL, SystemMode.REPORT): - app.include_router( - report_router, - prefix="/report", - tags=["report"], - dependencies=[Depends(auth_scheme)], - ) - - setup_database(app) - - return app diff --git a/packages/reporting-server/rest_server/app_config.py b/packages/reporting-server/rest_server/app_config.py deleted file mode 100644 index 7524d79de..000000000 --- a/packages/reporting-server/rest_server/app_config.py +++ /dev/null @@ -1,46 +0,0 @@ -import importlib.util -import os -import urllib.parse -from dataclasses import dataclass -from enum import Enum -from typing import Optional - - -class SystemMode(Enum): - ALL = 1 - REPORT = 2 - FLUENTD = 3 - - -@dataclass -class AppConfig: - host: str - port: int - port_fluentd: int - db_url: str - public_url: urllib.parse.ParseResult - static_directory: str - log_level: str - jwt_public_key: Optional[str] - oidc_url: Optional[str] - aud: str - iss: Optional[str] - log_storage_time: int - - def __post_init__(self): - self.public_url = urllib.parse.urlparse(self.public_url) - - -def _load_config() -> AppConfig: - if "RMF_REPORT_REST_SERVER_CONFIG" in os.environ: - config_file = os.environ["RMF_REPORT_REST_SERVER_CONFIG"] - else: - config_file = f"{os.path.dirname(__file__)}/default_config.py" - - spec = importlib.util.spec_from_file_location("config", config_file) - module = importlib.util.module_from_spec(spec) - spec.loader.exec_module(module) - return AppConfig(**module.config) - - -app_config = _load_config() diff --git a/packages/reporting-server/rest_server/authenticator.py b/packages/reporting-server/rest_server/authenticator.py deleted file mode 100644 index 5d24f4cd3..000000000 --- a/packages/reporting-server/rest_server/authenticator.py +++ /dev/null @@ -1,30 +0,0 @@ -import jwt - -from .app_config import app_config - - -class AuthenticationError(Exception): - pass - - -class JwtAuthenticator: - def __init__(self, pem_file: str): - """ - Authenticates with a JWT token, the client must send an auth params with - a "token" key. - :param pem_file: path to a pem encoded certificate used to verify a token. - """ - with open(pem_file, "br") as f: - self._public_key = f.read() - - def verify_token(self, token: str): - try: - jwt.decode( - token, - self._public_key, - algorithms=["RS256"], - audience=app_config.aud, - issuer=app_config.iss, - ) - except jwt.InvalidTokenError as e: - raise AuthenticationError(str(e)) from e diff --git a/packages/reporting-server/rest_server/clean_logs.py b/packages/reporting-server/rest_server/clean_logs.py deleted file mode 100644 index 04daf2d2f..000000000 --- a/packages/reporting-server/rest_server/clean_logs.py +++ /dev/null @@ -1,85 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order - - -import logging -import os -import sys -from datetime import datetime, timedelta - -from dependencies import logger -from models.tortoise_models import ( - AuthEvents, - DispenserState, - DoorState, - FleetState, - HealthStatus, - IngestorState, - LiftState, - RawLog, - TaskSummary, -) -from tortoise import Tortoise, run_async - -from .app_config import app_config - -logger = logging.getLogger("clean_script") -handler = logging.StreamHandler(sys.stdout) -handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT)) -logger.addHandler(handler) -if "RMF_REST_SERVER_DEBUG" in os.environ: - logger.setLevel(logging.DEBUG) -else: - logger.setLevel(logging.INFO) - -logger.info("started clean up") - -reportingModels = [ - AuthEvents, - DispenserState, - DoorState, - FleetState, - HealthStatus, - IngestorState, - LiftState, - RawLog, - TaskSummary, -] - -number_of_days_to_keep_logs = app_config.log_storage_time + 60 - -logger.info( - "You are about to delete all the logs older than %s days", - str(app_config.log_storage_time), -) - - -async def delete_logs(): - - for model in reportingModels: - rows = await model.filter( - created__lt=datetime.now() - timedelta(days=number_of_days_to_keep_logs) - ) - - logger.info("%s has %s rows > 7 days", str(model.__module__), str(len(rows))) - - await model.filter( - created__lt=datetime.now() - timedelta(days=number_of_days_to_keep_logs) - ).delete() - - -async def run(): - await Tortoise.init( - db_url=app_config.db_url, - modules={"models": ["models.tortoise_models"]}, - ) - await Tortoise.generate_schemas() - await delete_logs() - - -def main(): - run_async(run()) - - -if __name__ == "__main__": - main() diff --git a/packages/reporting-server/rest_server/database.py b/packages/reporting-server/rest_server/database.py deleted file mode 100644 index b55b6e61f..000000000 --- a/packages/reporting-server/rest_server/database.py +++ /dev/null @@ -1,18 +0,0 @@ -from fastapi import FastAPI -from tortoise import Tortoise -from tortoise.contrib.fastapi import register_tortoise - -from .app_config import app_config - - -def setup_database(app: FastAPI): - register_tortoise( - app, - db_url=app_config.db_url, - modules={"models": ["models.tortoise_models"]}, - generate_schemas=True, - add_exception_handlers=True, - ) - - -Tortoise.init_models(["models.tortoise_models"], "models") diff --git a/packages/reporting-server/rest_server/default_config.py b/packages/reporting-server/rest_server/default_config.py deleted file mode 100644 index f843f5875..000000000 --- a/packages/reporting-server/rest_server/default_config.py +++ /dev/null @@ -1,30 +0,0 @@ -# pylint: disable=line-too-long -config = { - "host": "127.0.0.1", # ip or hostname to bind the socket to - "port": 8002, - "port_fluentd": 8003, - "db_url": "sqlite://:memory:", - # url that reporting-server is being served on. - # When being a proxy, this must be the url that reporting-server is mounted on. - # E.g. https://example.com/logserver/api/v1 - "public_url": "http://localhost:8002", - # The directory where static files should be stored. - "static_directory": "static", - "log_level": "INFO", # https://docs.python.org/3.8/library/logging.html#levels - # path to a PEM encoded RSA public key which is used to verify JWT tokens, if the path is relative, it is based on the working dir. - "jwt_public_key": None, - # url to the oidc endpoint, used to authenticate rest requests, it should point to the well known endpoint, e.g. - # http://localhost:8080/auth/realms/rmf-web/.well-known/openid-configuration. - # NOTE: This is ONLY used for documentation purposes, the "jwt_public_key" will be the - # only key used to verify a token. - "oidc_url": None, - # Audience the access token is meant for. Can also be an array. - # Used to verify the "aud" claim. - "aud": "localhost", - # url or string that identifies the entity that issued the jwt token - # Used to verify the "iss" claim - # If iss is set to None, it means that authentication should be disabled - "iss": None, - # Number of days to store logs - "log_storage_time": 7, -} diff --git a/packages/reporting-server/rest_server/repositories/__init__.py b/packages/reporting-server/rest_server/repositories/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/reporting-server/rest_server/repositories/log_creation_handler.py b/packages/reporting-server/rest_server/repositories/log_creation_handler.py deleted file mode 100644 index 441bfc08c..000000000 --- a/packages/reporting-server/rest_server/repositories/log_creation_handler.py +++ /dev/null @@ -1,101 +0,0 @@ -import logging - -from dependencies import logger -from models.tortoise_models.auth_events import AuthEvents -from models.tortoise_models.container import Container -from models.tortoise_models.raw_log import RawLog -from parsers.auth_event_parser import auth_event_parser -from parsers.log_type_parser import get_log_type - -# Function that receives all the logs and store them on the database - -logger = logging.getLogger("rest_app:log_creation_handler") - - -""" -Formats support: - -1. [{log:"text or json", kubernetes:{...} },{log:{...}, kubernetes:{...}] - -2. ['text','text','text'] - -""" - - -class RawLogHandler: - @staticmethod - def _is_valid_request(logs: list): - if len(logs) == 0: - return False - return True - - @staticmethod - async def _dict_raw_log_handler(log: dict): - log_level = get_log_type(log["log"], log["stream"]) - - if "kubernetes" in log and "container_name" in log["kubernetes"]: - container = await Container.get_or_create( - name=log["kubernetes"]["container_name"] - ) - - await RawLog.create( - level=log_level, - message=log["log"], - container=container[0], - ) - else: - await RawLog.create(level=log_level, message=log["log"]) - - @staticmethod - async def _text_raw_log_handler(log: str): - log_level = get_log_type(log) - await RawLog.create(level=log_level, message=log) - - @staticmethod - async def create_raw_log(logs: list): - if not RawLogHandler._is_valid_request(logs): - return "No valid data" - - error_logs = [] - - for log in logs: - try: - if isinstance(log, dict): - if "log" not in log: - error_msg = ( - "Error: format not supported. Failed to create this log " - + str(log) - ) - logger.error(error_msg) - error_logs.append(error_msg) - continue - await RawLogHandler._dict_raw_log_handler(log) - - elif isinstance(log, str): - if log.isspace(): - continue - await RawLogHandler._text_raw_log_handler(log) - - except (SyntaxError, ValueError, KeyError) as e: - error_logs.append("Error:" + str(e) + "Log:" + str(log)) - - return error_logs if len(error_logs) > 0 else "Logs were saved correctly" - - -async def create_keycloak_log(logs: list): - if len(logs) == 0: - return "No data received" - error_logs = [] - - for log in logs: - try: - # If it not data app, we will skip it because the create_raw_log in theory will register that log - if "JSON_EVENT::" not in log["log"]: - continue - auth_event = await auth_event_parser(log["log"]) - await AuthEvents.create(**auth_event) - - except (SyntaxError, ValueError, KeyError) as e: - error_logs.append("Error:" + str(e) + "Log:" + str(log)) - - return error_logs if len(error_logs) > 0 else "Logs were saved correctly" diff --git a/packages/reporting-server/rest_server/repositories/parser_dispatcher.py b/packages/reporting-server/rest_server/repositories/parser_dispatcher.py deleted file mode 100644 index 15ecc6683..000000000 --- a/packages/reporting-server/rest_server/repositories/parser_dispatcher.py +++ /dev/null @@ -1,103 +0,0 @@ -from models.tortoise_models.dispenser_state import DispenserState -from models.tortoise_models.door import Door -from models.tortoise_models.door_state import DoorState -from models.tortoise_models.fleet import Fleet, Robot -from models.tortoise_models.fleet_state import FleetState -from models.tortoise_models.health import Device, HealthStatus -from models.tortoise_models.ingestor_state import IngestorState -from models.tortoise_models.lift import Lift -from models.tortoise_models.lift_state import LiftState -from models.tortoise_models.task_summary import TaskSummary -from parsers.dispenser_state_parser import dispenser_state_parser -from parsers.doors_state_parser import doors_state_parser -from parsers.fleet_state_parser import fleet_state_parser -from parsers.health_parser import health_status_parser -from parsers.ingestor_state_parser import ingestor_state_parser -from parsers.lift_state_parser import lift_state_parser -from parsers.task_summary_parser import task_summary_parser - - -async def create_health_status(data): - device = await Device.get_or_create(actor=data["actor_id"], type=data["device"]) - await HealthStatus.create( - device=device[0], - health_status=data["health_status"], - health_message=data["health_message"], - ) - - -# This function dispatchs to the correct handler dependending on the text content. - - -async def log_model_dispatcher(fullstring: str): - if "dispenser_state:" in fullstring.lower(): - data = await dispenser_state_parser(fullstring) - await DispenserState.create(**data) - - elif "door_state:" in fullstring.lower(): - data = await doors_state_parser(fullstring) - door = await Door.get_or_create(name=data["name"]) - await DoorState.create(state=data["state"], door=door[0]) - - elif "fleet_state:" in fullstring.lower(): - robot_states = await fleet_state_parser(fullstring) - - if len(robot_states) == 0: - return - - for robot_state in robot_states: - fleet = await Fleet.get_or_create(name=robot_state["fleet_name"]) - robot = await Robot.get_or_create( - name=robot_state["robot_name"], model=robot_state["robot_model"] - ) - del robot_state["fleet_name"] - del robot_state["robot_name"] - del robot_state["robot_model"] - - await FleetState.create( - fleet=fleet[0], - robot=robot[0], - **robot_state, - ) - - elif "lift_state:" in fullstring.lower(): - data = await lift_state_parser(fullstring) - lift = await Lift.get_or_create(name=data["name"]) - del data["name"] - await LiftState.create(lift=lift[0], **data) - - elif "ingestor_state:" in fullstring.lower(): - data = await ingestor_state_parser(fullstring) - await IngestorState.create(**data) - - elif "task_summary:" in fullstring.lower(): - data = await task_summary_parser(fullstring) - fleet = await Fleet.get_or_create(name=data["fleet_name"]) - robot = await Robot.get_or_create( - name=data["robot_name"], - ) - del data["fleet_name"] - del data["robot_name"] - await TaskSummary.create(fleet=fleet[0], robot=robot[0], **data) - - # Health - elif "dispenser_health:" in fullstring.lower(): - data = await health_status_parser(fullstring, "dispenser_health") - await create_health_status(data) - - elif "door_health:" in fullstring.lower(): - data = await health_status_parser(fullstring, "door_health") - - await create_health_status(data) - - elif "ingestor_health:" in fullstring.lower(): - data = await health_status_parser(fullstring, "ingestor_health") - await create_health_status(data) - - elif "lift_health:" in fullstring.lower(): - data = await health_status_parser(fullstring, "lift_health") - await create_health_status(data) - - elif "robot_health:" in fullstring.lower(): - data = await health_status_parser(fullstring, "robot_health") - await create_health_status(data) diff --git a/packages/reporting-server/rest_server/repositories/report/__init__.py b/packages/reporting-server/rest_server/repositories/report/__init__.py deleted file mode 100644 index 59716c060..000000000 --- a/packages/reporting-server/rest_server/repositories/report/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from .auth_event_report import ( - get_user_login_failure_report, - get_user_login_report, - get_user_logout_report, -) -from .dispenser_state import get_dispenser_state -from .door_state import get_door_state -from .fleet_state import get_fleet_state -from .health import get_health -from .ingestor_state import get_ingestor_state -from .lift_state import get_lift_state -from .raw_log import get_all_raw_logs, get_containers -from .task_summary import get_task_summary diff --git a/packages/reporting-server/rest_server/repositories/report/auth_event_report.py b/packages/reporting-server/rest_server/repositories/report/auth_event_report.py deleted file mode 100644 index e028f965d..000000000 --- a/packages/reporting-server/rest_server/repositories/report/auth_event_report.py +++ /dev/null @@ -1,59 +0,0 @@ -from datetime import timezone -from typing import Optional - -from dateutil import parser -from models.pydantic_models import AuthEvents_Pydantic -from models.tortoise_models.auth_events import AuthEvents - - -async def get_user_login_report( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - return await get_auth_events("LOGIN", offset, limit, to_log_date, from_log_date) - - -async def get_user_logout_report( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - return await get_auth_events("LOGOUT", offset, limit, to_log_date, from_log_date) - - -async def get_user_login_failure_report( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - return await get_auth_events( - "LOGIN_ERROR", offset, limit, to_log_date, from_log_date - ) - - -async def get_auth_events( - event_type: str, - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = {} - query["event_type"] = event_type - if from_log_date: - local_time = parser.parse(from_log_date) - utc_time = local_time.astimezone(timezone.utc) - query["created__gte"] = utc_time - - if to_log_date: - to_log_local_time = parser.parse(to_log_date) - to_log_utc_time = to_log_local_time.astimezone(timezone.utc) - query["created__lt"] = to_log_utc_time - - return await AuthEvents_Pydantic.from_queryset( - AuthEvents.filter(**query).offset(offset).limit(limit).order_by("-created") - ) diff --git a/packages/reporting-server/rest_server/repositories/report/dispenser_state.py b/packages/reporting-server/rest_server/repositories/report/dispenser_state.py deleted file mode 100644 index 32322b4ee..000000000 --- a/packages/reporting-server/rest_server/repositories/report/dispenser_state.py +++ /dev/null @@ -1,18 +0,0 @@ -from typing import Optional - -from models.pydantic_models import DispenserState_Pydantic -from models.tortoise_models.dispenser_state import DispenserState -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_dispenser_state( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = get_date_range_query(to_log_date, from_log_date) - - return await DispenserState_Pydantic.from_queryset( - DispenserState.filter(**query).offset(offset).limit(limit).order_by("-created") - ) diff --git a/packages/reporting-server/rest_server/repositories/report/door_state.py b/packages/reporting-server/rest_server/repositories/report/door_state.py deleted file mode 100644 index cb8c1ba99..000000000 --- a/packages/reporting-server/rest_server/repositories/report/door_state.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import Optional - -from models.pydantic_models import DoorState_Pydantic -from models.tortoise_models.door_state import DoorState -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_door_state( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - - query = get_date_range_query(to_log_date, from_log_date) - - queryset = ( - DoorState.filter(**query) - .prefetch_related("door") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await DoorState_Pydantic.from_queryset(queryset) diff --git a/packages/reporting-server/rest_server/repositories/report/fleet_state.py b/packages/reporting-server/rest_server/repositories/report/fleet_state.py deleted file mode 100644 index 1423e228c..000000000 --- a/packages/reporting-server/rest_server/repositories/report/fleet_state.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import Optional - -from models.pydantic_models import FleetState_Pydantic -from models.tortoise_models.fleet_state import FleetState -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_fleet_state( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = get_date_range_query(to_log_date, from_log_date) - - queryset = ( - FleetState.filter(**query) - .prefetch_related("fleet") - .prefetch_related("robot") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await FleetState_Pydantic.from_queryset(queryset) diff --git a/packages/reporting-server/rest_server/repositories/report/health.py b/packages/reporting-server/rest_server/repositories/report/health.py deleted file mode 100644 index 5d3ca2ca3..000000000 --- a/packages/reporting-server/rest_server/repositories/report/health.py +++ /dev/null @@ -1,24 +0,0 @@ -from typing import Optional - -from models.pydantic_models import HealthStatus_Pydantic -from models.tortoise_models.health import HealthStatus -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_health( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = get_date_range_query(to_log_date, from_log_date) - - queryset = ( - HealthStatus.filter(**query) - .prefetch_related("device") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await HealthStatus_Pydantic.from_queryset(queryset) diff --git a/packages/reporting-server/rest_server/repositories/report/ingestor_state.py b/packages/reporting-server/rest_server/repositories/report/ingestor_state.py deleted file mode 100644 index 6c6050bef..000000000 --- a/packages/reporting-server/rest_server/repositories/report/ingestor_state.py +++ /dev/null @@ -1,18 +0,0 @@ -from typing import Optional - -from models.pydantic_models import IngestorState_Pydantic -from models.tortoise_models.ingestor_state import IngestorState -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_ingestor_state( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = get_date_range_query(to_log_date, from_log_date) - - return await IngestorState_Pydantic.from_queryset( - IngestorState.filter(**query).offset(offset).limit(limit).order_by("-created") - ) diff --git a/packages/reporting-server/rest_server/repositories/report/lift_state.py b/packages/reporting-server/rest_server/repositories/report/lift_state.py deleted file mode 100644 index e221816c5..000000000 --- a/packages/reporting-server/rest_server/repositories/report/lift_state.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import Optional - -from models.pydantic_models import LiftState_Pydantic -from models.tortoise_models.lift_state import LiftState -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_lift_state( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - - query = get_date_range_query(to_log_date, from_log_date) - - queryset = ( - LiftState.filter(**query) - .prefetch_related("lift") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await LiftState_Pydantic.from_queryset(queryset) diff --git a/packages/reporting-server/rest_server/repositories/report/raw_log.py b/packages/reporting-server/rest_server/repositories/report/raw_log.py deleted file mode 100644 index ec563c622..000000000 --- a/packages/reporting-server/rest_server/repositories/report/raw_log.py +++ /dev/null @@ -1,49 +0,0 @@ -from datetime import timezone -from typing import Optional - -from dateutil import parser -from models.pydantic_models import RawLog_Pydantic -from models.tortoise_models.container import Container -from models.tortoise_models.raw_log import RawLog - - -async def get_all_raw_logs( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, - log_level: Optional[str] = None, - container_label: Optional[str] = None, -): - query = {} - - if from_log_date: - local_time = parser.parse(from_log_date) - utc_time = local_time.astimezone(timezone.utc) - query["created__gte"] = utc_time - - if to_log_date: - to_log_local_time = parser.parse(to_log_date) - to_log_utc_time = to_log_local_time.astimezone(timezone.utc) - query["created__lt"] = to_log_utc_time - - if container_label and container_label != "all": - query["container__name__iexact"] = container_label - - if log_level and log_level != "all": - query["level__iexact"] = log_level - - rawlog_queryset = ( - RawLog.filter(**query) - .prefetch_related("container") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await RawLog_Pydantic.from_queryset(rawlog_queryset) - - -async def get_containers(): - raw_containers = await Container.all() - return [x.name for x in raw_containers] diff --git a/packages/reporting-server/rest_server/repositories/report/task_summary.py b/packages/reporting-server/rest_server/repositories/report/task_summary.py deleted file mode 100644 index 609b4c5f9..000000000 --- a/packages/reporting-server/rest_server/repositories/report/task_summary.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import Optional - -from models.pydantic_models import TaskSummary_Pydantic -from models.tortoise_models.task_summary import TaskSummary -from rest_server.repositories.report.utils import get_date_range_query - - -async def get_task_summary( - offset: int, - limit: int, - to_log_date: Optional[str] = None, - from_log_date: Optional[str] = None, -): - query = get_date_range_query(to_log_date, from_log_date) - - queryset = ( - TaskSummary.filter(**query) - .prefetch_related("fleet") - .prefetch_related("robot") - .offset(offset) - .limit(limit) - .order_by("-created") - ) - - return await TaskSummary_Pydantic.from_queryset(queryset) diff --git a/packages/reporting-server/rest_server/repositories/report/test_auth_event_report.py b/packages/reporting-server/rest_server/repositories/report/test_auth_event_report.py deleted file mode 100644 index 1045dd354..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_auth_event_report.py +++ /dev/null @@ -1,75 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.auth_events import AuthEvents -from rest_server.app import get_app -from rest_server.repositories.report.auth_event_report import ( - get_auth_events, - get_user_login_failure_report, - get_user_login_report, - get_user_logout_report, -) -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportAuthEventServerLogRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - await AuthEvents.create( - username="test_user", - user_keycloak_id="test_id", - event_type="LOGIN_ERROR", - realm_id="test", - client_id="test", - ) - - await AuthEvents.create( - username="test_user", - user_keycloak_id="test_id", - event_type="LOGIN", - realm_id="test", - client_id="test", - ) - - await AuthEvents.create( - username="test_user", - user_keycloak_id="test_id", - event_type="LOGOUT", - realm_id="test", - client_id="test", - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_user_login_report(self): - login_list = await get_user_login_report(0, 10) - self.assertEqual(len(login_list), 1) - - async def test_get_user_logout_report(self): - logout_list = await get_user_logout_report(0, 10) - self.assertEqual(len(logout_list), 1) - - async def test_get_user_login_failure_report(self): - login_error_list = await get_user_login_failure_report(0, 10) - self.assertEqual(len(login_error_list), 1) - - async def test_get_auth_events(self): - login_list = await get_auth_events("LOGIN", 0, 10) - login_error_list = await get_auth_events("LOGIN_ERROR", 0, 10) - logout_list = await get_auth_events("LOGOUT", 0, 10) - - self.assertEqual(len(login_error_list), 1) - self.assertEqual(len(logout_list), 1) - self.assertEqual(len(login_list), 1) - - self.assertEqual(login_list[0].event_type, "LOGIN") - self.assertEqual(login_error_list[0].event_type, "LOGIN_ERROR") - self.assertEqual(logout_list[0].event_type, "LOGOUT") diff --git a/packages/reporting-server/rest_server/repositories/report/test_dispenser_state.py b/packages/reporting-server/rest_server/repositories/report/test_dispenser_state.py deleted file mode 100644 index 615ffd4da..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_dispenser_state.py +++ /dev/null @@ -1,35 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.dispenser_state import DispenserState, DispenserStateEnum -from rest_server.app import get_app -from rest_server.repositories.report.dispenser_state import get_dispenser_state -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportDispenserState(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - await DispenserState.create( - guid="guid1", - state=DispenserStateEnum.IDLE, - ) - - await DispenserState.create( - guid="guid2", - state=DispenserStateEnum.IDLE, - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_dispenser_states(self): - dispenser_list = await get_dispenser_state(0, 10) - self.assertEqual(len(dispenser_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_door_state.py b/packages/reporting-server/rest_server/repositories/report/test_door_state.py deleted file mode 100644 index f4f81fbb3..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_door_state.py +++ /dev/null @@ -1,31 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.door import Door -from models.tortoise_models.door_state import DoorState, DoorStateEnum -from rest_server.app import get_app -from rest_server.repositories.report.door_state import get_door_state -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportDoorState(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - door = await Door.create(name="Door 1") - - await DoorState.create(door=door, state=DoorStateEnum.CLOSED) - await DoorState.create(door=door, state=DoorStateEnum.CLOSED) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_door_states(self): - door_list = await get_door_state(0, 10) - self.assertEqual(len(door_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_fleet_state.py b/packages/reporting-server/rest_server/repositories/report/test_fleet_state.py deleted file mode 100644 index 7f31ac699..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_fleet_state.py +++ /dev/null @@ -1,48 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.fleet import Fleet, Robot -from models.tortoise_models.fleet_state import FleetState, RobotStateEnum -from rest_server.app import get_app -from rest_server.repositories.report.fleet_state import get_fleet_state -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportFleetState(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - robot = await Robot.create(name="Robot 1") - fleet = await Fleet.create(name="Fleet 1") - - await FleetState.create( - fleet=fleet, - robot=robot, - robot_battery_percent="100", - robot_location="1", - robot_mode=RobotStateEnum.MODE_WAITING, - robot_seq=1, - robot_task_id="test", - ) - await FleetState.create( - fleet=fleet, - robot=robot, - robot_battery_percent="100", - robot_location="1", - robot_mode=RobotStateEnum.MODE_WAITING, - robot_seq=2, - robot_task_id="test", - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_fleet_states(self): - fleet_list = await get_fleet_state(0, 10) - self.assertEqual(len(fleet_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_health.py b/packages/reporting-server/rest_server/repositories/report/test_health.py deleted file mode 100644 index 67ebb4d40..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_health.py +++ /dev/null @@ -1,36 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.health import Device, HealthStatus, HealthStatusEmun -from rest_server.app import get_app -from rest_server.repositories.report.health import get_health -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportHealth(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - device1 = await Device.create(type="door") - device2 = await Device.create(type="lift") - await HealthStatus.create( - device=device1, - health_status=HealthStatusEmun.HEALTHY, - ) - await HealthStatus.create( - device=device2, - health_status=HealthStatusEmun.HEALTHY, - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_health_status(self): - health_list = await get_health(0, 10) - self.assertEqual(len(health_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_ingestor_state.py b/packages/reporting-server/rest_server/repositories/report/test_ingestor_state.py deleted file mode 100644 index 369926be6..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_ingestor_state.py +++ /dev/null @@ -1,35 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.ingestor_state import IngestorState, IngestorStateEnum -from rest_server.app import get_app -from rest_server.repositories.report.ingestor_state import get_ingestor_state -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportIngestorState(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - await IngestorState.create( - guid="guid1", - state=IngestorStateEnum.IDLE, - ) - - await IngestorState.create( - guid="guid2", - state=IngestorStateEnum.IDLE, - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_ingestor_states(self): - ingestor_list = await get_ingestor_state(0, 10) - self.assertEqual(len(ingestor_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_lift_state.py b/packages/reporting-server/rest_server/repositories/report/test_lift_state.py deleted file mode 100644 index ffeaa4b86..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_lift_state.py +++ /dev/null @@ -1,55 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order - -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models.lift import Lift -from models.tortoise_models.lift_state import ( - LiftDoorStateEmun, - LiftMotionStateEnum, - LiftState, - LiftStateEnum, -) -from rest_server.app import get_app -from rest_server.repositories.report.lift_state import get_lift_state -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestReportHealth(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - lift1 = await Lift.create(name="1") - lift2 = await Lift.create(name="2") - - await LiftState.create( - lift=lift1, - door_state=LiftDoorStateEmun.DOOR_CLOSED, - state=LiftStateEnum.MODE_UNKNOWN, - destination_floor="L2", - motion_state=LiftMotionStateEnum.MOTION_STOPPED, - current_floor="L1", - session_id="123", - ) - - await LiftState.create( - lift=lift2, - door_state=LiftDoorStateEmun.DOOR_CLOSED, - state=LiftStateEnum.MODE_UNKNOWN, - destination_floor="L3", - motion_state=LiftMotionStateEnum.MOTION_STOPPED, - current_floor="L2", - session_id="123", - ) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_get_lift_state(self): - lift_list = await get_lift_state(0, 10) - self.assertEqual(len(lift_list), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_raw_log.py b/packages/reporting-server/rest_server/repositories/report/test_raw_log.py deleted file mode 100644 index 6b52a3c28..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_raw_log.py +++ /dev/null @@ -1,45 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from rest_server.app import get_app -from rest_server.repositories.log_creation_handler import RawLogHandler -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -from .raw_log import get_containers - -app = get_app() - - -class TestRmfServerLogRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_raw_log_handle_creation_of_logs_with_container_name(self): - data = [ - { - "log": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - "kubernetes": {"container_name": "container1"}, - }, - { - "log": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - "kubernetes": {"container_name": "container2"}, - }, - { - "log": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - "kubernetes": {"container_name": "container2"}, - }, - ] - - await RawLogHandler.create_raw_log(data) - containers = await get_containers() - self.assertEqual(len(containers), 2) diff --git a/packages/reporting-server/rest_server/repositories/report/test_utils.py b/packages/reporting-server/rest_server/repositories/report/test_utils.py deleted file mode 100644 index 708c739d7..000000000 --- a/packages/reporting-server/rest_server/repositories/report/test_utils.py +++ /dev/null @@ -1,39 +0,0 @@ -from datetime import timezone -from unittest import TestCase - -from dateutil import parser -from rest_server.repositories.report.utils import get_date_range_query - - -class TestCaseUtils(TestCase): - def setUp(self): - self.raw_from_log_date = "2018-01-01" - self.raw_to_log_date = "2018-02-01" - - self.from_log_date = parser.parse(self.raw_from_log_date).astimezone( - timezone.utc - ) - self.to_log_date = parser.parse(self.raw_to_log_date).astimezone(timezone.utc) - - def test_get_date_range_query_with_no_date_range(self): - self.assertEqual(get_date_range_query(), {}) - - def test_get_date_range_query(self): - self.assertEqual( - get_date_range_query( - to_log_date=self.raw_to_log_date, from_log_date=self.raw_from_log_date - ), - {"created__gte": self.from_log_date, "created__lt": self.to_log_date}, - ) - - def test_get_date_range_with_to_log_date(self): - self.assertEqual( - get_date_range_query(to_log_date=self.raw_to_log_date), - {"created__lt": self.to_log_date}, - ) - - def test_get_date_range_with_from_log_date(self): - self.assertEqual( - get_date_range_query(from_log_date=self.raw_from_log_date), - {"created__gte": self.from_log_date}, - ) diff --git a/packages/reporting-server/rest_server/repositories/report/utils.py b/packages/reporting-server/rest_server/repositories/report/utils.py deleted file mode 100644 index a40a67a40..000000000 --- a/packages/reporting-server/rest_server/repositories/report/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -from datetime import timezone -from typing import Optional - -from dateutil import parser - - -def get_date_range_query( - to_log_date: Optional[str] = None, from_log_date: Optional[str] = None -): - - query = {} - - if from_log_date: - local_time = parser.parse(from_log_date) - utc_time = local_time.astimezone(timezone.utc) - query["created__gte"] = utc_time - - if to_log_date: - to_log_local_time = parser.parse(to_log_date) - to_log_utc_time = to_log_local_time.astimezone(timezone.utc) - query["created__lt"] = to_log_utc_time - - return query diff --git a/packages/reporting-server/rest_server/repositories/rmf_log_creation_handler.py b/packages/reporting-server/rest_server/repositories/rmf_log_creation_handler.py deleted file mode 100644 index 574b46095..000000000 --- a/packages/reporting-server/rest_server/repositories/rmf_log_creation_handler.py +++ /dev/null @@ -1,28 +0,0 @@ -import logging - -from .parser_dispatcher import log_model_dispatcher - -# Function that receives all the logs and store them on the database - -logger = logging.getLogger("rest_app:log_creation_handler") - - -# We want to grab specific data from this list of strings, so we need to preprocess -# this information -async def create_rmf_server_log(logs: list): - if len(logs) == 0: - return "No data received" - error_logs = [] - - for log in logs: - try: - # If it not data app, we will skip it because the create_raw_log in theory will register that log - if "INFO:app.BookKeeper." not in log["log"]: - continue - modified_log = log["log"].replace("INFO:app.BookKeeper.", "") - await log_model_dispatcher(modified_log) - - except (SyntaxError, ValueError, KeyError) as e: - error_logs.append("Error:" + str(e) + "Log:" + str(log)) - - return error_logs if len(error_logs) > 0 else "Logs were saved correctly" diff --git a/packages/reporting-server/rest_server/repositories/test_log_creation_handler.py b/packages/reporting-server/rest_server/repositories/test_log_creation_handler.py deleted file mode 100644 index 668586a75..000000000 --- a/packages/reporting-server/rest_server/repositories/test_log_creation_handler.py +++ /dev/null @@ -1,75 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models import RawLog -from models.tortoise_models.auth_events import AuthEvents -from rest_server.__mocks__ import raw_data -from rest_server.app import get_app -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -from .log_creation_handler import RawLogHandler, create_keycloak_log - -app = get_app() - - -class TestCaseRawLogCreationRepository(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - self.RawLogHandler = RawLogHandler() - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_no_data_sent_to_rawlog(self): - response = await RawLogHandler.create_raw_log([]) - self.assertEqual(response, "No valid data") - - async def test_create_a_raw_log_correctly(self): - data = [ - raw_data.mock_dispenser_state, - raw_data.mock_door_state, - "this is a test", - ] - response = await RawLogHandler.create_raw_log(data) - self.assertEqual(response, "Logs were saved correctly") - - async def test_raw_log_handle_creation_of_logs(self): - data = [ - raw_data.mock_dispenser_state, - raw_data.mock_door_state, - "this is a test", - ] - await RawLogHandler.create_raw_log(data) - dispenser = await RawLog.all() - self.assertEqual(len(dispenser), 3) - - async def test_raw_log_handle_creation_of_logs_with_container_name(self): - await RawLogHandler.create_raw_log([raw_data.mock_dispenser_state]) - log = await RawLog.first().prefetch_related("container") - self.assertEqual(log.container.name, "app-that-writes-logs") - - -class TestCaseKeycloakCreationRepository(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - self.RawLogHandler = RawLogHandler() - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_keycloak_log_creation(self): - await create_keycloak_log( - [raw_data.mock_keycloak_login_error, raw_data.mock_keycloak_login] - ) - logs = await AuthEvents.all() - self.assertEqual(len(logs), 2) - - async def test_keycloak_logout_creation(self): - await create_keycloak_log([raw_data.mock_keycloak_logout]) - logs = await AuthEvents.all() - self.assertEqual(len(logs), 1) diff --git a/packages/reporting-server/rest_server/repositories/test_parser_dispatcher.py b/packages/reporting-server/rest_server/repositories/test_parser_dispatcher.py deleted file mode 100644 index 10d135834..000000000 --- a/packages/reporting-server/rest_server/repositories/test_parser_dispatcher.py +++ /dev/null @@ -1,120 +0,0 @@ -import unittest - -# Husky is sorting tortoise in a way that tortoise goes after our custom packages. -# and because of that the lint is failing -import tortoise -from fastapi.testclient import TestClient -from models.tortoise_models import ( - Device, - DispenserState, - Door, - DoorState, - FleetState, - HealthStatus, - IngestorState, - Lift, - LiftState, - TaskSummary, -) -from rest_server.__mocks__ import parsed_data -from rest_server.app import get_app -from rest_server.test_utils import start_test_database - -from .parser_dispatcher import log_model_dispatcher - -app = get_app() - - -class TestCaseLogParserDispatcher(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await tortoise.Tortoise.close_connections() - - async def test_dispenser_state_created(self): - await log_model_dispatcher(parsed_data.mock_dispenser_state) - instance = await DispenserState.first() - self.assertEqual(instance.guid, "coke_dispenser") - - async def test_door_state_created(self): - await log_model_dispatcher(parsed_data.mock_door_state) - door = await Door.first() - status = await DoorState.first() - self.assertEqual(door.name, "hardware_door") - self.assertIsNotNone(status) - - async def test_fleet_state_created(self): - await log_model_dispatcher(parsed_data.mock_fleet_state) - instance = await FleetState.all().prefetch_related("robot", "fleet") - self.assertEqual(len(instance), 2) - - async def test_fleet_state_fk_created(self): - await log_model_dispatcher(parsed_data.mock_fleet_state) - instance = await FleetState.all().prefetch_related("robot", "fleet") - self.assertEqual(len(instance), 2) - - self.assertEqual(instance[0].fleet.name, "tinyRobot") - self.assertEqual(instance[0].robot.name, "tinyRobot1") - - self.assertEqual(instance[1].fleet.name, "tinyRobot") - self.assertEqual(instance[1].robot.name, "tinyRobot2") - - async def test_task_summary_created(self): - await log_model_dispatcher(parsed_data.mock_task_summary) - instance = await TaskSummary.first() - self.assertEqual(instance.task_id, "Loop0") - self.assertEqual(instance.status, None) - - async def test_ingestor_state_created(self): - await log_model_dispatcher(parsed_data.mock_ingestor_state) - instance = await IngestorState.first() - self.assertEqual(instance.guid, "coke_ingestor") - - async def test_lift_state_created(self): - await log_model_dispatcher(parsed_data.mock_lift_state) - lift = await Lift.first() - self.assertIsNotNone(lift.name, "test_lift") - instance = await LiftState.first() - self.assertIsNotNone(instance) - self.assertEqual(instance.current_floor, "L1") - - -class TestCaseHealthParserDispatcher(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await tortoise.Tortoise.close_connections() - - async def test_door_health_created(self): - data = 'door_health:{"id": "hardware_door", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n' - await log_model_dispatcher(data) - instance = await Device.first() - self.assertEqual(instance.actor, "hardware_door") - self.assertEqual(instance.type, "door_health") - - health_instance = await HealthStatus.first() - self.assertIsNotNone(health_instance) - - async def test_robot_health_created(self): - data = 'robot_health:{"id": "robot1", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n' - await log_model_dispatcher(data) - instance = await Device.first() - self.assertEqual(instance.actor, "robot1") - self.assertEqual(instance.type, "robot_health") - - health_instance = await HealthStatus.first() - self.assertIsNotNone(health_instance) - - async def test_lift_health_created(self): - data = 'lift_health:{"id": "lift1", "health_status": "HealthStatus.HEALTHY", "health_message": null}\n' - await log_model_dispatcher(data) - instance = await Device.first() - self.assertEqual(instance.actor, "lift1") - self.assertEqual(instance.type, "lift_health") - - health_instance = await HealthStatus.first() - self.assertIsNotNone(health_instance) diff --git a/packages/reporting-server/rest_server/repositories/test_rmf_log_creation_handler.py b/packages/reporting-server/rest_server/repositories/test_rmf_log_creation_handler.py deleted file mode 100644 index 2a519daef..000000000 --- a/packages/reporting-server/rest_server/repositories/test_rmf_log_creation_handler.py +++ /dev/null @@ -1,54 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order -import unittest - -from fastapi.testclient import TestClient -from models.tortoise_models import DispenserState, Door, DoorState -from rest_server.__mocks__ import raw_data -from rest_server.app import get_app -from rest_server.repositories.rmf_log_creation_handler import create_rmf_server_log -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -app = get_app() - - -class TestCaseLogRMFServerCreationRepository(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - async def test_no_data_sent_to_rmfserver(self): - response = await create_rmf_server_log([]) - self.assertEqual(response, "No data received") - - async def test_create_a_rmfserver_log_correctly(self): - data = [raw_data.mock_dispenser_state, raw_data.mock_door_state] - response = await create_rmf_server_log(data) - self.assertEqual(response, "Logs were saved correctly") - - async def test_rmfserver_handle_and_return_error(self): - data = [ - { - "log2": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - }, - raw_data.mock_door_state, - ] - - response = await create_rmf_server_log(data) - self.assertEqual(len(response), 1) - - async def test_rmfserver_handle_creation_of_logs(self): - await create_rmf_server_log( - [raw_data.mock_dispenser_state, raw_data.mock_door_state] - ) - dispenser_state = await DispenserState.first() - door_state = await DoorState.first() - door = await Door.first() - self.assertEqual(dispenser_state.guid, "coke_dispenser") - self.assertEqual(door.name, "hardware_door") - self.assertIsNotNone(door_state) diff --git a/packages/reporting-server/rest_server/routers/__init__.py b/packages/reporting-server/rest_server/routers/__init__.py deleted file mode 100644 index abe2d9853..000000000 --- a/packages/reporting-server/rest_server/routers/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .log import router as log_router -from .report import router as report_router diff --git a/packages/reporting-server/rest_server/routers/log.py b/packages/reporting-server/rest_server/routers/log.py deleted file mode 100644 index 80a8b29b0..000000000 --- a/packages/reporting-server/rest_server/routers/log.py +++ /dev/null @@ -1,50 +0,0 @@ -from fastapi import APIRouter, HTTPException, status -from rest_server.repositories.log_creation_handler import ( - RawLogHandler, - create_keycloak_log, -) -from rest_server.repositories.rmf_log_creation_handler import create_rmf_server_log - -router = APIRouter() - - -# This will receive information from different sources -@router.post("/all/", tags=["all_logs"], status_code=status.HTTP_201_CREATED) -async def write_logs(body: list): - try: - return await RawLogHandler.create_raw_log(body) - except Exception as e: - print(e) - raise HTTPException(503, "cannot create the log" + str(e)) from e - - -# Will receive information from rmf-server only -@router.post( - "/rmfserver/", tags=["rmfserver_logs"], status_code=status.HTTP_201_CREATED -) -async def write_rmf_server_logs(body: list): - try: - response = await create_rmf_server_log(body) - if not isinstance(response, str): - raise HTTPException(503, "Error creating some logs" + str(response)) - - return response - - except Exception as e: - print(e) - raise HTTPException(503, "cannot create the rmfserver log" + str(e)) from e - - -# Will receive information from keycloak only -@router.post("/keycloak/", tags=["keycloak_logs"], status_code=status.HTTP_201_CREATED) -async def write_keycloak_logs(body: list): - try: - response = await create_keycloak_log(body) - if not isinstance(response, str): - raise HTTPException(503, "Error creating some logs" + str(response)) - - return response - - except Exception as e: - print(e) - raise HTTPException(503, "cannot create the keycloak log" + str(e)) from e diff --git a/packages/reporting-server/rest_server/routers/report.py b/packages/reporting-server/rest_server/routers/report.py deleted file mode 100644 index 544efd7c7..000000000 --- a/packages/reporting-server/rest_server/routers/report.py +++ /dev/null @@ -1,187 +0,0 @@ -from typing import Any, List, Optional - -from fastapi import APIRouter -from models.pydantic_models import ( - AuthEvents_Pydantic, - DispenserState_Pydantic, - DoorState_Pydantic, - FleetState_Pydantic, - HealthStatus_Pydantic, - IngestorState_Pydantic, - LiftState_Pydantic, - TaskSummary_Pydantic, -) -from rest_server.repositories.report import ( - get_all_raw_logs, - get_containers, - get_dispenser_state, - get_door_state, - get_fleet_state, - get_health, - get_ingestor_state, - get_lift_state, - get_task_summary, -) -from rest_server.repositories.report.auth_event_report import ( - get_user_login_failure_report, - get_user_login_report, - get_user_logout_report, -) - -router = APIRouter() - -LIMIT = 500 - - -@router.get("/raw_logs/", tags=["raw_logs"], response_model=List[Any]) -async def raw_logs_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - logLevel: Optional[str] = None, - containerLabel: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_all_raw_logs( - offset, limit, toLogDate, fromLogDate, logLevel, containerLabel - ) - - -@router.get("/raw_logs/containers", tags=["raw_logs_get_containers"]) -async def raw_logs_get_containers(): - return await get_containers() - - -@router.get( - "/door_state/", tags=["door_state"], response_model=List[DoorState_Pydantic] -) -async def door_state_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_door_state(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/fleet_state/", tags=["fleet_state"], response_model=List[FleetState_Pydantic] -) -async def fleet_state_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_fleet_state(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/dispenser_state/", - tags=["dispenser_state"], - response_model=List[DispenserState_Pydantic], -) -async def dispenser_state_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_dispenser_state(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/ingestor_state/", - tags=["ingestor_state"], - response_model=List[IngestorState_Pydantic], -) -async def ingestor_state_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_ingestor_state(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/lift_state/", tags=["lift_state"], response_model=List[LiftState_Pydantic] -) -async def lift_state_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_lift_state(offset, limit, toLogDate, fromLogDate) - - -@router.get("/health/", tags=["health"], response_model=List[HealthStatus_Pydantic]) -async def health_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_health(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/task_summary/", tags=["task_summary"], response_model=List[TaskSummary_Pydantic] -) -async def task_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_task_summary(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/user/login/", tags=["user_login"], response_model=List[AuthEvents_Pydantic] -) -async def user_login_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_user_login_report(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/user/logout/", tags=["user_logout"], response_model=List[AuthEvents_Pydantic] -) -async def user_logout_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_user_logout_report(offset, limit, toLogDate, fromLogDate) - - -@router.get( - "/user/loginfailure/", - tags=["user_login_failure"], - response_model=List[AuthEvents_Pydantic], -) -async def user_login_failure_report( - toLogDate: Optional[str] = None, - fromLogDate: Optional[str] = None, - offset: Optional[int] = 0, - limit: Optional[int] = LIMIT, -): - - return await get_user_login_failure_report(offset, limit, toLogDate, fromLogDate) diff --git a/packages/reporting-server/rest_server/routers/test_log.py b/packages/reporting-server/rest_server/routers/test_log.py deleted file mode 100644 index dca380efd..000000000 --- a/packages/reporting-server/rest_server/routers/test_log.py +++ /dev/null @@ -1,109 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order - -import unittest - -from fastapi.testclient import TestClient -from rest_server.__mocks__.raw_data import mock_keycloak_login_error -from rest_server.test_utils import start_test_database -from tortoise import Tortoise - -from ..app import get_app - -app = get_app() - - -class TestRawLogRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - def test_log_raw_creation(self): - response = self.client.post( - "/log/all/", - json=[{"log": "test"}], - ) - assert response.status_code == 201 - - def test_error_on_bad_body_without_list(self): - self.client = TestClient(app) - response = self.client.post( - "/log/all/", - json={"log343": "test"}, - ) - assert response.status_code == 422 - - -class TestRmfServerLogRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - def test_log_rmfserver_creation(self): - response = self.client.post( - "/log/rmfserver/", - json=[{"log": "test"}], - ) - assert response.status_code == 201 - - def test_error_on_bad_body(self): - self.client = TestClient(app) - response = self.client.post( - "/log/rmfserver/", - json=[{"log343": "test"}], - ) - assert response.status_code == 503 - - def test_handle_error(self): - self.client = TestClient(app) - response = self.client.post( - "/log/rmfserver/", - json=[ - {"log343": "test"}, - { - "log": 'INFO:app.BookKeeper.dispenser_state:{"time": {"sec": 1600, "nanosec": 0}, "guid": "coke_dispenser", "mode": 0, "request_guid_queue": [], "seconds_remaining": 0.0}\n', - "stream": "stdout", - }, - ], - ) - - assert response.status_code == 503 - - -class TestKeycloakRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - - async def asyncTearDown(self): - await Tortoise.close_connections() - - def test_log_rmfserver_creation(self): - response = self.client.post( - "/log/keycloak/", - json=[{"log": "test"}], - ) - assert response.status_code == 201 - - def test_error_on_bad_body(self): - self.client = TestClient(app) - response = self.client.post( - "/log/keycloak/", - json=[{"log343": "test"}], - ) - assert response.status_code == 503 - - def test_handle_error(self): - self.client = TestClient(app) - response = self.client.post( - "/log/keycloak/", - json=[{"log343": "test"}, mock_keycloak_login_error], - ) - - assert response.status_code == 503 diff --git a/packages/reporting-server/rest_server/routers/test_report.py b/packages/reporting-server/rest_server/routers/test_report.py deleted file mode 100644 index fdc4d5e5f..000000000 --- a/packages/reporting-server/rest_server/routers/test_report.py +++ /dev/null @@ -1,28 +0,0 @@ -# conflicts with isort because of local non-relative import -# pylint: disable=wrong-import-order - -import unittest - -from models.tortoise_models.container import Container -from rest_server.test_utils import start_test_database -from starlette.testclient import TestClient -from tortoise import Tortoise - -from ..app import get_app - -app = get_app() - - -class TestContainerRoute(unittest.IsolatedAsyncioTestCase): - async def asyncSetUp(self): - await start_test_database() - self.client = TestClient(app) - await Container.create(name="test") - - async def asyncTearDown(self): - await Tortoise.close_connections() - - def test_get_containers(self): - response = self.client.get("report/raw_logs/containers/") - self.assertEqual(response.status_code, 200) - self.assertEqual(response.json(), ["test"]) diff --git a/packages/reporting-server/rest_server/test_utils.py b/packages/reporting-server/rest_server/test_utils.py deleted file mode 100644 index 1180d9c58..000000000 --- a/packages/reporting-server/rest_server/test_utils.py +++ /dev/null @@ -1,9 +0,0 @@ -from tortoise import Tortoise - - -async def start_test_database(): - await Tortoise.init( - db_url="sqlite://:memory:", - modules={"models": ["models.tortoise_models"]}, - ) - await Tortoise.generate_schemas() diff --git a/packages/reporting-server/setup.py b/packages/reporting-server/setup.py deleted file mode 100644 index 0bdc17be9..000000000 --- a/packages/reporting-server/setup.py +++ /dev/null @@ -1,39 +0,0 @@ -from setuptools import find_packages, setup - -package_name = "reporting_server" - -setup( - name=package_name, - description="RMF reporting server", - version="0.0.0", - packages=find_packages(exclude=["tests"]), - author="Matias Bavera", - author_email="matiasbavera@gmail.com", - keywords=["RMF", "reporting"], - classifiers=[ - "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python", - "Topic :: Software Development", - ], - install_requires=[ - "fastapi~=0.65.2", - "uvicorn[standard]~=0.16.0", - "tortoise-orm~=0.17.4", - "pyjwt[crypto]~=2.0", - "pydantic~=1.8", - "py-dateutil~=2.2", - ], - extras_require={ - "postgres": ["asyncpg~=0.22.0"], - "mysql": ["aiomysql~=0.0.21"], - "maria": ["aiomysql~=0.0.21"], - }, - entry_points={ - "console_scripts": [ - "reporting_server=rest_server.__main__:main", - "reporting_server_clean_logs=rest_server.clean_logs:main", - ], - }, - license="Apache License, Version 2.0", -) diff --git a/packages/reporting/.env b/packages/reporting/.env deleted file mode 100644 index a8f819259..000000000 --- a/packages/reporting/.env +++ /dev/null @@ -1,5 +0,0 @@ -# because we are a monorepo, some create-react-app dependencies may be installed in the root directory, -# it complains if it find such packages so we need to disable the check. -SKIP_PREFLIGHT_CHECK=true - -REACT_APP_REPORTING_SERVER=http://localhost:8000 diff --git a/packages/reporting/.gitignore b/packages/reporting/.gitignore deleted file mode 100644 index a13cc8c46..000000000 --- a/packages/reporting/.gitignore +++ /dev/null @@ -1,32 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/public/assets/icons/ -/node_modules -/.pnp -.pnp.js -.resources.json - -# testing -/coverage - -# production -/build -/storybook-static -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local -.eslintcache - -npm-debug.log* -web_server.log -yarn-debug.log* -yarn-error.log* - -# test artifacts -/e2e/artifacts - -/.rmf diff --git a/packages/reporting/.storybook/main.js b/packages/reporting/.storybook/main.js deleted file mode 100644 index 195fee260..000000000 --- a/packages/reporting/.storybook/main.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - stories: ['../src/**/*.stories.tsx'], - addons: [ - '@storybook/preset-create-react-app', - '@storybook/addon-actions', - '@storybook/addon-links', - ], -}; diff --git a/packages/reporting/package.json b/packages/reporting/package.json deleted file mode 100644 index 3560143fc..000000000 --- a/packages/reporting/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "reporting", - "version": "0.0.1", - "description": "Interface in charge of displaying reports to end users", - "main": "index.js", - "private": true, - "scripts": { - "start": "react-scripts start", - "build": "../../scripts/nws.sh build -d && react-scripts build", - "test": "../../scripts/nws.sh build -d && react-scripts test", - "test:coverage": "npm run test -- --coverage --watchAll=false", - "test:e2e": "cd e2e && npm test", - "test:e2e:dev": "cd e2e && npm run test:dev", - "eject": "react-scripts eject", - "storybook": "start-storybook -p 9009 -s public -s src/stories/static", - "build:storybook": "../../scripts/nws.sh build -d && build-storybook -s public -s src/stories" - }, - "keywords": [ - "reporting" - ], - "author": "matiasbavera@gmail.com", - "license": "Apache-2.0", - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@fontsource/roboto": "^4.3.0", - "@storybook/addon-actions": "^6.5.8", - "@storybook/addon-essentials": "^6.5.8", - "@storybook/addon-links": "^6.5.8", - "@storybook/react": "^6.5.8", - "@testing-library/jest-dom": "^5.11.4", - "@testing-library/react": "^11.2.3", - "@testing-library/react-hooks": "^5.0.3", - "@testing-library/user-event": "^12.1.9", - "@types/debug": "^4.1.5", - "@types/jest": "^26.0.13", - "@types/react": "^17.0.19", - "@types/react-dom": "^17.0.9", - "@types/react-router": "^5.1.7", - "@types/react-router-dom": "^5.1.7", - "axios": "^0.21.1", - "clsx": "^1.1.1", - "jest-canvas-mock": "^2.3.1", - "react": "^17.0.2", - "react-components": "file:../react-components", - "react-router": "^5.2.0", - "react-router-dom": "^5.2.0", - "react-scripts": "^4.0.3", - "reporting-server": "file:../reporting-server", - "rmf-auth": "file:../rmf-auth", - "ts-node": "^9.1.1", - "typescript": "~4.4.4" - }, - "jest": { - "collectCoverageFrom": [ - "src/**/*.{js,jsx,ts,tsx}", - "!src/index.tsx", - "!src/app-config.ts", - "!src/serviceWorker.ts", - "!src/react-app-env.d.ts", - "!src/components/reporter-side-bar-structure.tsx", - "!**/stories/**", - "!**/tests/**" - ] - }, - "overrides": { - "react-error-overlay": "6.0.9" - } -} diff --git a/packages/reporting/public/assets/aron-visuals-3jBU9TbKW7o-unsplash.jpg b/packages/reporting/public/assets/aron-visuals-3jBU9TbKW7o-unsplash.jpg deleted file mode 100644 index 8ef59a28d..000000000 Binary files a/packages/reporting/public/assets/aron-visuals-3jBU9TbKW7o-unsplash.jpg and /dev/null differ diff --git a/packages/reporting/public/assets/ros-health.png b/packages/reporting/public/assets/ros-health.png deleted file mode 100644 index f531098b6..000000000 Binary files a/packages/reporting/public/assets/ros-health.png and /dev/null differ diff --git a/packages/reporting/public/fast_forward-24px.svg b/packages/reporting/public/fast_forward-24px.svg deleted file mode 100644 index d97f12fd1..000000000 --- a/packages/reporting/public/fast_forward-24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/reporting/public/fast_rewind-24px.svg b/packages/reporting/public/fast_rewind-24px.svg deleted file mode 100644 index c8279d579..000000000 --- a/packages/reporting/public/fast_rewind-24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/reporting/public/favicon.ico b/packages/reporting/public/favicon.ico deleted file mode 100644 index 6c149bf7f..000000000 Binary files a/packages/reporting/public/favicon.ico and /dev/null differ diff --git a/packages/reporting/public/index.html b/packages/reporting/public/index.html deleted file mode 100644 index 7007d690d..000000000 --- a/packages/reporting/public/index.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - RoMi-H - - - -
- - - diff --git a/packages/reporting/public/logo192.png b/packages/reporting/public/logo192.png deleted file mode 100644 index fa313abf5..000000000 Binary files a/packages/reporting/public/logo192.png and /dev/null differ diff --git a/packages/reporting/public/logo512.png b/packages/reporting/public/logo512.png deleted file mode 100644 index bd5d4b5e2..000000000 Binary files a/packages/reporting/public/logo512.png and /dev/null differ diff --git a/packages/reporting/public/manifest.json b/packages/reporting/public/manifest.json deleted file mode 100644 index 080d6c77a..000000000 --- a/packages/reporting/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/reporting/public/pause-24px.svg b/packages/reporting/public/pause-24px.svg deleted file mode 100644 index 5bf80490a..000000000 --- a/packages/reporting/public/pause-24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/reporting/public/play_arrow-24px.svg b/packages/reporting/public/play_arrow-24px.svg deleted file mode 100644 index b882cee81..000000000 --- a/packages/reporting/public/play_arrow-24px.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/reporting/public/robots.txt b/packages/reporting/public/robots.txt deleted file mode 100644 index 01b0f9a10..000000000 --- a/packages/reporting/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * diff --git a/packages/reporting/public/silent-check-sso.html b/packages/reporting/public/silent-check-sso.html deleted file mode 100644 index 20ad2098d..000000000 --- a/packages/reporting/public/silent-check-sso.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/reporting/src/app-config.ts b/packages/reporting/src/app-config.ts deleted file mode 100644 index 2cabf9ee4..000000000 --- a/packages/reporting/src/app-config.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Authenticator, KeycloakAuthenticator, StubAuthenticator } from 'rmf-auth'; -export interface AppConfig { - authenticator: Authenticator; - reportingServerUrl: string; -} - -export const appConfig: AppConfig = (() => { - const authenticator = (() => { - if (!process.env.REACT_APP_AUTH_PROVIDER) { - return new StubAuthenticator(); - } - // it is important that we do not do any processing on REACT_APP_AUTH_PROVIDER so that webpack - // can remove dead code, we DO NOT want the output to have the stub authenticator even if - // it is not used. - const provider = process.env.REACT_APP_AUTH_PROVIDER; - switch (provider) { - case 'keycloak': - if (!process.env.REACT_APP_KEYCLOAK_CONFIG) { - throw new Error('missing REACT_APP_KEYCLOAK_CONFIG'); - } - return new KeycloakAuthenticator(JSON.parse(process.env.REACT_APP_KEYCLOAK_CONFIG)); - case 'stub': - return new StubAuthenticator(); - default: - throw new Error(`unknown auth provider "${provider}"`); - } - })(); - - if (!process.env.REACT_APP_REPORTING_SERVER) { - throw new Error('REACT_APP_REPORTING_SERVER is required'); - } - - return { - authenticator, - reportingServerUrl: process.env.REACT_APP_REPORTING_SERVER, - }; -})(); - -export default appConfig; diff --git a/packages/reporting/src/components/app-contexts.tsx b/packages/reporting/src/components/app-contexts.tsx deleted file mode 100644 index d395fb66d..000000000 --- a/packages/reporting/src/components/app-contexts.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import React from 'react'; -import appConfig, { AppConfig } from '../app-config'; - -export const AppConfigContext = React.createContext(appConfig); diff --git a/packages/reporting/src/components/app.tsx b/packages/reporting/src/components/app.tsx deleted file mode 100644 index 4dcdb833a..000000000 --- a/packages/reporting/src/components/app.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import '@fontsource/roboto/300.css'; -import '@fontsource/roboto/400.css'; -import '@fontsource/roboto/500.css'; -import '@fontsource/roboto/700.css'; -import { ThemeProvider } from '@mui/material'; -import React from 'react'; -import { rmfLight } from 'react-components'; -import { BrowserRouter, Link, Redirect, Route, Switch } from 'react-router-dom'; -import { LoginPage, PrivateRoute } from 'rmf-auth'; -import appConfig from '../app-config'; -import { DASHBOARD_ROUTE, LOGIN_ROUTE } from '../util/url'; -import { AppConfigContext } from './app-contexts'; -import { AuthenticatorContext, UserContext } from './auth-contexts'; -import Dashboard from './dashboard'; -import { NotFoundPage } from './page-not-found'; - -export default function App(): JSX.Element | null { - const authenticator = appConfig.authenticator; - const [authInitialized, setAuthInitialized] = React.useState(!!authenticator.user); - const [user, setUser] = React.useState(authenticator.user || null); - const appRoutes = [DASHBOARD_ROUTE]; - - React.useEffect(() => { - if (user) { - return; - } - const onUserChanged = (newUser: string | null) => setUser(newUser); - authenticator.on('userChanged', onUserChanged); - (async () => { - await authenticator.init(); - setUser(authenticator.user || null); - setAuthInitialized(true); - })(); - return () => { - authenticator.off('userChanged', onUserChanged); - }; - }, [authenticator, user]); - - const loginRedirect = React.useMemo(() => , []); - - return authInitialized ? ( - - - - - - - - - authenticator.login(`${window.location.origin}${DASHBOARD_ROUTE}`) - } - /> - - - - - - - - - - Go to Login} /> - - - - - - - - ) : null; -} diff --git a/packages/reporting/src/components/auth-contexts.tsx b/packages/reporting/src/components/auth-contexts.tsx deleted file mode 100644 index 91c7f312f..000000000 --- a/packages/reporting/src/components/auth-contexts.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react'; -import appConfig from '../app-config'; - -export const AuthenticatorContext = React.createContext(appConfig.authenticator); -export const UserContext = React.createContext(null); diff --git a/packages/reporting/src/components/auth/__mocks__/fake-authenticator.ts b/packages/reporting/src/components/auth/__mocks__/fake-authenticator.ts deleted file mode 100644 index 128989cca..000000000 --- a/packages/reporting/src/components/auth/__mocks__/fake-authenticator.ts +++ /dev/null @@ -1,31 +0,0 @@ -import EventEmitter from 'eventemitter3'; -import { Authenticator, AuthenticatorEventType } from 'rmf-auth'; - -export class FakeAuthenticator - extends EventEmitter - implements Authenticator { - user?: string; - - constructor(user?: string) { - super(); - this.user = user; - } - - async init(): Promise { - // It is required to call this before using any of the authenticator functions. - } - - login(): Promise { - throw new Error('Method not implemented.'); - } - - logout(): Promise { - throw new Error('Method not implemented.'); - } - - refreshToken(): Promise { - return Promise.resolve(); - } -} - -export default FakeAuthenticator; diff --git a/packages/reporting/src/components/dashboard.tsx b/packages/reporting/src/components/dashboard.tsx deleted file mode 100644 index 369f8fe65..000000000 --- a/packages/reporting/src/components/dashboard.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import { ReportDashboard } from './report-dashboard'; -import { buildReportMenuStructure } from './reporter-side-bar-structure'; - -function Dashboard() { - return ( -
- -
- ); -} - -export default Dashboard; diff --git a/packages/reporting/src/components/page-not-found.tsx b/packages/reporting/src/components/page-not-found.tsx deleted file mode 100644 index d34bffc41..000000000 --- a/packages/reporting/src/components/page-not-found.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import { styled, Typography } from '@mui/material'; -import type { Link } from 'react-router-dom'; - -export interface NotFoundPageProps { - /** - * The link to redirect user to the correct page. - */ - linkComponent: React.ReactElement; -} - -const prefix = 'page-not-found'; -const classes = { - div: `${prefix}-root`, - img: `${prefix}-img`, - text: `${prefix}-text`, - author: `${prefix}-author`, -}; - -const StyledDiv = styled('div')(() => ({ - [`&.${classes.div}`]: { - width: '100%', - height: '100%', - overflowX: 'hidden', - overflowY: 'hidden', - }, - [`& .${classes.img}`]: { - width: '100%', - height: '100%', - }, - [`& .${classes.text}`]: { - position: 'fixed', - left: '20%', - top: '2%', - color: 'white', - fontWeight: 'bold', - }, - [`& .${classes.author}`]: { - position: 'fixed', - right: '5%', - bottom: '2%', - color: 'white', - }, -})); - -export const NotFoundPage = (props: NotFoundPageProps): React.ReactElement => { - const { linkComponent: routeLinkComponent } = props; - console.warn('Photo by Aron Visuals on Unsplash'); - return ( - - 404 Not Found - - Are you lost? {routeLinkComponent} - - Photo by Aron Visuals on Unsplash - - ); -}; - -export default NotFoundPage; diff --git a/packages/reporting/src/components/report-dashboard.tsx b/packages/reporting/src/components/report-dashboard.tsx deleted file mode 100644 index 75519371e..000000000 --- a/packages/reporting/src/components/report-dashboard.tsx +++ /dev/null @@ -1,299 +0,0 @@ -import React from 'react'; -import { ReportConfigProps } from 'react-components'; -import clsx from 'clsx'; -import { styled, useTheme } from '@mui/material/styles'; -import Drawer from '@mui/material/Drawer'; -import CssBaseline from '@mui/material/CssBaseline'; -import AppBar from '@mui/material/AppBar'; -import Toolbar from '@mui/material/Toolbar'; -import Typography from '@mui/material/Typography'; -import Divider from '@mui/material/Divider'; -import IconButton from '@mui/material/IconButton'; -import MenuIcon from '@mui/icons-material/Menu'; -import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; -import ChevronRightIcon from '@mui/icons-material/ChevronRight'; -import { ExpandableMultilevelMenuProps, MultiLevelMenu } from 'react-components'; -import { Menu, MenuItem } from '@mui/material'; -import { AuthenticatorContext } from './auth-contexts'; -import AccountCircleIcon from '@mui/icons-material/AccountCircle'; - -import { Reports } from './report-list'; -import { BuildMenuType } from './reporter-side-bar-structure'; -import AllLogsReport from './reports/all-logs-report'; -import DispenserStateReportConfig from './reports/dispenser-state-report'; -import DoorStateReportConfig from './reports/door-state-report'; -import FleetStateReportConfig from './reports/fleet-state-report'; -import HealthReportConfig from './reports/health-report'; -import IngestorStateReportConfig from './reports/ingestor-state-report'; -import LiftStateReportConfig from './reports/lift-state-report'; -import TaskSummaryReportConfig from './reports/task-summary-report'; -import UserLoginFailureReportConfig from './reports/user-login-failure-report'; -import UserLoginReportConfig from './reports/user-login-report'; -import UserLogoutReportConfig from './reports/user-logout-report'; - -const drawerWidth = 240; - -const prefix = 'report-dashboard'; -const classes = { - root: `${prefix}-root`, - appBar: `${prefix}-appbar`, - appBarShift: `${prefix}-appbar-shift`, - menuButton: `${prefix}-menu-button`, - hide: `${prefix}-hide`, - drawer: `${prefix}-drawer`, - drawerPaper: `${prefix}-drawer-paper`, - drawerHeader: `${prefix}-drawer-header`, - content: `${prefix}-content`, - contentShift: `${prefix}-content-shift`, - toolbarTitle: `${prefix}-toolbar-title`, -}; - -const StyledDiv = styled('div')(({ theme }) => ({ - [`&.${classes.root}`]: { - display: 'flex', - }, - [`& .${classes.appBar}`]: { - transition: theme.transitions.create(['margin', 'width'], { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen, - }), - }, - [`& .${classes.appBarShift}`]: { - width: `calc(100% - ${drawerWidth}px)`, - marginLeft: drawerWidth, - transition: theme.transitions.create(['margin', 'width'], { - easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen, - }), - }, - [`& .${classes.menuButton}`]: { - marginRight: theme.spacing(2), - }, - [`& .${classes.hide}`]: { - display: 'none', - }, - [`& .${classes.drawer}`]: { - width: drawerWidth, - flexShrink: 0, - }, - [`& .${classes.drawerPaper}`]: { - width: drawerWidth, - }, - [`& .${classes.drawerHeader}`]: { - display: 'flex', - alignItems: 'center', - padding: theme.spacing(0, 1), - // necessary for content to be below app bar - ...theme.mixins.toolbar, - justifyContent: 'flex-end', - }, - [`& .${classes.content}`]: { - flexGrow: 1, - padding: theme.spacing(3), - transition: theme.transitions.create('margin', { - easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen, - }), - marginLeft: -drawerWidth, - }, - [`& .${classes.contentShift}`]: { - transition: theme.transitions.create('margin', { - easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen, - }), - marginLeft: 0, - }, - [`& .${classes.toolbarTitle}`]: { - flexGrow: 1, - }, -})); - -export interface ReportDashboardProps { - buildMenuReportStructure(setCurrentReport: BuildMenuType): ExpandableMultilevelMenuProps[]; -} - -export const ReportDashboard = (props: ReportDashboardProps) => { - const { buildMenuReportStructure } = props; - const theme = useTheme(); - const [open, setOpen] = React.useState(true); - const [currentReport, setCurrentReport] = React.useState(Reports.queryAllLogs); - const [anchorEl, setAnchorEl] = React.useState(null); - - const [fromLogDate, setFromLogDate] = React.useState(new Date()); - const [toLogDate, setToLogDate] = React.useState(new Date()); - - const handleFromLogDateChange = React.useCallback((date: any) => { - setFromLogDate(date); - }, []); - - const handleToLogDateChange = React.useCallback((date: any) => { - setToLogDate(date); - }, []); - - const itemConfig = (props: ReportConfigProps): JSX.Element | null => { - switch (currentReport) { - case Reports.queryAllLogs: - return ; - case Reports.showDispenserStateReport: - return ; - case Reports.showDoorStateReport: - return ; - case Reports.showFleetStateReport: - return ; - case Reports.showHealthReport: - return ; - case Reports.showIngestorStateReport: - return ; - case Reports.showLiftStateReport: - return ; - case Reports.showLoginsReport: - return ; - case Reports.showLogoutsReport: - return ; - case Reports.showLoginFailuresReport: - return ; - case Reports.showTasksReport: - return ; - default: - return null; - } - }; - - const headerTitle = React.useMemo(() => { - switch (currentReport) { - case Reports.queryAllLogs: - return 'All Logs'; - case Reports.showDispenserStateReport: - return 'Dispenser State Report'; - case Reports.showDoorStateReport: - return 'Door State Report'; - case Reports.showFleetStateReport: - return 'Fleet State Report'; - case Reports.showHealthReport: - return 'Health Report'; - case Reports.showIngestorStateReport: - return 'Ingestor State Report'; - case Reports.showLiftStateReport: - return 'Lift State Report'; - case Reports.showLoginsReport: - return 'Login Report'; - case Reports.showLogoutsReport: - return 'Logout Report'; - case Reports.showLoginFailuresReport: - return 'Login Failure Report'; - case Reports.showTasksReport: - return 'Task Report'; - default: - return ''; - } - }, [currentReport]); - - const handleDrawerOpen = () => { - setOpen(true); - }; - - const handleDrawerClose = () => { - setOpen(false); - }; - - const authenticator = React.useContext(AuthenticatorContext); - - async function handleLogout(): Promise { - try { - await authenticator.logout(); - } catch (e) { - console.error(`error logging out: ${(e as Error).message}`); - } - } - - return ( - - - - - - - - - Reports - {headerTitle} - - {authenticator.user && ( - <> - setAnchorEl(event.currentTarget)} - > - - - setAnchorEl(null)} - > - - Logout - - - - )} - - - - {open && ( - <> -
- - {theme.direction === 'ltr' ? : } - -
- - - - - )} -
-
-
- {itemConfig({ - fromLogDate, - toLogDate, - onSelectFromDate: handleFromLogDateChange, - onSelectToDate: handleToLogDateChange, - })} -
-
- ); -}; diff --git a/packages/reporting/src/components/report-list.tsx b/packages/reporting/src/components/report-list.tsx deleted file mode 100644 index 85f4e1e90..000000000 --- a/packages/reporting/src/components/report-list.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export enum Reports { - queryAllLogs = 'queryAllLogs', - showChargerStateReport = 'showChargerStateReport', - showDispenserStateReport = 'showDispenserStateReport', - showDoorStateReport = 'showDoorStateReport', - showFleetStateReport = 'showFleetStateReport', - showHealthReport = 'showHealthReport', - showIngestorStateReport = 'showIngestorStateReport', - showLiftStateReport = 'showLiftStateReport', - showNegotiationsReport = 'showNegotiationsReport', - showRobotStateReport = 'showRobotStateReport', - showRobotMotionPlansReport = 'showRobotMotionPlansReport', - showRobotActionReport = 'showRobotActionReport', - showTasksReport = 'showTasksReport', - showUserActionsReport = 'showUserActionsReport', - showLoginsReport = 'showLoginsReport', - showLogoutsReport = 'showLogoutsReport', - showLoginFailuresReport = 'showLoginFailuresReport', - showWorkCellStatesReport = 'showWorkCellStatesReport', -} diff --git a/packages/reporting/src/components/reporter-side-bar-structure.tsx b/packages/reporting/src/components/reporter-side-bar-structure.tsx deleted file mode 100644 index 6755c12e8..000000000 --- a/packages/reporting/src/components/reporter-side-bar-structure.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import React from 'react'; -import SearchIcon from '@mui/icons-material/Search'; -import AndroidIcon from '@mui/icons-material/Android'; -import ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp'; -import KitchenIcon from '@mui/icons-material/Kitchen'; -import LocalHospitalIcon from '@mui/icons-material/LocalHospital'; -import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; -import ArrowBackIcon from '@mui/icons-material/ArrowBack'; -import AccountCircleIcon from '@mui/icons-material/AccountCircle'; -import PlaylistAddCheckIcon from '@mui/icons-material/PlaylistAddCheck'; - -import { Reports } from './report-list'; -import { ExpandableMultilevelMenuProps } from 'react-components'; - -export type BuildMenuType = (report: Reports) => void; - -export const buildReportMenuStructure = ( - setCurrentReport: BuildMenuType, -): ExpandableMultilevelMenuProps[] => { - return [ - { - icon: , - title: 'All logs', - items: [], - onClick: () => setCurrentReport(Reports.queryAllLogs), - }, - { - icon: , - title: 'Dispensers', - items: [], - onClick: () => setCurrentReport(Reports.showDispenserStateReport), - }, - { - icon: , - title: 'Doors', - items: [], - onClick: () => setCurrentReport(Reports.showDoorStateReport), - }, - { - icon: , - title: 'Fleets', - items: [], - onClick: () => setCurrentReport(Reports.showFleetStateReport), - }, - { - icon: , - title: 'Health', - items: [], - onClick: () => setCurrentReport(Reports.showHealthReport), - }, - { - icon: , - title: 'Ingestor', - items: [], - onClick: () => setCurrentReport(Reports.showIngestorStateReport), - }, - { - icon: , - title: 'Lifts', - onClick: () => setCurrentReport(Reports.showLiftStateReport), - }, - { - icon: , - title: 'Tasks', - onClick: () => setCurrentReport(Reports.showTasksReport), - }, - { - icon: , - title: 'Users', - items: [ - { - title: 'Logins', - items: [], - onClick: () => setCurrentReport(Reports.showLoginsReport), - }, - { - title: 'Logouts', - items: [], - onClick: () => setCurrentReport(Reports.showLogoutsReport), - }, - { - title: 'Login failures', - items: [], - onClick: () => setCurrentReport(Reports.showLoginFailuresReport), - }, - ], - }, - ] as ExpandableMultilevelMenuProps[]; -}; diff --git a/packages/reporting/src/components/reports/all-logs-report.tsx b/packages/reporting/src/components/reports/all-logs-report.tsx deleted file mode 100644 index 8828da9a1..000000000 --- a/packages/reporting/src/components/reports/all-logs-report.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; -import axios from 'axios'; -import { LogManagement, LogQueryPayload, LogRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; - -const AllLogsReport = () => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: LogQueryPayload): Promise => { - try { - const response = await axios.get(`${appConfig.reportingServerUrl}/report/raw_logs/`, { - params: { - toLogDate: params.toLogDate ? params.toLogDate : null, - fromLogDate: params.fromLogDate ? params.fromLogDate : null, - containerLabel: params.logLabel, - logLevel: params.logLevel, - offset: params.offset, - }, - headers: { - Authorization: 'Bearer ' + authenticator.token, - }, - }); - return response.data as LogRowsType; - } catch (error) { - console.error(error); - return []; - } - }; - - const getLogServerLabels = async (): Promise<{ label: string; value: string }[]> => { - try { - const response = await axios.get( - `${appConfig.reportingServerUrl}/report/raw_logs/containers`, - { - headers: { - Authorization: 'Bearer ' + authenticator.token, - }, - }, - ); - const labelsData = response.data as string[]; - const labels: { label: string; value: string }[] = []; - labelsData.forEach((element) => { - labels.push({ label: element, value: element }); - }); - // If we want to get results from all labels - labels.push({ label: 'All', value: 'all' }); - return labels; - } catch (error) { - console.error(error); - return []; - } - }; - - return ; -}; - -export default AllLogsReport; diff --git a/packages/reporting/src/components/reports/dispenser-state-report.tsx b/packages/reporting/src/components/reports/dispenser-state-report.tsx deleted file mode 100644 index bee02c1f2..000000000 --- a/packages/reporting/src/components/reports/dispenser-state-report.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { - DefaultReportQueryPayload, - DispenserStateReport, - DispenserStateRowsType, -} from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const DispenserStateReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/dispenser_state/`, - params, - authenticator.token, - )) as DispenserStateRowsType; - }; - - return ; -}; - -export default DispenserStateReportConfig; diff --git a/packages/reporting/src/components/reports/door-state-report.tsx b/packages/reporting/src/components/reports/door-state-report.tsx deleted file mode 100644 index d482243e0..000000000 --- a/packages/reporting/src/components/reports/door-state-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, DoorStateReport, DoorStateRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const DoorStateReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/door_state/`, - params, - authenticator.token, - )) as DoorStateRowsType; - }; - - return ; -}; - -export default DoorStateReportConfig; diff --git a/packages/reporting/src/components/reports/fleet-state-report.tsx b/packages/reporting/src/components/reports/fleet-state-report.tsx deleted file mode 100644 index 2ae580ae2..000000000 --- a/packages/reporting/src/components/reports/fleet-state-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, FleetStateReport, FleetStateRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const FleetStateReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/fleet_state/`, - params, - authenticator.token, - )) as FleetStateRowsType; - }; - - return ; -}; - -export default FleetStateReportConfig; diff --git a/packages/reporting/src/components/reports/health-report.tsx b/packages/reporting/src/components/reports/health-report.tsx deleted file mode 100644 index c99ab6a6a..000000000 --- a/packages/reporting/src/components/reports/health-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, HealthReport, HealthRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const HealthReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/health/`, - params, - authenticator.token, - )) as HealthRowsType; - }; - - return ; -}; - -export default HealthReportConfig; diff --git a/packages/reporting/src/components/reports/ingestor-state-report.tsx b/packages/reporting/src/components/reports/ingestor-state-report.tsx deleted file mode 100644 index 91670fc25..000000000 --- a/packages/reporting/src/components/reports/ingestor-state-report.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { - DefaultReportQueryPayload, - IngestorStateReport, - IngestorStateRowsType, -} from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const IngestorStateReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/ingestor_state/`, - params, - authenticator.token, - )) as IngestorStateRowsType; - }; - - return ; -}; - -export default IngestorStateReportConfig; diff --git a/packages/reporting/src/components/reports/lift-state-report.tsx b/packages/reporting/src/components/reports/lift-state-report.tsx deleted file mode 100644 index 45963d176..000000000 --- a/packages/reporting/src/components/reports/lift-state-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, LiftStateReport, LiftStateRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { getLogData } from './utils'; -import { AuthenticatorContext } from '../auth-contexts'; -import { ReportConfigProps } from 'react-components'; - -const LiftStateReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/lift_state/`, - params, - authenticator.token, - )) as LiftStateRowsType; - }; - - return ; -}; - -export default LiftStateReportConfig; diff --git a/packages/reporting/src/components/reports/task-summary-report.tsx b/packages/reporting/src/components/reports/task-summary-report.tsx deleted file mode 100644 index 80311a9bf..000000000 --- a/packages/reporting/src/components/reports/task-summary-report.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { - DefaultReportQueryPayload, - TaskSummaryReport, - TaskSummaryRowsType, -} from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const TaskSummaryReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/task_summary/`, - params, - authenticator.token, - )) as TaskSummaryRowsType; - }; - - return ; -}; - -export default TaskSummaryReportConfig; diff --git a/packages/reporting/src/components/reports/user-login-failure-report.tsx b/packages/reporting/src/components/reports/user-login-failure-report.tsx deleted file mode 100644 index 809d67af1..000000000 --- a/packages/reporting/src/components/reports/user-login-failure-report.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { - DefaultReportQueryPayload, - UserLoginFailureReport, - UserLoginFailureRowsType, -} from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const UserLoginFailureReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/user/loginfailure/`, - params, - authenticator.token, - )) as UserLoginFailureRowsType; - }; - - return ; -}; - -export default UserLoginFailureReportConfig; diff --git a/packages/reporting/src/components/reports/user-login-report.tsx b/packages/reporting/src/components/reports/user-login-report.tsx deleted file mode 100644 index c2d7262bb..000000000 --- a/packages/reporting/src/components/reports/user-login-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, UserLoginReport, UserLoginRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const UserLoginReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/user/login/`, - params, - authenticator.token, - )) as UserLoginRowsType; - }; - - return ; -}; - -export default UserLoginReportConfig; diff --git a/packages/reporting/src/components/reports/user-logout-report.tsx b/packages/reporting/src/components/reports/user-logout-report.tsx deleted file mode 100644 index daef95d76..000000000 --- a/packages/reporting/src/components/reports/user-logout-report.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import React from 'react'; -import { DefaultReportQueryPayload, UserLogoutReport, UserLogoutRowsType } from 'react-components'; -import appConfig from '../../app-config'; -import { AuthenticatorContext } from '../auth-contexts'; -import { getLogData } from './utils'; -import { ReportConfigProps } from 'react-components'; - -const UserLogoutReportConfig = (props: ReportConfigProps) => { - const authenticator = React.useContext(AuthenticatorContext); - const getLogs = async (params: DefaultReportQueryPayload): Promise => { - return (await getLogData( - `${appConfig.reportingServerUrl}/report/user/logout/`, - params, - authenticator.token, - )) as UserLogoutRowsType; - }; - - return ; -}; - -export default UserLogoutReportConfig; diff --git a/packages/reporting/src/components/reports/utils.ts b/packages/reporting/src/components/reports/utils.ts deleted file mode 100644 index fc895df4d..000000000 --- a/packages/reporting/src/components/reports/utils.ts +++ /dev/null @@ -1,26 +0,0 @@ -import axios from 'axios'; -import { DefaultReportQueryPayload } from 'react-components'; - -export const getLogData = async ( - url: string, - params: DefaultReportQueryPayload, - token: string | undefined | null, -) => { - try { - const response = await axios.get(url, { - params: { - toLogDate: params.toLogDate ? params.toLogDate : null, - fromLogDate: params.fromLogDate ? params.fromLogDate : null, - offset: params.offset, - limit: params.limit, - }, - headers: { - Authorization: 'Bearer ' + token, - }, - }); - return response.data; - } catch (error) { - console.error(error); - return []; - } -}; diff --git a/packages/reporting/src/components/tests/page-not-found.test.tsx b/packages/reporting/src/components/tests/page-not-found.test.tsx deleted file mode 100644 index 62afdf3f4..000000000 --- a/packages/reporting/src/components/tests/page-not-found.test.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { render } from '@testing-library/react'; -import React from 'react'; -import { BrowserRouter, Link } from 'react-router-dom'; -import NotFoundPage from '../page-not-found'; - -describe('PageNotFound', () => { - test('renders correctly', () => { - const root = render( - - Go to somewhere} /> - , - ); - expect(root.queryByAltText('404 Not Found')).toBeTruthy(); - expect(root.queryByText('Are you lost?')).toBeTruthy(); - }); -}); diff --git a/packages/reporting/src/index.tsx b/packages/reporting/src/index.tsx deleted file mode 100644 index 57645e1f1..000000000 --- a/packages/reporting/src/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import App from './components/app'; -import * as serviceWorker from './serviceWorker'; - -ReactDOM.render( - - - , - document.getElementById('root'), -); - -// If you want your app to work offline and load faster, you can change -// unregister() to register() below. Note this comes with some pitfalls. -// Learn more about service workers: https://bit.ly/CRA-PWA -serviceWorker.unregister(); diff --git a/packages/reporting/src/react-app-env.d.ts b/packages/reporting/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5fc..000000000 --- a/packages/reporting/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/reporting/src/serviceWorker.ts b/packages/reporting/src/serviceWorker.ts deleted file mode 100644 index 0b72299f9..000000000 --- a/packages/reporting/src/serviceWorker.ts +++ /dev/null @@ -1,139 +0,0 @@ -// This optional code is used to register a service worker. -// register() is not called by default. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on subsequent visits to a page, after all the -// existing tabs open on the page have been closed, since previously cached -// resources are updated in the background. - -// To learn more about the benefits of this model and instructions on how to -// opt-in, read https://bit.ly/CRA-PWA - -const isLocalhost = Boolean( - window.location.hostname === 'localhost' || - // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/), -); - -type Config = { - onSuccess?: (registration: ServiceWorkerRegistration) => void; - onUpdate?: (registration: ServiceWorkerRegistration) => void; -}; - -export function register(config?: Config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { - // The URL constructor is available in all browsers that support SW. - const publicUrl = new URL( - (process as { env: { [key: string]: string } }).env.PUBLIC_URL, - window.location.href, - ); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebook/create-react-app/issues/2374 - return; - } - - window.addEventListener('load', () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Let's check if a service worker still exists or not. - checkValidServiceWorker(swUrl, config); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA', - ); - }); - } else { - // Is not localhost. Just register service worker - registerValidSW(swUrl, config); - } - }); - } -} - -function registerValidSW(swUrl: string, config?: Config) { - navigator.serviceWorker - .register(swUrl) - .then((registration) => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker == null) { - return; - } - installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { - if (navigator.serviceWorker.controller) { - // At this point, the updated precached content has been fetched, - // but the previous service worker will still serve the older - // content until all client tabs are closed. - console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.', - ); - - // Execute callback - if (config && config.onUpdate) { - config.onUpdate(registration); - } - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); - - // Execute callback - if (config && config.onSuccess) { - config.onSuccess(registration); - } - } - } - }; - }; - }) - .catch((error) => { - console.error('Error during service worker registration:', error); - }); -} - -function checkValidServiceWorker(swUrl: string, config?: Config) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then((response) => { - // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); - if ( - response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) - ) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then((registration) => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl, config); - } - }) - .catch(() => { - console.log('No internet connection found. App is running in offline mode.'); - }); -} - -export function unregister() { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.ready.then((registration) => { - registration.unregister(); - }); - } -} diff --git a/packages/reporting/src/setupTests.ts b/packages/reporting/src/setupTests.ts deleted file mode 100644 index 1cbd5760d..000000000 --- a/packages/reporting/src/setupTests.ts +++ /dev/null @@ -1,7 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; -// To fix `Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)` This happens after react-script versions >3.5 -import 'jest-canvas-mock'; diff --git a/packages/reporting/src/stories/reports/reporter-side-bar.stories.tsx b/packages/reporting/src/stories/reports/reporter-side-bar.stories.tsx deleted file mode 100644 index 839b25b0a..000000000 --- a/packages/reporting/src/stories/reports/reporter-side-bar.stories.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react'; -import { ReportDashboard } from '../../components/report-dashboard'; -import { buildReportMenuStructure } from '../../components/reporter-side-bar-structure'; - -export default { - title: 'Reports', - component: ReportDashboard, -}; - -export const StaticReportsView = () => ( - -); diff --git a/packages/reporting/src/tests/components/app.test.tsx b/packages/reporting/src/tests/components/app.test.tsx deleted file mode 100644 index 7e71aa6d8..000000000 --- a/packages/reporting/src/tests/components/app.test.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import App from '../../components/app'; - -test('smoke test', () => { - render(); -}); diff --git a/packages/reporting/src/tests/components/report-dashboard.test.tsx b/packages/reporting/src/tests/components/report-dashboard.test.tsx deleted file mode 100644 index 88e779d46..000000000 --- a/packages/reporting/src/tests/components/report-dashboard.test.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import React from 'react'; -import { ReportDashboard } from '../../components/report-dashboard'; -import { buildReportMenuStructure } from '../../components/reporter-side-bar-structure'; - -describe('ReportDashboard', () => { - beforeEach(() => { - render(); - }); - - afterEach(() => cleanup()); - - it('shows the report picker side bar on start', () => { - expect(screen.getByText('All logs')).toBeTruthy(); - }); - - it('closes the side-bar correctly', async () => { - // To check that it's open - expect(screen.getByText('All logs')).toBeTruthy(); - userEvent.click(screen.getByLabelText('close drawer')); - expect(screen.queryByText('All logs')).toBeFalsy(); - }); - - it('it closes side-bar and opens it correctly', async () => { - // To check that it's open - expect(screen.getByText('All logs')).toBeTruthy(); - userEvent.click(screen.getByLabelText('close drawer')); - // To check that it's closed - expect(screen.queryByText('All logs')).toBeFalsy(); - - userEvent.click(screen.getByLabelText('open drawer')); - expect(screen.queryByText('All logs')).toBeTruthy(); - }); -}); - -it('picks a different report and renders correctly', () => { - render(); - userEvent.click(screen.getByText('Doors')); - expect(screen.getByText('Reports - Door State Report')); -}); diff --git a/packages/reporting/src/util/url.ts b/packages/reporting/src/util/url.ts deleted file mode 100644 index 328cdb5b1..000000000 --- a/packages/reporting/src/util/url.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const BASE_PATH = - process.env.PUBLIC_URL === undefined || process.env.PUBLIC_URL === '/' - ? '' - : process.env.PUBLIC_URL; -export const DASHBOARD_ROUTE = BASE_PATH === '' ? '/' : BASE_PATH; -export const LOGIN_ROUTE = `${BASE_PATH}/login`; diff --git a/packages/reporting/tsconfig.json b/packages/reporting/tsconfig.json deleted file mode 100644 index e18c413eb..000000000 --- a/packages/reporting/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "noFallthroughCasesInSwitch": true - }, - "include": [ - "src" - ] -} diff --git a/packages/rmf-auth/.storybook/main.js b/packages/rmf-auth/.storybook/main.js index 23f16ace5..4e1c94a06 100644 --- a/packages/rmf-auth/.storybook/main.js +++ b/packages/rmf-auth/.storybook/main.js @@ -12,8 +12,6 @@ module.exports = { extensions: ['.ts', '.tsx', '.mjs', '.js', '.jsx', '.cjs'], alias: { ...config.resolve.alias, - '@emotion/core': require.resolve('@emotion/react'), - 'emotion-theming': require.resolve('@emotion/react'), }, }, }; diff --git a/packages/rmf-auth/.storybook/preview.tsx b/packages/rmf-auth/.storybook/preview.tsx index ce9052ba1..74c6f5f3b 100644 --- a/packages/rmf-auth/.storybook/preview.tsx +++ b/packages/rmf-auth/.storybook/preview.tsx @@ -1,9 +1,7 @@ import { ThemeProvider } from '@mui/material'; -import { StyledEngineProvider } from '@mui/material/styles'; +import CssBaseline from '@mui/material/CssBaseline'; import defaultTheme from '@mui/material/styles/defaultTheme'; import { DecoratorFn } from '@storybook/react'; -import { ThemeProvider as EmotionThemeProvider } from 'emotion-theming'; -import CssBaseline from '@mui/material/CssBaseline'; export const parameters = { actions: { argTypesRegex: '^on[A-Z].*' }, @@ -17,14 +15,12 @@ export const parameters = { const withThemeProvider: DecoratorFn = (Story, context) => { return ( - - - - - - - - + + + + + + ); }; export const decorators = [withThemeProvider]; diff --git a/packages/rmf-auth/package.json b/packages/rmf-auth/package.json index d45b6e57b..8a3dd3922 100644 --- a/packages/rmf-auth/package.json +++ b/packages/rmf-auth/package.json @@ -2,15 +2,15 @@ "name": "rmf-auth", "version": "0.0.1", "description": "Auth layer to be used on web UI services", - "main": "dist/lib/index.js", + "main": "dist/index.js", "scripts": { - "build": "../../scripts/nws.sh build -d && tsc --build", - "build:storybook": "../../scripts/nws.sh build -d && build-storybook -s test-data", - "build:watch": "npm run build -- --watch", + "build": "tsc --build", + "build:storybook": "build-storybook -s test-data", + "build:watch": "pnpm run build -- --watch", "clean": "tsc --build --clean", "lint": "eslint --max-warnings 0 --ext ts,tsx, lib", - "prepack": "npm run clean && npm run lint && npm run build && npm run test && cp package.json dist/", - "start": "../../scripts/nws.sh build -d && start-storybook -p 6006 -s test-data", + "prepack": "pnpm run clean && pnpm run lint && pnpm run --filter {.}... build && pnpm test", + "start": "start-storybook -p 6006 -s test-data", "test": "jest --watch", "test:coverage": "jest --coverage" }, @@ -21,26 +21,29 @@ "author": "matiasbavera@gmail.com", "license": "Apache-2.0", "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", "@fontsource/roboto": "^4.3.0", "@mui/icons-material": "^5.8.3", "@mui/lab": "5.0.0-alpha.86", - "api-client": "^0.0.1", + "api-client": "workspace:*", "eventemitter3": "^4.0.7", "keycloak-js": "^11.0.2" }, "devDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", + "@babel/core": "^7.18.6", "@mui/material": "^5.8.3", "@storybook/addon-actions": "^6.5.8", "@storybook/addon-essentials": "^6.5.8", "@storybook/addon-links": "^6.5.8", "@storybook/react": "^6.5.8", + "@testing-library/dom": "^8.14.0", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.2.3", "@testing-library/react-hooks": "^5.0.3", "@testing-library/user-event": "^12.1.9", "@types/debug": "^4.1.5", + "@types/history": "^4.7.11", "@types/jest": "^26.0.13", "@types/react": "^17.0.19", "@types/react-dom": "^17.0.9", @@ -56,13 +59,13 @@ "react-dom": "^17.0.2", "react-router": "^5.2.0", "react-router-dom": "^5.2.0", + "require-from-string": "^2.0.2", "ts-jest": "^26.4.1", "ts-node": "^9.1.1", - "typescript": "~4.4.4" + "typescript": "~4.4.4", + "webpack": "^4" }, "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", "@mui/material": "^5.8.3", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/packages/rmf-auth/tsconfig.json b/packages/rmf-auth/tsconfig.json index efcbbdcfe..0c9fc05cc 100644 --- a/packages/rmf-auth/tsconfig.json +++ b/packages/rmf-auth/tsconfig.json @@ -14,8 +14,7 @@ "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "react-jsx", - "composite": true + "jsx": "react-jsx" }, "include": ["lib/"], "ts-node": { diff --git a/packages/rmf-models/package.json b/packages/rmf-models/package.json index 8679ae600..2b4a89929 100644 --- a/packages/rmf-models/package.json +++ b/packages/rmf-models/package.json @@ -2,7 +2,7 @@ "name": "rmf-models", "version": "0.0.1", "description": "RMF models generated from ROS messages", - "main": "dist/lib/index.js", + "main": "dist/index.js", "scripts": { "build": "tsc --build" }, diff --git a/packages/rmf-models/setup.py b/packages/rmf-models/setup.py deleted file mode 100644 index 1a6534a5c..000000000 --- a/packages/rmf-models/setup.py +++ /dev/null @@ -1,31 +0,0 @@ -from setuptools import setup - -package_name = "ts_ros" - -setup( - name=package_name, - description="Generates typescript definitions from ROS messages", - version="0.0.1", - packages=["ts_ros"], - author="Teo Koon Peng", - author_email="koonpeng@openrobotics.org", - keywords=["ROS", "typescript"], - install_requires=[ - "jinja2==2.*", - ], - package_data={ - "ts_ros": ["templates/*"], - }, - classifiers=[ - "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python", - "Topic :: Software Development", - ], - entry_points={ - "console_scripts": [ - "ts_ros=ts_ros.__main__:main", - ], - }, - license="Apache License, Version 2.0", -) diff --git a/packages/rmf-models/tsconfig.json b/packages/rmf-models/tsconfig.json index fb5cb82e1..db6628928 100644 --- a/packages/rmf-models/tsconfig.json +++ b/packages/rmf-models/tsconfig.json @@ -16,7 +16,7 @@ // "outFile": "./", /* Concatenate and emit output to single file. */ "outDir": "./dist", /* Redirect output structure to the directory. */ // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - "composite": true, /* Enable project compilation */ + // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ diff --git a/packages/reporting-server/models/__init__.py b/packages/ros-translator/build/lib/ros_translator/__init__.py similarity index 100% rename from packages/reporting-server/models/__init__.py rename to packages/ros-translator/build/lib/ros_translator/__init__.py diff --git a/packages/ros-translator/build/lib/ros_translator/__main__.py b/packages/ros-translator/build/lib/ros_translator/__main__.py new file mode 100644 index 000000000..f8384b170 --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/__main__.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import argparse +import importlib +import os +import os.path + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument( + "-t", + "--target", + help="target language", + required=True, + ) + parser.add_argument( + "-o", + "--outdir", + help="Output directory", + required=True, + ) + parser.add_argument( + "pkgs", + help="ROS2 packages to generate files from", + nargs="+", + ) + args = parser.parse_args() + target = importlib.import_module(f"ros_translator.{args.target}") + os.makedirs(args.outdir, exist_ok=True) + target.generate(args.pkgs, args.outdir) + + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + pass diff --git a/packages/ros-translator/build/lib/ros_translator/library.py b/packages/ros-translator/build/lib/ros_translator/library.py new file mode 100644 index 000000000..a703784ce --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/library.py @@ -0,0 +1,217 @@ +import os.path +from dataclasses import dataclass +from typing import Any, Callable, Dict, Iterable, List, Optional, cast + +import ament_index_python +from rosidl_adapter.parser import ( + MessageSpecification, + ServiceSpecification, + parse_message_file, + parse_service_file, +) + + +@dataclass +class Interface: + pkg: str + file: str + base_dir: str + rel_dir: str + full_type: str + full_type_with_path: str + raw: str + + +@dataclass +class Message(Interface): + spec: MessageSpecification + dependent_types: List["Message"] + + +@dataclass +class Service(Interface): + spec: ServiceSpecification + + +@dataclass +class PackageIndex: + pkg_share_dir: str + messages: Dict[str, str] # dict of message type and the definition file + services: Dict[str, str] # dict of service type and the definition file + + +@dataclass +class PostProcessors: + message: Optional[Callable[[Message], Any]] = None + service: Optional[Callable[[Service], Any]] = None + + +class RosLibrary: + def __init__(self, post_processors: Optional[PostProcessors] = None): + self.post_processors = post_processors or PostProcessors() + self._messages = cast(Dict[str, Message], {}) + self._services = cast(Dict[str, Service], {}) + self._package_index = cast(Dict[str, PackageIndex], {}) + + def get_message(self, full_msg_type: str) -> Message: + """ + :param full_msg_type: The full message type .e.g "std_msgs/String" + """ + if full_msg_type not in self._messages: + self._messages[full_msg_type] = self._parse_message(full_msg_type) + return self._messages[full_msg_type] + + def get_all_interfaces(self, *pkgs: Iterable[str]) -> Dict[str, PackageIndex]: + """ + Recursively gets the package index for packages and their dependencies. + """ + all_pkgs = self.get_all_dependent_packages(*pkgs) + return {p: self.get_package_index(p) for p in all_pkgs} + + def get_service(self, full_srv_type: str) -> Service: + """ + :param full_srv_type: The full service type + """ + if full_srv_type not in self._services: + self._services[full_srv_type] = self._parse_service(full_srv_type) + return self._services[full_srv_type] + + def get_package_index(self, pkg_name: str) -> PackageIndex: + if pkg_name not in self._package_index: + self._package_index[pkg_name] = self._parse_rosidl_index(pkg_name) + return self._package_index[pkg_name] + + def get_all_dependent_packages(self, *pkgs: Iterable[str]) -> List[str]: + def recur(pkg_name_): + if pkg_name_ not in self._package_index: + self._package_index[pkg_name_] = self._parse_rosidl_index(pkg_name_) + pkg_index = self._package_index[pkg_name_] + msgs = [self.get_message(m) for m in pkg_index.messages] + dep_msgs = [] + for m in msgs: + dep_msgs.extend([dm for dm in m.dependent_types if dm.pkg != pkg_name_]) + dep_pkgs = {} + for m in dep_msgs: + for dp in recur(m.pkg): + dep_pkgs[dp] = dp + dep_pkgs[m.pkg] = m.pkg + return dep_pkgs + + all_dep_pkgs = {} + for p in pkgs: + for dp in recur(p): + all_dep_pkgs[dp] = dp + all_dep_pkgs[p] = p + return list(all_dep_pkgs.keys()) + + @staticmethod + def _parse_rosidl_index(package: str): + base_dir = ament_index_python.get_package_share_directory(package) + messages = {} + services = {} + interfaces = ament_index_python.get_resource("rosidl_interfaces", package)[ + 0 + ].split("\n") + for i in interfaces: + if i.endswith(".msg"): + short_type = i[i.rindex("/") + 1 : i.rindex(".")] + full_type = f"{package}/{short_type}" + messages[full_type] = f"{base_dir}/{i}" + if i.endswith(".srv"): + short_type = i[i.rindex("/") + 1 : i.rindex(".")] + full_type = f"{package}/{short_type}" + services[full_type] = f"{base_dir}/{i}" + return PackageIndex( + pkg_share_dir=base_dir, + messages=messages, + services=services, + ) + + @staticmethod + def _get_full_type_with_path( + package: str, file: str, base_dir: dir, short_type: str + ): + rel_path = os.path.relpath(file, base_dir) + return f"{package}/{rel_path[:rel_path.rindex('/')]}/{short_type}" + + @staticmethod + def _get_rel_dir(full_type_with_path: str): + return f"{full_type_with_path[full_type_with_path.index('/')+1:full_type_with_path.rindex('/')]}" + + def _get_msg_dependent_types(self, msgspec: MessageSpecification): + dependent_types = [ + f"{f.type.pkg_name}/{f.type.type}" + for f in msgspec.fields + if not f.type.is_primitive_type() + ] + dedup = {f: f for f in dependent_types} + return [self.get_message(m) for m in dedup.keys()] + + def _parse_message(self, full_msg_type: str): + parts = full_msg_type.split("/") + if len(parts) != 2: + raise RuntimeError("message type must be in the form '/'") + package = parts[0] + + if package not in self._package_index: + self._package_index[package] = self._parse_rosidl_index(package) + + file = self._package_index[package].messages[full_msg_type] + base_dir = self._package_index[package].pkg_share_dir + spec = parse_message_file(package, file) + full_type_with_path = self._get_full_type_with_path( + package, + file, + base_dir, + spec.base_type.type, + ) + with open(file, "r") as f: + raw = f.read() + message = Message( + pkg=package, + file=file, + base_dir=base_dir, + rel_dir=self._get_rel_dir(full_type_with_path), + full_type=full_msg_type, + full_type_with_path=full_type_with_path, + raw=raw, + spec=spec, + dependent_types=self._get_msg_dependent_types(spec), + ) + if self.post_processors.message: + message = self.post_processors.message(message) + return message + + def _parse_service(self, full_srv_type: str): + parts = full_srv_type.split("/") + if len(parts) != 2: + raise RuntimeError("service type must be in the form '/'") + package = parts[0] + + if package not in self._package_index: + self._package_index[package] = self._parse_rosidl_index(package) + + file = self._package_index[package].services[full_srv_type] + base_dir = self._package_index[package].pkg_share_dir + spec = parse_service_file(package, file) + full_type_with_path = self._get_full_type_with_path( + package, + file, + base_dir, + spec.srv_name, + ) + with open(file, "r") as f: + raw = f.read() + service = Service( + pkg=package, + file=file, + base_dir=base_dir, + rel_dir=self._get_rel_dir(full_type_with_path), + full_type=full_srv_type, + full_type_with_path=full_type_with_path, + spec=spec, + raw=raw, + ) + if self.post_processors.service: + service = self.post_processors.service(service) + return service diff --git a/packages/ros-translator/build/lib/ros_translator/pydantic/__init__.py b/packages/ros-translator/build/lib/ros_translator/pydantic/__init__.py new file mode 100644 index 000000000..3bcfd70eb --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/pydantic/__init__.py @@ -0,0 +1,142 @@ +from os import makedirs +from os.path import dirname +from os.path import join as joinp +from typing import Sequence + +from jinja2 import Environment, FileSystemLoader +from ros_translator.library import Message, PackageIndex, PostProcessors, RosLibrary + +template_loader = FileSystemLoader(searchpath=dirname(__file__)) +template_env = Environment(loader=template_loader) +template_env.trim_blocks = True +template_env.keep_trailing_newline = True + +PRIMITIVE_TYPES = { + "bool": "bool", + "byte": "pydantic.conint(ge=0, le=255)", + "char": "pydantic.conint(ge=0, le=255)", + "float32": "float", + "float64": "float", + "int8": "pydantic.conint(ge=-128, le=127)", + "int16": "pydantic.conint(ge=-32768, le=32767)", + "int32": "pydantic.conint(ge=-2147483648, le=2147483647)", + "int64": "int", + "string": "str", + "wstring": "str", + "uint8": "pydantic.conint(ge=0, le=255)", + "uint16": "pydantic.conint(ge=0, le=65535)", + "uint32": "pydantic.conint(ge=0, le=4294967295)", + "uint64": "pydantic.conint(ge=0, le=18446744073709551615)", +} + +DEFAULT_VALUES = { + "bool": "False", + "byte": "0", + "char": "0", + "float32": "0", + "float64": "0", + "int8": "0", + "int16": "0", + "int32": "0", + "int64": "0", + "string": '""', + "wstring": '""', + "uint8": "0", + "uint16": "0", + "uint32": "0", + "uint64": "0", +} + +ARRAY_TYPES = { + "char": "bytes", + "byte": "bytes", + "uint8": "bytes", +} + +DEFAULT_ARRAY_VALUES = { + "char": "bytes()", + "byte": "bytes()", + "uint8": "bytes()", +} + + +class PydanticType: + type: str + default_value: str + + def __init__(self, ros_type): + if ros_type.is_array: + self._init_array_type(ros_type) + return + + if ros_type.is_primitive_type(): + self.type = PRIMITIVE_TYPES[ros_type.type] + self.default_value = DEFAULT_VALUES[ros_type.type] + else: + self.type = ros_type.type + self.default_value = f"{ros_type.type}()" + + def _get_array_type(self, ros_type, elem_type): + if ros_type.is_upper_bound: + return f"pydantic.conlist(item_type={elem_type}, max_items={ros_type.array_size}" + elif ros_type.array_size: + return f"pydantic.conlist(item_type={elem_type}, min_items={ros_type.array_size}, max_items={ros_type.array_size}" + else: + return f"List[{elem_type}]" + + def _init_array_type(self, ros_type): + if ros_type.is_primitive_type(): + if ros_type.type in ARRAY_TYPES: + self.type = ARRAY_TYPES[ros_type.type] + self.default_value = DEFAULT_ARRAY_VALUES[ros_type.type] + else: + self.type = self._get_array_type( + ros_type, PRIMITIVE_TYPES[ros_type.type] + ) + self.default_value = "[]" + else: + self.type = self._get_array_type(ros_type, ros_type.type) + self.default_value = "[]" + + +def augment_message(msg: Message): + for field in msg.spec.fields: + field.pydantic_type = PydanticType(field.type) + msg.commented_raw = "".join( + map(lambda x: f"# {x}", msg.raw.splitlines(keepends=True)) + ) + return msg + + +def generate_messages(roslib: RosLibrary, pkg: str, outdir: str): + template = template_env.get_template("msg.j2") + pkg_index = roslib.get_package_index(pkg) + for msg_type in pkg_index.messages: + msg = roslib.get_message(msg_type) + outpath = joinp(outdir, msg.pkg, f"{msg.spec.base_type.type}.py") + print(outpath) + template.stream(msg=msg).dump(outpath) + + +def generate_modules(pkgs: Sequence[str], outdir: str): + roslib = RosLibrary(post_processors=PostProcessors(message=augment_message)) + all_pkg_index = roslib.get_all_interfaces(*pkgs) + + with open(joinp(outdir, "__init__.py"), "w", encoding="utf-8"): + pass + for pkg_name, pkg_index in all_pkg_index.items(): + pkg_index: PackageIndex + pkg_outdir = joinp(outdir, pkg_name) + makedirs(pkg_outdir, exist_ok=True) + with open(joinp(pkg_outdir, "__init__.py"), "w", encoding="utf-8") as f: + for msg in ( + roslib.get_message(msg_type) for msg_type in pkg_index.messages + ): + short_type = msg.spec.base_type.type + f.write(f"from .{short_type} import {short_type}\n") + generate_messages(roslib, pkg_name, outdir) + + +def generate(pkgs: Sequence[str], outdir: str): + print("Generating pydantic interfaces") + generate_modules(pkgs, outdir) diff --git a/packages/ros-translator/build/lib/ros_translator/pydantic/msg.j2 b/packages/ros-translator/build/lib/ros_translator/pydantic/msg.j2 new file mode 100644 index 000000000..235f09ce2 --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/pydantic/msg.j2 @@ -0,0 +1,30 @@ +# This is a generated file, do not edit + +from typing import List + +import pydantic +{% for dep_msg in msg.dependent_types %} +from ..{{ dep_msg.spec.base_type.pkg_name }}.{{ dep_msg.spec.base_type.type }} import {{ dep_msg.spec.base_type.type }} +{% endfor %} + + +class {{ msg.spec.base_type.type }}(pydantic.BaseModel): +{% for field in msg.spec.fields %} + {{ field.name }}: {{ field.pydantic_type.type }} = {{ field.pydantic_type.default_value }} # {% if field.type.pkg_name %}{{ field.type.pkg_name }}/{% endif %}{{ field.type.type }} +{% endfor %} +{% if not msg.spec.fields %} + pass +{% endif %} + + class Config: + orm_mode = True + schema_extra = { + "required": [ +{% for field in msg.spec.fields %} + "{{ field.name }}", +{% endfor %} + ], + } + + +{{ msg.commented_raw }} \ No newline at end of file diff --git a/packages/ros-translator/build/lib/ros_translator/ros_types.py b/packages/ros-translator/build/lib/ros_translator/ros_types.py new file mode 100644 index 000000000..5b9412b28 --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/ros_types.py @@ -0,0 +1,17 @@ +ROS_TYPES = [ + "bool", + "byte", + "char", + "float32", + "float64", + "int8", + "int16", + "int32", + "int64", + "string", + "wstring", + "uint8", + "uint16", + "uint32", + "uint64", +] diff --git a/packages/ros-translator/build/lib/ros_translator/typescript/__init__.py b/packages/ros-translator/build/lib/ros_translator/typescript/__init__.py new file mode 100644 index 000000000..b6ef763cf --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/typescript/__init__.py @@ -0,0 +1,179 @@ +import argparse +import sys +from copy import copy +from os import makedirs +from os.path import basename, dirname, exists +from os.path import join as joinp +from typing import List, Sequence + +import jinja2 +from jinja2 import Environment, FileSystemLoader +from ros_translator.library import Message, PostProcessors, RosLibrary, Service + +template_loader = FileSystemLoader(searchpath=joinp(dirname(__file__), "templates")) +template_env = Environment(loader=template_loader) +template_env.trim_blocks = True +template_env.keep_trailing_newline = True + + +# These types does not need a 'new' keyword +PRIMITIVE_TYPES = { + "bool": "boolean", + "byte": "number", + "char": "number", + "float32": "number", + "float64": "number", + "int8": "number", + "int16": "number", + "int32": "number", + "int64": "number", + "string": "string", + "wstring": "string", + "uint8": "number", + "uint16": "number", + "uint32": "number", + "uint64": "number", +} + +PRIMITIVE_JS_TYPES = [ + "string", + "boolean", + "number", +] + +PRIMITIVE_TYPES_DEFAULT_VALUES = { + "bool": "false", + "byte": "0", + "char": "0", + "float32": "0", + "float64": "0", + "int8": "0", + "int16": "0", + "int32": "0", + "int64": "0", + "string": "''", + "wstring": "''", + "uint8": "0", + "uint16": "0", + "uint32": "0", + "uint64": "0", +} + +TYPED_ARRAY_TYPES = { + "char": "Uint8Array", + "byte": "Uint8Array", + "float32": "Float32Array", + "float64": "Float64Array", + "int8": "Int8Array", + "int16": "Int16Array", + "int32": "Int32Array", + "int64": "BigInt64Array", + "uint8": "Uint8Array", + "uint16": "Uint16Array", + "uint32": "Uint32Array", + "uint64": "BigUint64Array", +} + + +class JsType: + def __init__(self, ros_type): + self.type = None + self.base_type = None + self.is_primitive = False + self.is_typed_array = False + self.is_array = False + self.default_value = None + if hasattr(ros_type, "is_array") and ros_type.is_array: + self.type = TYPED_ARRAY_TYPES.get(ros_type.type) + self.default_value = "[]" + if self.type is None: + if ros_type.is_primitive_type(): + self.type = f"{PRIMITIVE_TYPES[ros_type.type]}[]" + else: + self.type = f"{ros_type.type}[]" + self.is_array = True + ros_element_type = copy(ros_type) + ros_element_type.is_array = False + self.element_type = JsType(ros_element_type) + else: + self.is_typed_array = True + self.base_type = self.type[: len(self.type) - 2] + else: + self.type = PRIMITIVE_TYPES.get(ros_type.type) + if ros_type.is_primitive_type(): + self.default_value = PRIMITIVE_TYPES_DEFAULT_VALUES[ros_type.type] + else: + self.default_value = f"new {ros_type.type}()" + if self.type is None: + self.type = ros_type.type + self.base_type = self.type + self.is_primitive = self.base_type in PRIMITIVE_JS_TYPES + + +def augment_message(msg: Message): + for f in msg.spec.fields: + f.js_type = JsType(f.type) + return msg + + +def generate_modules(pkgs: Sequence[str], dstdir: str): + roslib = RosLibrary(post_processors=PostProcessors(message=augment_message)) + all_pkgs = roslib.get_all_dependent_packages(*pkgs) + all_pkg_index = [roslib.get_package_index(p) for p in all_pkgs] + all_messages: List[Message] = [] + for p in all_pkg_index: + all_messages.extend((roslib.get_message(m) for m in p.messages)) + + all_services: List[Service] = [] + for p in all_pkg_index: + all_services.extend((roslib.get_service(s) for s in p.services)) + + template = template_env.get_template("ts-definition.j2") + modules = [] + + for msg in all_messages: + if not isinstance(msg.spec, str): + base_type = msg.spec.base_type + pkg_name = base_type.pkg_name + output_fpath = joinp( + dstdir, pkg_name, msg.rel_dir, f"{msg.spec.base_type.type}.ts" + ) + + if not exists(dirname(output_fpath)): + makedirs(dirname(output_fpath)) + + print(f"Generating model {base_type}") + template.stream(msg=msg).dump(output_fpath) + modules.append(f"./{pkg_name}/{msg.rel_dir}/{base_type.type}") + + template = template_env.get_template("srv-ts-definition.j2") + for srv in all_services: + if not isinstance(srv.spec, str): + output_fpath = joinp( + dstdir, srv.spec.pkg_name, srv.rel_dir, f"{srv.spec.srv_name}.ts" + ) + + if not exists(dirname(output_fpath)): + makedirs(dirname(output_fpath)) + + print(f"Generating model {srv.full_type}") + template.stream(srv=srv).dump(output_fpath) + modules.append(f"./{srv.spec.pkg_name}/{srv.rel_dir}/{srv.spec.srv_name}") + return modules + + +def generate_index(modules, dstdir): + template = template_env.get_template("index.j2") + + output_fpath = joinp(dstdir, "index.ts") + template.stream( + modules=modules, + ).dump(output_fpath) + + +def generate(pkgs: Sequence[str], outdir: str): + print("Generating typescript interfaces") + modules = generate_modules(pkgs, outdir) + print("Generating index") + generate_index(modules, outdir) + print("Successfully generated typings") diff --git a/packages/ros-translator/build/lib/ros_translator/typescript/templates/index.j2 b/packages/ros-translator/build/lib/ros_translator/typescript/templates/index.j2 new file mode 100644 index 000000000..c29320537 --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/typescript/templates/index.j2 @@ -0,0 +1,5 @@ +/* This is a generated file, do not edit */ + +{% for module in modules %} +export * from '{{ module }}'; +{% endfor %} diff --git a/packages/ros-translator/build/lib/ros_translator/typescript/templates/srv-ts-definition.j2 b/packages/ros-translator/build/lib/ros_translator/typescript/templates/srv-ts-definition.j2 new file mode 100644 index 000000000..4b71a7c6b --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/typescript/templates/srv-ts-definition.j2 @@ -0,0 +1,10 @@ +/* This is a generated file, do not edit */ + +import { {{ srv.spec.srv_name }}_Request } from './{{ srv.spec.srv_name }}_Request'; +import { {{ srv.spec.srv_name }}_Response } from './{{ srv.spec.srv_name }}_Response'; + +export class {{ srv.spec.srv_name }} { + static readonly FullServiceName = '{{ srv.spec.pkg_name }}/{{ srv.rel_dir }}/{{ srv.spec.srv_name }}'; + static readonly Request = {{ srv.spec.srv_name }}_Request; + static readonly Response = {{ srv.spec.srv_name }}_Response; +} diff --git a/packages/ros-translator/build/lib/ros_translator/typescript/templates/ts-definition.j2 b/packages/ros-translator/build/lib/ros_translator/typescript/templates/ts-definition.j2 new file mode 100644 index 000000000..6b00e358c --- /dev/null +++ b/packages/ros-translator/build/lib/ros_translator/typescript/templates/ts-definition.j2 @@ -0,0 +1,97 @@ +{% set msgspec = msg.spec %} +{% set base_type = msgspec.base_type %} +/* This is a generated file, do not edit */ + +{% for dep_msg in msg.dependent_types %} +import { {{ dep_msg.spec.base_type.type }} } from '../../{{ dep_msg.spec.base_type.pkg_name }}/{{ dep_msg.rel_dir }}/{{ dep_msg.spec.base_type.type }}'; +{% endfor %} + +export class {{ base_type.type }} { + static readonly FullTypeName = '{{ base_type.pkg_name }}/{{ msg.rel_dir }}/{{ base_type.type }}'; + +{% if msgspec.constants %} +{% for const in msgspec.constants %} + static readonly {{ const.name }} = {{ const.value }}; +{% endfor %} +{% endif %} + +{% for field in msgspec.fields %} +{% if field.js_type.is_typed_array %} + {{ field.name }}: {{ field.js_type.type }} | number[]; +{% else %} + {{ field.name }}: {{ field.js_type.type }}; +{% endif %} +{% endfor %} + + constructor(fields: Partial<{{ base_type.type }}> = {}) { +{% for field in msgspec.fields %} + this.{{ field.name }} = fields.{{ field.name }} || {{ field.js_type.default_value }}; +{% endfor %} + } + + static validate(obj: Record): void { +{% for field in msgspec.fields %} +{% if field.type.is_array %} +{% if field.js_type.is_typed_array %} + if (!(obj['{{ field.name }}'] instanceof {{ field.js_type.type }}) && !Array.isArray(obj['{{ field.name }}'])) { + throw new Error('expected "{{ field.name }}" to be "{{ field.js_type.type }}" or an array'); + } +{% else %} + if (!Array.isArray(obj['{{ field.name }}'])) { + throw new Error('expected "{{ field.name }}" to be an array'); + } +{% endif %} +{% if field.type.is_upper_bound %} + if (obj['{{ field.name }}'].length > {{ field.type.array_size }}) { + throw new Error('"{{ field.name }}" exceeds the upper bound of {{ field.type.array_size }}') + } +{% elif field.type.array_size %} + if (obj['{{ field.name }}'].length != {{ field.type.array_size }}) { + throw new Error('"{{ field.name }}" must have length of {{ field.type.array_size }}'); + } +{% endif %} +{% if field.js_type.is_typed_array %} + if (Array.isArray(obj['{{ field.name }}'])) { + for (const [i, v] of obj['{{ field.name }}'].entries()) { + if (typeof v !== 'number') { + throw new Error(`expected index ${i} of "{{ field.name }}" to be "number"`); + } + } + } +{% else %} +{% if field.js_type.is_primitive %} + for (const [i, v] of obj['{{ field.name }}'].entries()) { + if (typeof v !== '{{ field.js_type.element_type.type }}') { + throw new Error(`expected index ${i} of "{{ field.name }}" to be "{{ field.js_type.element_type.type }}"`); + } + } +{% else %} + for (const [i, v] of obj['{{ field.name }}'].entries()) { + try { + {{ field.type.type }}.validate(v) + } catch (e) { + throw new Error(`in index ${i} of "{{ field.name }}":\n ` + (e as Error).message); + } + } +{% endif %} +{% endif %} +{% else %} +{% if field.js_type.is_primitive %} + if (typeof obj['{{ field.name }}'] !== '{{ field.js_type.type }}') { + throw new Error('expected "{{ field.name }}" to be "{{ field.js_type.type }}"'); + } +{% else %} + try { + {{ field.type.type }}.validate(obj['{{ field.name }}'] as Record); + } catch (e) { + throw new Error('in "{{ field.name }}":\n ' + (e as Error).message); + } +{% endif %} +{% endif %} +{% endfor %} + } +} + +/* +{{ msg.raw }} +*/ diff --git a/packages/ros-translator/package.json b/packages/ros-translator/package.json index f04d08fc3..ad4dc0912 100644 --- a/packages/ros-translator/package.json +++ b/packages/ros-translator/package.json @@ -5,14 +5,14 @@ "description": "dummy package", "main": "index.js", "scripts": { - "test": "bash -c './test.sh'" + "test": ". ../../.venv/bin/activate && ./test.sh" }, "author": "", "license": "ISC", "devDependencies": { "@types/jasmine": "^3.8.2", "jasmine": "^3.6.6", - "pipenv-install": "file:../../pipenv-install", + "pipenv-install": "workspace:*", "ts-node": "^9.1.1", "typescript": "~4.4.4" } diff --git a/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/CMakeLists.txt b/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/CMakeLists.txt index 2862c4584..a2fa4e120 100644 --- a/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/CMakeLists.txt +++ b/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/CMakeLists.txt @@ -15,21 +15,18 @@ endif() find_package(ament_cmake REQUIRED) find_package(builtin_interfaces REQUIRED) find_package(rosidl_default_generators REQUIRED) +find_package(std_msgs REQUIRED) set(msg_files "msg/FixedArray.msg" "msg/BoundedSequence.msg" "msg/Nested.msg" "msg/TypedArray.msg" + DEPENDENCIES builtin_interfaces std_msgs ) -# set(srv_files -# "srv/LiftClearance.srv" -# ) - rosidl_generate_interfaces(${PROJECT_NAME} ${msg_files} - # ${srv_files} ) ament_export_dependencies(rosidl_default_runtime) diff --git a/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/package.xml b/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/package.xml index d91e84518..17520de22 100644 --- a/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/package.xml +++ b/packages/ros-translator/ros_translator/test/ros_translator_test_msgs/package.xml @@ -7,6 +7,8 @@ nobody Apache License 2.0 + std_msgs + ament_cmake rosidl_default_generators rosidl_interface_packages diff --git a/packages/ros-translator/ros_translator/typescript/test/test.sh b/packages/ros-translator/ros_translator/typescript/test/test.sh index cc68af202..45c40f5d4 100755 --- a/packages/ros-translator/ros_translator/typescript/test/test.sh +++ b/packages/ros-translator/ros_translator/typescript/test/test.sh @@ -3,8 +3,8 @@ set -e cd $(dirname $0) rm -rf out -PIPENV_MAX_DEPTH=6 pipenv run python -m ros_translator -t=typescript -o=out ros_translator_test_msgs +python -m ros_translator -t=typescript -o=out ros_translator_test_msgs echo 'test build' tsc --noEmit echo 'ok' -ts-node -T $(npx which jasmine) "$@" +ts-node -T ../../../node_modules/jasmine/bin/jasmine.js "$@" diff --git a/pipenv-install/README.md b/pipenv-install/README.md index 6875e2c96..4c0992747 100644 --- a/pipenv-install/README.md +++ b/pipenv-install/README.md @@ -1 +1 @@ -This is a dummy package so that we can run pipenv only once when bootstrapping. +This is a dummy package so that we can run pipenv install only when needed. diff --git a/pipenv-install/package.json b/pipenv-install/package.json index 93a719600..7db524081 100644 --- a/pipenv-install/package.json +++ b/pipenv-install/package.json @@ -1,9 +1,9 @@ { "name": "pipenv-install", "version": "0.0.0", - "description": "dummy package", + "description": "A dummy package so that we can run pipenv install only when needed", "private": true, "scripts": { - "install": "node ../scripts/pipenv-install.js" + "install": "../scripts/pipenv-install.sh" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..606c18f81 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,22721 @@ +lockfileVersion: 5.4 + +importers: + + .: + specifiers: + '@typescript-eslint/eslint-plugin': ^4.33.0 + '@typescript-eslint/parser': ^4.33.0 + eslint: ^7.32.0 + eslint-plugin-react: ^7.30.1 + eslint-plugin-react-hooks: ^4.6.0 + husky: ^8.0.1 + lint-staged: ^10.5.4 + prettier: ^2.7.1 + pyright: ^1.1.257 + typescript: ~4.4.4 + devDependencies: + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + eslint: 7.32.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + husky: 8.0.1 + lint-staged: 10.5.4 + prettier: 2.7.1 + pyright: 1.1.257 + typescript: 4.4.4 + + packages/api-client: + specifiers: + '@types/debug': ^4.1.5 + '@types/jasmine': ^3.8.2 + '@typescript-eslint/eslint-plugin': ^4.33.0 + '@typescript-eslint/parser': ^4.33.0 + axios: ^0.21.1 + debug: ^4.2.0 + eslint: ^7.26.0 + jasmine: ^3.6.6 + rmf-models: workspace:* + socket.io-client: ^3.1.3 + ts-node: ^9.1.1 + typescript: ~4.4.4 + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + rmf-models: link:../rmf-models + socket.io-client: 3.1.3 + devDependencies: + '@types/jasmine': 3.10.6 + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + axios: 0.21.4_debug@4.3.4 + eslint: 7.32.0 + jasmine: 3.99.0 + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + + packages/api-server: + specifiers: + pipenv-install: workspace:* + devDependencies: + pipenv-install: link:../../pipenv-install + + packages/dashboard: + specifiers: + '@babel/core': ^7.18.6 + '@fontsource/roboto': ^4.3.0 + '@fortawesome/fontawesome-svg-core': ^1.2.30 + '@fortawesome/free-solid-svg-icons': ^5.14.0 + '@fortawesome/react-fontawesome': ^0.1.11 + '@mui/icons-material': ^5.8.3 + '@mui/material': ^5.8.3 + '@mui/system': ^5.8.3 + '@storybook/addon-actions': ^6.5.8 + '@storybook/addon-essentials': ^6.5.8 + '@storybook/addon-links': ^6.5.8 + '@storybook/node-logger': ^6.5.9 + '@storybook/preset-create-react-app': ^3.2.0 + '@storybook/react': ^6.5.8 + '@testing-library/dom': ^8.14.0 + '@testing-library/jest-dom': ^5.11.4 + '@testing-library/react': ^11.2.3 + '@testing-library/react-hooks': ^5.0.3 + '@testing-library/user-event': ^12.1.9 + '@types/debug': ^4.1.5 + '@types/jest': ^26.0.13 + '@types/leaflet': ^1.5.17 + '@types/react': ^17.0.19 + '@types/react-dom': ^17.0.9 + '@types/react-grid-layout': ^1.3.2 + '@types/react-leaflet': ^2.5.2 + '@types/react-router': ^5.1.7 + '@types/react-router-dom': ^5.1.7 + ajv: ^8.10.0 + api-client: workspace:* + api-server: file:../api-server + axios: ^0.21.1 + canvas: ^2.6.1 + chalk: ^4.1.0 + concurrently: ^5.3.0 + date-fns: ^2.21.3 + debug: ^4.2.0 + eventemitter3: ^4.0.7 + inquirer: ^8.1.2 + keycloak-js: ^11.0.2 + leaflet: ^1.7.1 + node-vibrant: ^3.1.6 + react: ^17.0.2 + react-components: workspace:* + react-customizable-progressbar: ^1.0.3 + react-dom: ^17.0.2 + react-grid-layout: ^1.3.4 + react-leaflet: ^2.7.0 + react-refresh: ^0.9 + react-router: ^5.2.0 + react-router-dom: ^5.2.0 + react-scripts: ^4.0.3 + require-from-string: ^2.0.2 + rmf-auth: file:../rmf-auth + rmf-models: file:../rmf-models + rxjs: ^7.5.5 + source-map-explorer: ^2.5.2 + styled-components: ^4.4.1 + ts-node: ^9.1.1 + typescript: ~4.4.4 + webpack: ^4 + dependencies: + '@fontsource/roboto': 4.5.7 + '@fortawesome/fontawesome-svg-core': 1.2.36 + '@fortawesome/free-solid-svg-icons': 5.15.4 + '@fortawesome/react-fontawesome': 0.1.19_6uk63tqcq2kfmhhlivxd3orcjq + '@mui/icons-material': 5.8.4_kvph6qsx6c7p7rhep4xods6o6m + '@mui/material': 5.8.7_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/system': 5.8.7_sudpmbbyhqtxq6t4xf6jlicdem + '@types/debug': 4.1.7 + '@types/leaflet': 1.7.11 + '@types/react': 17.0.47 + '@types/react-dom': 17.0.17 + '@types/react-grid-layout': 1.3.2 + '@types/react-leaflet': 2.8.2 + '@types/react-router': 5.1.18 + '@types/react-router-dom': 5.3.3 + ajv: 8.11.0 + api-client: link:../api-client + axios: 0.21.4_debug@4.3.4 + date-fns: 2.28.0 + debug: 4.3.4 + eventemitter3: 4.0.7 + keycloak-js: 11.0.3 + leaflet: 1.8.0 + node-vibrant: 3.1.6 + react: 17.0.2 + react-components: link:../react-components + react-customizable-progressbar: 1.0.3_react@17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-grid-layout: 1.3.4_sfoxds7t5ydpegc3knd667wn6m + react-leaflet: 2.8.0_6k6ga34dyylvilikktgvdmyx6a + react-router: 5.3.3_react@17.0.2 + react-router-dom: 5.3.3_react@17.0.2 + rmf-auth: file:packages/rmf-auth_j3cervwsprovj3mlqz6gmsp66u + rmf-models: file:packages/rmf-models + rxjs: 7.5.5 + devDependencies: + '@babel/core': 7.18.6 + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-essentials': 6.5.9_gyculp34arbmrwdtzjzr2kt3xq + '@storybook/addon-links': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/node-logger': 6.5.9 + '@storybook/preset-create-react-app': 3.2.0_vpyolfussykyviive6fphdj6k4 + '@storybook/react': 6.5.9_j6ng7opxplwphfhsdrw2xlskou + '@testing-library/dom': 8.14.0 + '@testing-library/jest-dom': 5.16.4 + '@testing-library/react': 11.2.7_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/react-hooks': 5.1.3_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/user-event': 12.8.3_ihvo3xlg2d6kwqju3os3zitn3y + '@types/jest': 26.0.24 + api-server: file:packages/api-server + canvas: 2.9.3 + chalk: 4.1.2 + concurrently: 5.3.0 + inquirer: 8.2.4 + react-refresh: 0.9.0 + react-scripts: 4.0.3_uiqijp4xikdbdjkhli4gylh7zu + require-from-string: 2.0.2 + source-map-explorer: 2.5.2 + styled-components: 4.4.1_sfoxds7t5ydpegc3knd667wn6m + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + webpack: 4.46.0 + + packages/dashboard-e2e: + specifiers: + '@babel/core': ^7.18.6 + '@types/mocha': ^9.0.0 + '@wdio/browserstack-service': 7.11.1 + '@wdio/cli': 7.11.1 + '@wdio/local-runner': 7.11.1 + '@wdio/mocha-framework': 7.11.1 + '@wdio/spec-reporter': 7.10.1 + concurrently: ^5.3.0 + rmf-dashboard: file:../dashboard + serve: ^11.3.2 + ts-node: ^9.1.1 + typescript: ~4.4.4 + devDependencies: + '@babel/core': 7.18.6 + '@types/mocha': 9.1.1 + '@wdio/browserstack-service': 7.11.1_@wdio+cli@7.11.1 + '@wdio/cli': 7.11.1 + '@wdio/local-runner': 7.11.1_@wdio+cli@7.11.1 + '@wdio/mocha-framework': 7.11.1 + '@wdio/spec-reporter': 7.10.1_@wdio+cli@7.11.1 + concurrently: 5.3.0 + rmf-dashboard: file:packages/dashboard_@babel+core@7.18.6 + serve: 11.3.2 + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + + packages/react-components: + specifiers: + '@babel/core': ^7.18.6 + '@date-io/core': ^2.11.0 + '@date-io/date-fns': ^2.11.0 + '@emotion/react': ^11.9.3 + '@emotion/styled': ^11.9.3 + '@fontsource/roboto': ^4.3.0 + '@jsdevtools/coverage-istanbul-loader': ^3.0.5 + '@mui/icons-material': ^5.8.3 + '@mui/lab': 5.0.0-alpha.86 + '@mui/material': ^5.8.3 + '@mui/styles': ^5.8.3 + '@mui/system': ^5.8.3 + '@mui/x-data-grid': ^5.12.1 + '@mui/x-date-pickers': 5.0.0-alpha.6 + '@storybook/addon-actions': ^6.5.8 + '@storybook/addon-essentials': ^6.5.8 + '@storybook/addon-links': ^6.5.8 + '@storybook/react': ^6.5.8 + '@testing-library/dom': ^8.14.0 + '@testing-library/react': ^11.2.3 + '@testing-library/react-hooks': ^5.0.3 + '@testing-library/user-event': ^12.1.9 + '@types/crc': ^3.4.0 + '@types/debug': ^4.1.5 + '@types/jasmine': ^3.8.2 + '@types/leaflet': ^1.5.17 + '@types/rbush': ^3.0.0 + '@types/react': ^17.0.19 + '@types/react-dom': ^17.0.9 + '@types/react-grid-layout': ^1.3.2 + '@types/react-leaflet': ^2.5.2 + '@types/react-router': ^5.1.7 + '@types/react-router-dom': ^5.1.7 + '@types/react-virtualized-auto-sizer': ^1.0.1 + '@types/react-window': ^1.8.5 + '@types/shallowequal': ^1.1.1 + '@typescript-eslint/eslint-plugin': ^4.33.0 + '@typescript-eslint/parser': ^4.33.0 + api-client: workspace:* + clsx: ^1.1.1 + concurrently: ^5.3.0 + crc: ^3.8.0 + css-loader: ^5 + date-fns: ^2.21.3 + debug: ^4.2.0 + eslint: ^7.26.0 + eslint-plugin-react: ^7.21.4 + eslint-plugin-react-hooks: ^4.1.2 + eventemitter3: ^4.0.7 + file-loader: ^6.2.0 + jasmine: ^3.6.6 + karma: ^6.3.20 + karma-browserstack-launcher: ^1.6.0 + karma-chrome-launcher: ^3.1.0 + karma-coverage: ^2.2.0 + karma-jasmine: ^4.0.1 + karma-source-map-support: ^1.4.0 + karma-webpack: ^4.0.2 + leaflet: ^1.7.1 + node-vibrant: ^3.1.6 + process: 0.11.10 + puppeteer: '*' + rbush: ^3.0.1 + react: ^17.0.2 + react-customizable-progressbar: ^1.0.3 + react-dom: ^17.0.2 + react-grid-layout: ^1.3.4 + react-leaflet: ^2.7.0 + react-router: ^5.2.0 + react-router-dom: ^5.2.0 + react-virtualized-auto-sizer: ^1.0.6 + react-window: ^1.8.6 + require-from-string: ^2.0.2 + rmf-models: workspace:* + shallowequal: ^1.1.0 + style-loader: ^2 + ts-loader: ^8.1.0 + typescript: ~4.4.4 + webpack: ^4.46.0 + webpack-cli: ^4.8.0 + dependencies: + '@date-io/core': 2.14.0 + '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/icons-material': 5.8.4_kvph6qsx6c7p7rhep4xods6o6m + '@mui/lab': 5.0.0-alpha.86_d4ztt27k5xb5vqpt5ozi45o7wq + '@mui/styles': 5.8.7_sudpmbbyhqtxq6t4xf6jlicdem + '@mui/x-data-grid': 5.12.3_oop6dcki46d7lexi6nxggagcai + '@mui/x-date-pickers': 5.0.0-alpha.6_5ven2gtssvqbzui2gfo734hiwq + '@types/crc': 3.8.0 + '@types/rbush': 3.0.0 + '@types/react-grid-layout': 1.3.2 + '@types/react-leaflet': 2.8.2 + '@types/shallowequal': 1.1.1 + api-client: link:../api-client + clsx: 1.2.1 + crc: 3.8.0 + date-fns: 2.28.0 + debug: 4.3.4 + eventemitter3: 4.0.7 + node-vibrant: 3.1.6 + rbush: 3.0.1 + react-customizable-progressbar: 1.0.3_react@17.0.2 + react-grid-layout: 1.3.4_sfoxds7t5ydpegc3knd667wn6m + react-leaflet: 2.8.0_6k6ga34dyylvilikktgvdmyx6a + react-virtualized-auto-sizer: 1.0.6_sfoxds7t5ydpegc3knd667wn6m + react-window: 1.8.7_sfoxds7t5ydpegc3knd667wn6m + rmf-models: link:../rmf-models + shallowequal: 1.1.0 + devDependencies: + '@babel/core': 7.18.6 + '@fontsource/roboto': 4.5.7 + '@jsdevtools/coverage-istanbul-loader': 3.0.5 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-essentials': 6.5.9_o7dzebd74uljnceeqkxt3bdnci + '@storybook/addon-links': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/react': 6.5.9_nrzqso4m4rnoflfjhxnx5fkfj4 + '@testing-library/dom': 8.14.0 + '@testing-library/react': 11.2.7_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/react-hooks': 5.1.3_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/user-event': 12.8.3_ihvo3xlg2d6kwqju3os3zitn3y + '@types/debug': 4.1.7 + '@types/jasmine': 3.10.6 + '@types/leaflet': 1.7.11 + '@types/react': 17.0.47 + '@types/react-dom': 17.0.17 + '@types/react-router': 5.1.18 + '@types/react-router-dom': 5.3.3 + '@types/react-virtualized-auto-sizer': 1.0.1 + '@types/react-window': 1.8.5 + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + concurrently: 5.3.0 + css-loader: 5.2.7_webpack@4.46.0 + eslint: 7.32.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + file-loader: 6.2.0_webpack@4.46.0 + jasmine: 3.99.0 + karma: 6.4.0_debug@4.3.4 + karma-browserstack-launcher: 1.6.0_karma@6.4.0 + karma-chrome-launcher: 3.1.1 + karma-coverage: 2.2.0 + karma-jasmine: 4.0.2_karma@6.4.0 + karma-source-map-support: 1.4.0 + karma-webpack: 4.0.2_webpack@4.46.0 + leaflet: 1.8.0 + process: 0.11.10 + puppeteer: 15.3.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-router: 5.3.3_react@17.0.2 + react-router-dom: 5.3.3_react@17.0.2 + require-from-string: 2.0.2 + style-loader: 2.0.0_webpack@4.46.0 + ts-loader: 8.4.0_bubf4veva5nnocx7gaznjuarcu + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-cli: 4.10.0_webpack@4.46.0 + + packages/rmf-auth: + specifiers: + '@babel/core': ^7.18.6 + '@emotion/react': ^11.9.3 + '@emotion/styled': ^11.9.3 + '@fontsource/roboto': ^4.3.0 + '@mui/icons-material': ^5.8.3 + '@mui/lab': 5.0.0-alpha.86 + '@mui/material': ^5.8.3 + '@storybook/addon-actions': ^6.5.8 + '@storybook/addon-essentials': ^6.5.8 + '@storybook/addon-links': ^6.5.8 + '@storybook/react': ^6.5.8 + '@testing-library/dom': ^8.14.0 + '@testing-library/jest-dom': ^5.11.4 + '@testing-library/react': ^11.2.3 + '@testing-library/react-hooks': ^5.0.3 + '@testing-library/user-event': ^12.1.9 + '@types/debug': ^4.1.5 + '@types/history': ^4.7.11 + '@types/jest': ^26.0.13 + '@types/react': ^17.0.19 + '@types/react-dom': ^17.0.9 + '@types/react-router': ^5.1.7 + '@types/react-router-dom': ^5.1.7 + api-client: workspace:* + concurrently: ^5.3.0 + eslint: ^7.26.0 + eslint-plugin-react: ^7.21.4 + eslint-plugin-react-hooks: ^4.1.2 + eventemitter3: ^4.0.7 + history: ^4.10.1 + jest: ^26.5.0 + keycloak-js: ^11.0.2 + react: ^17.0.2 + react-dom: ^17.0.2 + react-router: ^5.2.0 + react-router-dom: ^5.2.0 + require-from-string: ^2.0.2 + ts-jest: ^26.4.1 + ts-node: ^9.1.1 + typescript: ~4.4.4 + webpack: ^4 + dependencies: + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@fontsource/roboto': 4.5.7 + '@mui/icons-material': 5.8.4_kvph6qsx6c7p7rhep4xods6o6m + '@mui/lab': 5.0.0-alpha.86_scioorpqxgmyxwumjkw4frwxae + api-client: link:../api-client + eventemitter3: 4.0.7 + keycloak-js: 11.0.3 + devDependencies: + '@babel/core': 7.18.6 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-essentials': 6.5.9_bhx7f7jsq63mixbhnqhkmszprm + '@storybook/addon-links': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/react': 6.5.9_xnzdybpwipo7vnae3bcyo56wxa + '@testing-library/dom': 8.14.0 + '@testing-library/jest-dom': 5.16.4 + '@testing-library/react': 11.2.7_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/react-hooks': 5.1.3_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/user-event': 12.8.3_ihvo3xlg2d6kwqju3os3zitn3y + '@types/debug': 4.1.7 + '@types/history': 4.7.11 + '@types/jest': 26.0.24 + '@types/react': 17.0.47 + '@types/react-dom': 17.0.17 + '@types/react-router': 5.1.18 + '@types/react-router-dom': 5.3.3 + concurrently: 5.3.0 + eslint: 7.32.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + history: 4.10.1 + jest: 26.6.3_ts-node@9.1.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-router: 5.3.3_react@17.0.2 + react-router-dom: 5.3.3_react@17.0.2 + require-from-string: 2.0.2 + ts-jest: 26.5.6_zdj7ajopyucih64akr2ufopani + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + webpack: 4.46.0 + + packages/rmf-models: + specifiers: + '@types/jasmine': ^3.8.2 + '@types/node': ^14.14.35 + jasmine: ^3.6.6 + json-schema-to-typescript: ^10.1.4 + ts-node: ^9.1.1 + typescript: ~4.4.4 + devDependencies: + '@types/jasmine': 3.10.6 + '@types/node': 14.18.21 + jasmine: 3.99.0 + json-schema-to-typescript: 10.1.5 + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + + packages/ros-translator: + specifiers: + '@types/jasmine': ^3.8.2 + jasmine: ^3.6.6 + pipenv-install: workspace:* + ts-node: ^9.1.1 + typescript: ~4.4.4 + devDependencies: + '@types/jasmine': 3.10.6 + jasmine: 3.99.0 + pipenv-install: link:../../pipenv-install + ts-node: 9.1.1_typescript@4.4.4 + typescript: 4.4.4 + + pipenv-install: + specifiers: {} + +packages: + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.14 + + /@apidevtools/json-schema-ref-parser/9.0.9: + resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.11 + call-me-maybe: 1.0.1 + js-yaml: 4.1.0 + dev: true + + /@babel/code-frame/7.10.4: + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame/7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data/7.18.6: + resolution: {integrity: sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==} + engines: {node: '>=6.9.0'} + + /@babel/core/7.12.3: + resolution: {integrity: sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helpers': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + lodash: 4.17.21 + resolve: 1.22.1 + semver: 5.7.1 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core/7.12.9: + resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helpers': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + lodash: 4.17.21 + resolve: 1.22.1 + semver: 5.7.1 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core/7.18.6: + resolution: {integrity: sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helpers': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/generator/7.18.7: + resolution: {integrity: sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.18.6: + resolution: {integrity: sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-compilation-targets/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.18.6 + '@babel/core': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-member-expression-to-functions': 7.18.6 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.1.0 + dev: true + + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.18.6: + resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/traverse': 7.18.6 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider/0.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/traverse': 7.18.6 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor/7.18.6: + resolution: {integrity: sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==} + engines: {node: '>=6.9.0'} + + /@babel/helper-explode-assignable-expression/7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-function-name/7.18.6: + resolution: {integrity: sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.6 + '@babel/types': 7.18.7 + + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + + /@babel/helper-member-expression-to-functions/7.18.6: + resolution: {integrity: sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + + /@babel/helper-module-transforms/7.18.6: + resolution: {integrity: sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-plugin-utils/7.10.4: + resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} + dev: true + + /@babel/helper-plugin-utils/7.18.6: + resolution: {integrity: sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-wrap-function': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.18.6: + resolution: {integrity: sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-member-expression-to-functions': 7.18.6 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.18.6: + resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + + /@babel/helper-skip-transparent-expression-wrappers/7.18.6: + resolution: {integrity: sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.7 + + /@babel/helper-validator-identifier/7.18.6: + resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function/7.18.6: + resolution: {integrity: sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.18.6 + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.18.6: + resolution: {integrity: sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + transitivePeerDependencies: + - supports-color + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser/7.18.6: + resolution: {integrity: sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.7 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-gAdhsjaYmiZVxx5vTMiRfj31nB7LhwBJFMSLzeDxc7X4tKLixup0+k9ughn0RcpBrv9E3PBaXJW7jF5TCihAOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.18.6_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-export-default-from/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-oTvzWB16T9cB4j5kX8c8DuUHo/4QtR2P9vnUNKed9xqFP8Jos/IRniz1FiIryn6luDYoltDJSYF7RCpbm2doMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.12.9 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.18.6 + '@babel/core': 7.18.6 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 + dev: true + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.12.3: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.18.6: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.12.3: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.18.6: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.18.6: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-decorators/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.12.3: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.18.6: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-jsx/7.12.1_@babel+core@7.12.9: + resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.12.3: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.18.6: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.12.3: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.18.6: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.12.9: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.12.3: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.18.6: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.18.6: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.12.3: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.3 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.18.6: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-remap-async-to-generator': 7.18.6_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-block-scoping/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-classes/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-destructuring/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-flow-strip-types/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-wE0xtA7csz+hw4fKPwxmu5jnzAsXPIO57XnRwzXP3T19jWh1BODnPGoG9xKYwvAwusP7iUktHayRFbMPGtODaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/plugin-transform-for-of/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-function-name/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-literals/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-modules-amd/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-simple-access': 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-validator-identifier': 7.18.6 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-transforms': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-replace-supers': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.18.6_@babel+core@7.12.9: + resolution: {integrity: sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-parameters/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-react-constant-elements/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-4g5H1bonF1dqgMe+wQ2fvDlRZ/mN/KwArk13teDv+xxn+pUDEiiDluQd6D2B30MJcL1u3qr0WZpfq0mw9/zSqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/plugin-transform-react-jsx/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/types': 7.18.7 + dev: true + + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + regenerator-transform: 0.15.0 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-runtime/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.6 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.6 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.6 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-spread/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-template-literals/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-typescript/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-ijHNhzIrLj5lQCnI6aaNVRtGVuUZhOXFLRVFs7lLrkXTHip4FKty5oAuQdk4tywG0/WjXmjTfQCWmuzrvFer1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-create-regexp-features-plugin': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + dev: true + + /@babel/preset-env/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.18.6 + '@babel/core': 7.18.6 + '@babel/helper-compilation-targets': 7.18.6_@babel+core@7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-async-generator-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-export-namespace-from': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.6 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.18.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.18.6 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.6 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-computed-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-duplicate-keys': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-for-of': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-function-name': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-literals': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-modules-amd': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-modules-commonjs': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-modules-systemjs': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-named-capturing-groups-regex': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-typeof-symbol': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-unicode-escapes': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.18.6 + '@babel/preset-modules': 0.1.5_@babel+core@7.18.6 + '@babel/types': 7.18.7 + babel-plugin-polyfill-corejs2: 0.3.1_@babel+core@7.18.6 + babel-plugin-polyfill-corejs3: 0.5.2_@babel+core@7.18.6 + babel-plugin-polyfill-regenerator: 0.3.1_@babel+core@7.18.6 + core-js-compat: 3.23.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-flow/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-flow-strip-types': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/preset-modules/0.1.5_@babel+core@7.18.6: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.18.6 + '@babel/types': 7.18.7 + esutils: 2.0.3 + dev: true + + /@babel/preset-react/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.18.6 + dev: true + + /@babel/preset-typescript/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-plugin-utils': 7.18.6 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-typescript': 7.18.6_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/register/7.18.6_@babel+core@7.18.6: + resolution: {integrity: sha512-tkYtONzaO8rQubZzpBnvZPFcHgh8D9F55IjOsYton4X2IBoyRn2ZSWQqySTZnUn2guZbxbQiAB27hJEbvXamhQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.5 + source-map-support: 0.5.21 + dev: true + + /@babel/runtime-corejs3/7.18.6: + resolution: {integrity: sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.23.3 + regenerator-runtime: 0.13.9 + dev: true + + /@babel/runtime/7.18.6: + resolution: {integrity: sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.9 + + /@babel/template/7.18.6: + resolution: {integrity: sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + + /@babel/traverse/7.18.6: + resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/traverse/7.18.6_supports-color@5.5.0: + resolution: {integrity: sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/helper-environment-visitor': 7.18.6 + '@babel/helper-function-name': 7.18.6 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + debug: 4.3.4_supports-color@5.5.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types/7.18.7: + resolution: {integrity: sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.18.6 + to-fast-properties: 2.0.0 + + /@base2/pretty-print-object/1.0.1: + resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + dev: true + + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@cnakazawa/watch/1.0.4: + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true + dependencies: + exec-sh: 0.3.6 + minimist: 1.2.6 + dev: true + + /@colors/colors/1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + requiresBuild: true + dev: true + + /@csstools/convert-colors/1.4.0: + resolution: {integrity: sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==} + engines: {node: '>=4.0.0'} + dev: true + + /@csstools/normalize.css/10.1.0: + resolution: {integrity: sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==} + dev: true + + /@date-io/core/2.14.0: + resolution: {integrity: sha512-qFN64hiFjmlDHJhu+9xMkdfDG2jLsggNxKXglnekUpXSq8faiqZgtHm2lsHCUuaPDTV6wuXHcCl8J1GQ5wLmPw==} + + /@date-io/date-fns/2.14.0: + resolution: {integrity: sha512-4fJctdVyOd5cKIKGaWUM+s3MUXMuzkZaHuTY15PH70kU1YTMrCoauA7hgQVx9qj0ZEbGrH9VSPYJYnYro7nKiA==} + peerDependencies: + date-fns: ^2.0.0 + peerDependenciesMeta: + date-fns: + optional: true + dependencies: + '@date-io/core': 2.14.0 + dev: false + + /@date-io/date-fns/2.14.0_date-fns@2.28.0: + resolution: {integrity: sha512-4fJctdVyOd5cKIKGaWUM+s3MUXMuzkZaHuTY15PH70kU1YTMrCoauA7hgQVx9qj0ZEbGrH9VSPYJYnYro7nKiA==} + peerDependencies: + date-fns: ^2.0.0 + peerDependenciesMeta: + date-fns: + optional: true + dependencies: + '@date-io/core': 2.14.0 + date-fns: 2.28.0 + + /@date-io/dayjs/2.14.0: + resolution: {integrity: sha512-4fRvNWaOh7AjvOyJ4h6FYMS7VHLQnIEeAV5ahv6sKYWx+1g1UwYup8h7+gPuoF+sW2hTScxi7PVaba2Jk/U8Og==} + peerDependencies: + dayjs: ^1.8.17 + peerDependenciesMeta: + dayjs: + optional: true + dependencies: + '@date-io/core': 2.14.0 + + /@date-io/luxon/2.14.0: + resolution: {integrity: sha512-KmpBKkQFJ/YwZgVd0T3h+br/O0uL9ZdE7mn903VPAG2ZZncEmaUfUdYKFT7v7GyIKJ4KzCp379CRthEbxevEVg==} + peerDependencies: + luxon: ^1.21.3 || ^2.x + peerDependenciesMeta: + luxon: + optional: true + dependencies: + '@date-io/core': 2.14.0 + + /@date-io/moment/2.14.0: + resolution: {integrity: sha512-VsoLXs94GsZ49ecWuvFbsa081zEv2xxG7d+izJsqGa2L8RPZLlwk27ANh87+SNnOUpp+qy2AoCAf0mx4XXhioA==} + peerDependencies: + moment: ^2.24.0 + peerDependenciesMeta: + moment: + optional: true + dependencies: + '@date-io/core': 2.14.0 + + /@discoveryjs/json-ext/0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@emotion/babel-plugin/11.9.2_@babel+core@7.18.6: + resolution: {integrity: sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/runtime': 7.18.6 + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.5 + '@emotion/serialize': 1.0.4 + babel-plugin-macros: 2.8.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.0.13 + + /@emotion/cache/11.9.3: + resolution: {integrity: sha512-0dgkI/JKlCXa+lEXviaMtGBL0ynpx4osh7rjOXE71q9bIF8G+XhJgvi+wDu0B0IdCVx37BffiwXlN9I3UuzFvg==} + dependencies: + '@emotion/memoize': 0.7.5 + '@emotion/sheet': 1.1.1 + '@emotion/utils': 1.1.0 + '@emotion/weak-memoize': 0.2.5 + stylis: 4.0.13 + + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + /@emotion/is-prop-valid/0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + dependencies: + '@emotion/memoize': 0.7.4 + dev: true + + /@emotion/is-prop-valid/1.1.3: + resolution: {integrity: sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA==} + dependencies: + '@emotion/memoize': 0.7.5 + + /@emotion/memoize/0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + dev: true + + /@emotion/memoize/0.7.5: + resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==} + + /@emotion/react/11.9.3_7xvhny4l7yi42slhiqkpgmpofm: + resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/runtime': 7.18.6 + '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.6 + '@emotion/cache': 11.9.3 + '@emotion/serialize': 1.0.4 + '@emotion/utils': 1.1.0 + '@emotion/weak-memoize': 0.2.5 + '@types/react': 17.0.47 + hoist-non-react-statics: 3.3.2 + react: 17.0.2 + + /@emotion/serialize/1.0.4: + resolution: {integrity: sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg==} + dependencies: + '@emotion/hash': 0.8.0 + '@emotion/memoize': 0.7.5 + '@emotion/unitless': 0.7.5 + '@emotion/utils': 1.1.0 + csstype: 3.1.0 + + /@emotion/sheet/1.1.1: + resolution: {integrity: sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA==} + + /@emotion/styled/11.9.3_i64ertekxmxppn657xiekwuutq: + resolution: {integrity: sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==} + peerDependencies: + '@babel/core': ^7.0.0 + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/runtime': 7.18.6 + '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.6 + '@emotion/is-prop-valid': 1.1.3 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/serialize': 1.0.4 + '@emotion/utils': 1.1.0 + '@types/react': 17.0.47 + react: 17.0.2 + + /@emotion/unitless/0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + /@emotion/utils/1.1.0: + resolution: {integrity: sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==} + + /@emotion/weak-memoize/0.2.5: + resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==} + + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.16.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@fontsource/roboto/4.5.7: + resolution: {integrity: sha512-m57UMER23Mk6Drg9OjtHW1Y+0KPGyZfE5XJoPTOsLARLar6013kJj4X2HICt+iFLJqIgTahA/QAvSn9lwF1EEw==} + + /@fortawesome/fontawesome-common-types/0.2.36: + resolution: {integrity: sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==} + engines: {node: '>=6'} + requiresBuild: true + + /@fortawesome/fontawesome-svg-core/1.2.36: + resolution: {integrity: sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 0.2.36 + + /@fortawesome/free-solid-svg-icons/5.15.4: + resolution: {integrity: sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@fortawesome/fontawesome-common-types': 0.2.36 + + /@fortawesome/react-fontawesome/0.1.19_6uk63tqcq2kfmhhlivxd3orcjq: + resolution: {integrity: sha512-Hyb+lB8T18cvLNX0S3llz7PcSOAJMLwiVKBuuzwM/nI5uoBw+gQjnf9il0fR1C3DKOI5Kc79pkJ4/xB0Uw9aFQ==} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~1 || ~6 + react: '>=16.x' + dependencies: + '@fortawesome/fontawesome-svg-core': 1.2.36 + prop-types: 15.8.1 + react: 17.0.2 + + /@gar/promisify/1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: true + + /@hapi/address/2.1.4: + resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} + deprecated: Moved to 'npm install @sideway/address' + dev: true + + /@hapi/bourne/1.3.2: + resolution: {integrity: sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==} + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/hoek/8.5.1: + resolution: {integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==} + deprecated: This version has been deprecated and is no longer supported or maintained + dev: true + + /@hapi/joi/15.1.1: + resolution: {integrity: sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==} + deprecated: Switch to 'npm install joi' + dependencies: + '@hapi/address': 2.1.4 + '@hapi/bourne': 1.3.2 + '@hapi/hoek': 8.5.1 + '@hapi/topo': 3.1.6 + dev: true + + /@hapi/topo/3.1.6: + resolution: {integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==} + deprecated: This version has been deprecated and is no longer supported or maintained + dependencies: + '@hapi/hoek': 8.5.1 + dev: true + + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console/26.6.2: + resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + jest-message-util: 26.6.2 + jest-util: 26.6.2 + slash: 3.0.0 + dev: true + + /@jest/core/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 26.6.2 + jest-config: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-runtime: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.5 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/core/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 26.6.2 + jest-config: 26.6.3_ts-node@9.1.1 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3_ts-node@9.1.1 + jest-runtime: 26.6.3_ts-node@9.1.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.5 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/environment/26.6.2: + resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + jest-mock: 26.6.2 + dev: true + + /@jest/expect-utils/28.1.1: + resolution: {integrity: sha512-n/ghlvdhCdMI/hTcnn4qV57kQuV9OTsZzH1TTCVARANKhl6hXJqLKUkwX69ftMGpsbpt96SsDD8n8LD2d9+FRw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + jest-get-type: 28.0.2 + dev: true + + /@jest/fake-timers/26.6.2: + resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@sinonjs/fake-timers': 6.0.1 + '@types/node': 18.0.3 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-util: 26.6.2 + dev: true + + /@jest/globals/26.6.2: + resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/types': 26.6.2 + expect: 26.6.2 + dev: true + + /@jest/reporters/26.6.2: + resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.4 + jest-haste-map: 26.6.2 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 7.1.2 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas/28.0.2: + resolution: {integrity: sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.23.5 + dev: true + + /@jest/source-map/26.6.2: + resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} + engines: {node: '>= 10.14.2'} + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.10 + source-map: 0.6.1 + dev: true + + /@jest/test-result/26.6.2: + resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/types': 26.6.2 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-runtime: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/test-sequencer/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3_ts-node@9.1.1 + jest-runtime: 26.6.3_ts-node@9.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /@jest/transform/26.6.2: + resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/core': 7.18.6 + '@jest/types': 26.6.2 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.8.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 26.6.2 + jest-regex-util: 26.0.0 + jest-util: 26.6.2 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types/26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.0.3 + '@types/yargs': 15.0.14 + chalk: 4.1.2 + dev: true + + /@jest/types/28.1.1: + resolution: {integrity: sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.0.2 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.0.3 + '@types/yargs': 17.0.10 + chalk: 4.1.2 + dev: true + + /@jimp/bmp/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + '@jimp/utils': 0.16.1 + bmp-js: 0.1.0 + + /@jimp/core/0.16.1: + resolution: {integrity: sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==} + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/utils': 0.16.1 + any-base: 1.1.0 + buffer: 5.7.1 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.1 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.4.2 + + /@jimp/custom/0.16.1: + resolution: {integrity: sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==} + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/core': 0.16.1 + + /@jimp/gif/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + '@jimp/utils': 0.16.1 + gifwrap: 0.9.4 + omggif: 1.0.10 + + /@jimp/jpeg/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + '@jimp/utils': 0.16.1 + jpeg-js: 0.4.2 + + /@jimp/plugin-resize/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + '@jimp/utils': 0.16.1 + + /@jimp/png/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + '@jimp/utils': 0.16.1 + pngjs: 3.4.0 + + /@jimp/tiff/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/custom': 0.16.1 + utif: 2.0.1 + + /@jimp/types/0.16.1_@jimp+custom@0.16.1: + resolution: {integrity: sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.18.6 + '@jimp/bmp': 0.16.1_@jimp+custom@0.16.1 + '@jimp/custom': 0.16.1 + '@jimp/gif': 0.16.1_@jimp+custom@0.16.1 + '@jimp/jpeg': 0.16.1_@jimp+custom@0.16.1 + '@jimp/png': 0.16.1_@jimp+custom@0.16.1 + '@jimp/tiff': 0.16.1_@jimp+custom@0.16.1 + timm: 1.7.1 + + /@jimp/utils/0.16.1: + resolution: {integrity: sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==} + dependencies: + '@babel/runtime': 7.18.6 + regenerator-runtime: 0.13.9 + + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.14 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.14 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.14: + resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jsdevtools/coverage-istanbul-loader/3.0.5: + resolution: {integrity: sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==} + dependencies: + convert-source-map: 1.8.0 + istanbul-lib-instrument: 4.0.3 + loader-utils: 2.0.2 + merge-source-map: 1.1.0 + schema-utils: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jsdevtools/ono/7.1.3: + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + dev: true + + /@mapbox/node-pre-gyp/1.0.9: + resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} + hasBin: true + dependencies: + detect-libc: 2.0.1 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.6.7 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.3.7 + tar: 6.1.11 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@mdx-js/mdx/1.6.22: + resolution: {integrity: sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==} + dependencies: + '@babel/core': 7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9 + '@mdx-js/util': 1.6.22 + babel-plugin-apply-mdx-type-prop: 1.6.22_@babel+core@7.12.9 + babel-plugin-extract-import-names: 1.6.22 + camelcase-css: 2.0.1 + detab: 2.0.4 + hast-util-raw: 6.0.1 + lodash.uniq: 4.5.0 + mdast-util-to-hast: 10.0.1 + remark-footnotes: 2.0.0 + remark-mdx: 1.6.22 + remark-parse: 8.0.3 + remark-squeeze-paragraphs: 4.0.0 + style-to-object: 0.3.0 + unified: 9.2.0 + unist-builder: 2.0.3 + unist-util-visit: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@mdx-js/react/1.6.22_react@17.0.2: + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + dependencies: + react: 17.0.2 + dev: true + + /@mdx-js/util/1.6.22: + resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} + dev: true + + /@mrmlnc/readdir-enhanced/2.2.1: + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} + dependencies: + call-me-maybe: 1.0.1 + glob-to-regexp: 0.3.0 + dev: true + + /@mui/base/5.0.0-alpha.85_nn45z5sr7igu7sfun6tiae5hx4: + resolution: {integrity: sha512-ONlQJOmQrxmR+pYF9AqH69FOG4ofwzVzNltwb2xKAQIW3VbsNZahcHIpzhFd70W6EIU+QHzB9TzamSM+Fg/U7w==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/is-prop-valid': 1.1.3 + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@popperjs/core': 2.11.5 + '@types/react': 17.0.47 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + + /@mui/base/5.0.0-alpha.88_nn45z5sr7igu7sfun6tiae5hx4: + resolution: {integrity: sha512-uL7ej2F/3GUnZewsDQSHUVHoSBT3AQcTIdfdy6QeCHy7X26mtbcIvTRcjl2PzbbNQplppavSTibPiQG/giJ+ng==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/is-prop-valid': 1.1.3 + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@popperjs/core': 2.11.5 + '@types/react': 17.0.47 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + + /@mui/icons-material/5.8.4_kvph6qsx6c7p7rhep4xods6o6m: + resolution: {integrity: sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@types/react': 17.0.47 + react: 17.0.2 + + /@mui/lab/5.0.0-alpha.86_d4ztt27k5xb5vqpt5ozi45o7wq: + resolution: {integrity: sha512-5dx9/vHldiE5KFu99YUtEGKyUgwTiq8wM+IhEnNKkU+YjEMULVYV+mgS9nvnf6laKtgqy2hOE4JivqRPIuOGdA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/base': 5.0.0-alpha.85_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + '@mui/x-date-pickers': 5.0.0-alpha.1_bhfhak5cyo5uev7evcyk4desuq + '@types/react': 17.0.47 + clsx: 1.2.1 + date-fns: 2.28.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + rifm: 0.12.1_react@17.0.2 + + /@mui/lab/5.0.0-alpha.86_scioorpqxgmyxwumjkw4frwxae: + resolution: {integrity: sha512-5dx9/vHldiE5KFu99YUtEGKyUgwTiq8wM+IhEnNKkU+YjEMULVYV+mgS9nvnf6laKtgqy2hOE4JivqRPIuOGdA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/base': 5.0.0-alpha.85_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + '@mui/x-date-pickers': 5.0.0-alpha.1_oop6dcki46d7lexi6nxggagcai + '@types/react': 17.0.47 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + rifm: 0.12.1_react@17.0.2 + dev: false + + /@mui/material/5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu: + resolution: {integrity: sha512-Oo62UhrgEi+BMLr3nUEASJgScE2/hhq14CbBUmrVV3GQlEGtqMZsy26Vb0AqEmphFeN3TXlsbM9aeW5yq8ZFlw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/base': 5.0.0-alpha.88_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + '@types/react-transition-group': 4.4.5 + clsx: 1.2.1 + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + + /@mui/material/5.8.7_nn45z5sr7igu7sfun6tiae5hx4: + resolution: {integrity: sha512-Oo62UhrgEi+BMLr3nUEASJgScE2/hhq14CbBUmrVV3GQlEGtqMZsy26Vb0AqEmphFeN3TXlsbM9aeW5yq8ZFlw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@mui/base': 5.0.0-alpha.88_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/system': 5.8.7_sudpmbbyhqtxq6t4xf6jlicdem + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + '@types/react-transition-group': 4.4.5 + clsx: 1.2.1 + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + + /@mui/private-theming/5.8.6_sudpmbbyhqtxq6t4xf6jlicdem: + resolution: {integrity: sha512-yHsJk1qU9r/q0DlnxGRJPHyM0Y/nUv8FTNgDTiI9I58GWuVuZqeTUr7JRvPh6ybeP/FLtW5eXEavRK9wxVk4uQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + prop-types: 15.8.1 + react: 17.0.2 + + /@mui/styled-engine/5.8.7_react@17.0.2: + resolution: {integrity: sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/cache': 11.9.3 + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + + /@mui/styled-engine/5.8.7_z5dax4wbbvawomfdisf4dzswiq: + resolution: {integrity: sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/cache': 11.9.3 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + + /@mui/styles/5.8.7_sudpmbbyhqtxq6t4xf6jlicdem: + resolution: {integrity: sha512-TMP3TL7P/9tJXOkthUHT9uuuBf4d0PzkrzHyU3q3qyoMBs0sMyoSsNOJAKkbG5DUCcSEGbmbarYItHH4Y/6vOg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 + react: ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/hash': 0.8.0 + '@mui/private-theming': 5.8.6_sudpmbbyhqtxq6t4xf6jlicdem + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + clsx: 1.2.1 + csstype: 3.1.0 + hoist-non-react-statics: 3.3.2 + jss: 10.9.0 + jss-plugin-camel-case: 10.9.0 + jss-plugin-default-unit: 10.9.0 + jss-plugin-global: 10.9.0 + jss-plugin-nested: 10.9.0 + jss-plugin-props-sort: 10.9.0 + jss-plugin-rule-value-function: 10.9.0 + jss-plugin-vendor-prefixer: 10.9.0 + prop-types: 15.8.1 + react: 17.0.2 + dev: false + + /@mui/system/5.8.7_a4sljt3p5xdicvpavskhm4wgcy: + resolution: {integrity: sha512-yFoFbfO42FWeSUDrFPixYjpqySQMqVMOSbSlAxiKnwFpvXGGn/bkfQTboCRNO31fvES29FJLQd4mwwMHd5mXng==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/private-theming': 5.8.6_sudpmbbyhqtxq6t4xf6jlicdem + '@mui/styled-engine': 5.8.7_z5dax4wbbvawomfdisf4dzswiq + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + clsx: 1.2.1 + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + + /@mui/system/5.8.7_sudpmbbyhqtxq6t4xf6jlicdem: + resolution: {integrity: sha512-yFoFbfO42FWeSUDrFPixYjpqySQMqVMOSbSlAxiKnwFpvXGGn/bkfQTboCRNO31fvES29FJLQd4mwwMHd5mXng==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@mui/private-theming': 5.8.6_sudpmbbyhqtxq6t4xf6jlicdem + '@mui/styled-engine': 5.8.7_react@17.0.2 + '@mui/types': 7.1.4_@types+react@17.0.47 + '@mui/utils': 5.8.6_react@17.0.2 + '@types/react': 17.0.47 + clsx: 1.2.1 + csstype: 3.1.0 + prop-types: 15.8.1 + react: 17.0.2 + + /@mui/types/7.1.4_@types+react@17.0.47: + resolution: {integrity: sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 17.0.47 + + /@mui/utils/5.8.6_react@17.0.2: + resolution: {integrity: sha512-QM2Sd1xZo2jOt2Vz5Rmro+pi2FLJyiv4+OjxkUwXR3oUM65KSMAMLl/KNYU55s3W3DLRFP5MVwE4FhAbHseHAg==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.18.6 + '@types/prop-types': 15.7.5 + '@types/react-is': 17.0.3 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 17.0.2 + + /@mui/x-data-grid/5.12.3_oop6dcki46d7lexi6nxggagcai: + resolution: {integrity: sha512-57A2MkRR/uUNC/dECFV0YDJvi1Q+gQgmgw1OHmZ1uSnKh29PcHpswkdapO0LueLpxAy8tfH+fTtnnPDmYgJeUg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.4.1 + '@mui/system': ^5.4.1 + react: ^17.0.2 || ^18.0.0 + react-dom: ^17.0.2 || ^18.0.0 + dependencies: + '@babel/runtime': 7.18.6 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + reselect: 4.1.6 + dev: false + + /@mui/x-date-pickers/5.0.0-alpha.1_bhfhak5cyo5uev7evcyk4desuq: + resolution: {integrity: sha512-dLPkRiIn2Gr0momblxiOnIwrxn4SijVix+8e08mwAGWhiWcmWep1O9XTRDpZsjB0kjHYCf+kZjlRX4dxnj2acg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.2.3 + '@mui/system': ^5.2.3 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.2 || ^18.0.0 + react-dom: ^17.0.2 || ^18.0.0 + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@date-io/dayjs': 2.14.0 + '@date-io/luxon': 2.14.0 + '@date-io/moment': 2.14.0 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + clsx: 1.2.1 + date-fns: 2.28.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + rifm: 0.12.1_react@17.0.2 + + /@mui/x-date-pickers/5.0.0-alpha.1_oop6dcki46d7lexi6nxggagcai: + resolution: {integrity: sha512-dLPkRiIn2Gr0momblxiOnIwrxn4SijVix+8e08mwAGWhiWcmWep1O9XTRDpZsjB0kjHYCf+kZjlRX4dxnj2acg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.2.3 + '@mui/system': ^5.2.3 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.2 || ^18.0.0 + react-dom: ^17.0.2 || ^18.0.0 + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@date-io/date-fns': 2.14.0 + '@date-io/dayjs': 2.14.0 + '@date-io/luxon': 2.14.0 + '@date-io/moment': 2.14.0 + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + rifm: 0.12.1_react@17.0.2 + dev: false + + /@mui/x-date-pickers/5.0.0-alpha.6_5ven2gtssvqbzui2gfo734hiwq: + resolution: {integrity: sha512-2JeagDwwa/V2XPj243cZg5ReZ2553OzukUAfbdxXwj9gGGLeXjBa95NP4kPOBOze4tJq1y/4aYt/aK50aZWElQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/material': ^5.4.1 + '@mui/system': ^5.4.1 + date-fns: ^2.25.0 + dayjs: ^1.10.7 + luxon: ^1.28.0 || ^2.0.0 + moment: ^2.29.1 + react: ^17.0.2 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@date-io/dayjs': 2.14.0 + '@date-io/luxon': 2.14.0 + '@date-io/moment': 2.14.0 + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@mui/material': 5.8.7_mzmbzck2qunrnxjb6zwxgpnkmu + '@mui/system': 5.8.7_a4sljt3p5xdicvpavskhm4wgcy + '@mui/utils': 5.8.6_react@17.0.2 + clsx: 1.2.1 + date-fns: 2.28.0 + prop-types: 15.8.1 + react: 17.0.2 + react-transition-group: 4.4.2_sfoxds7t5ydpegc3knd667wn6m + rifm: 0.12.1_react@17.0.2 + transitivePeerDependencies: + - react-dom + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/1.1.3: + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@npmcli/fs/1.1.1: + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.3.7 + dev: true + + /@npmcli/move-file/1.1.2: + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin/0.4.3_bgtvclpd6eugfrpbb2rkpbwxsi: + resolution: {integrity: sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==} + engines: {node: '>= 10.x'} + peerDependencies: + '@types/webpack': 4.x + react-refresh: '>=0.8.3 <0.10.0' + sockjs-client: ^1.4.0 + type-fest: ^0.13.1 + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + '@types/webpack': 4.41.32 + ansi-html: 0.0.7 + error-stack-parser: 2.1.4 + html-entities: 1.4.0 + native-url: 0.2.6 + react-refresh: 0.9.0 + schema-utils: 2.7.1 + source-map: 0.7.4 + webpack: 4.46.0 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin/0.4.3_t4ezke4netssl24gycl5qjajya: + resolution: {integrity: sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==} + engines: {node: '>= 10.x'} + peerDependencies: + '@types/webpack': 4.x + react-refresh: '>=0.8.3 <0.10.0' + sockjs-client: ^1.4.0 + type-fest: ^0.13.1 + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html: 0.0.7 + error-stack-parser: 2.1.4 + html-entities: 1.4.0 + native-url: 0.2.6 + react-refresh: 0.8.3 + schema-utils: 2.7.1 + source-map: 0.7.4 + webpack: 4.44.2 + webpack-dev-server: 3.11.1_webpack@4.44.2 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin/0.5.7_a3gyllrqvxpec3fpybsrposvju: + resolution: {integrity: sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <3.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.23.3 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.3.3 + loader-utils: 2.0.2 + react-refresh: 0.11.0 + schema-utils: 3.1.1 + source-map: 0.7.4 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /@popperjs/core/2.11.5: + resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} + + /@rollup/plugin-node-resolve/7.1.3_rollup@1.32.1: + resolution: {integrity: sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@1.32.1 + '@types/resolve': 0.0.8 + builtin-modules: 3.3.0 + is-module: 1.0.0 + resolve: 1.22.1 + rollup: 1.32.1 + dev: true + + /@rollup/plugin-replace/2.4.2_rollup@1.32.1: + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@1.32.1 + magic-string: 0.25.9 + rollup: 1.32.1 + dev: true + + /@rollup/pluginutils/3.1.0_rollup@1.32.1: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 1.32.1 + dev: true + + /@sinclair/typebox/0.23.5: + resolution: {integrity: sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==} + dev: true + + /@sindresorhus/is/4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sinonjs/commons/1.8.3: + resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers/6.0.1: + resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + dependencies: + '@sinonjs/commons': 1.8.3 + dev: true + + /@storybook/addon-actions/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + polished: 4.2.2 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-inspector: 5.1.1_react@17.0.2 + regenerator-runtime: 0.13.9 + telejson: 6.0.8 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + uuid-browser: 3.1.0 + dev: true + + /@storybook/addon-backgrounds/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + global: 4.4.0 + memoizerific: 1.11.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/addon-controls/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/node-logger': 6.5.9 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-controls/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/node-logger': 6.5.9 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-controls/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/node-logger': 6.5.9 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-docs/6.5.9_bhx7f7jsq63mixbhnqhkmszprm: + resolution: {integrity: sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==} + peerDependencies: + '@storybook/mdx2-csf': ^0.0.3 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@storybook/mdx2-csf': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@jest/transform': 26.6.2 + '@mdx-js/react': 1.6.22_react@17.0.2 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/postinstall': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/source-loader': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@babel/core' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-docs/6.5.9_gyculp34arbmrwdtzjzr2kt3xq: + resolution: {integrity: sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==} + peerDependencies: + '@storybook/mdx2-csf': ^0.0.3 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@storybook/mdx2-csf': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@jest/transform': 26.6.2 + '@mdx-js/react': 1.6.22_react@17.0.2 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/postinstall': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/source-loader': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@babel/core' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-docs/6.5.9_o7dzebd74uljnceeqkxt3bdnci: + resolution: {integrity: sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==} + peerDependencies: + '@storybook/mdx2-csf': ^0.0.3 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@storybook/mdx2-csf': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@jest/transform': 26.6.2 + '@mdx-js/react': 1.6.22_react@17.0.2 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/postinstall': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/source-loader': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + remark-external-links: 8.0.0 + remark-slug: 6.1.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + transitivePeerDependencies: + - '@babel/core' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-essentials/6.5.9_bhx7f7jsq63mixbhnqhkmszprm: + resolution: {integrity: sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==} + peerDependencies: + '@babel/core': ^7.9.6 + '@storybook/angular': '*' + '@storybook/builder-manager4': '*' + '@storybook/builder-manager5': '*' + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/html': '*' + '@storybook/vue': '*' + '@storybook/vue3': '*' + '@storybook/web-components': '*' + lit: '*' + lit-html: '*' + react: '*' + react-dom: '*' + svelte: '*' + sveltedoc-parser: '*' + vue: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/builder-manager4': + optional: true + '@storybook/builder-manager5': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/html': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true + react: + optional: true + react-dom: + optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-backgrounds': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-controls': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/addon-docs': 6.5.9_bhx7f7jsq63mixbhnqhkmszprm + '@storybook/addon-measure': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-outline': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-toolbars': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-viewport': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/node-logger': 6.5.9 + core-js: 3.23.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-essentials/6.5.9_gyculp34arbmrwdtzjzr2kt3xq: + resolution: {integrity: sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==} + peerDependencies: + '@babel/core': ^7.9.6 + '@storybook/angular': '*' + '@storybook/builder-manager4': '*' + '@storybook/builder-manager5': '*' + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/html': '*' + '@storybook/vue': '*' + '@storybook/vue3': '*' + '@storybook/web-components': '*' + lit: '*' + lit-html: '*' + react: '*' + react-dom: '*' + svelte: '*' + sveltedoc-parser: '*' + vue: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/builder-manager4': + optional: true + '@storybook/builder-manager5': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/html': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true + react: + optional: true + react-dom: + optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-backgrounds': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-controls': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/addon-docs': 6.5.9_gyculp34arbmrwdtzjzr2kt3xq + '@storybook/addon-measure': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-outline': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-toolbars': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-viewport': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/node-logger': 6.5.9 + core-js: 3.23.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-essentials/6.5.9_o7dzebd74uljnceeqkxt3bdnci: + resolution: {integrity: sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==} + peerDependencies: + '@babel/core': ^7.9.6 + '@storybook/angular': '*' + '@storybook/builder-manager4': '*' + '@storybook/builder-manager5': '*' + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/html': '*' + '@storybook/vue': '*' + '@storybook/vue3': '*' + '@storybook/web-components': '*' + lit: '*' + lit-html: '*' + react: '*' + react-dom: '*' + svelte: '*' + sveltedoc-parser: '*' + vue: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/angular': + optional: true + '@storybook/builder-manager4': + optional: true + '@storybook/builder-manager5': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/html': + optional: true + '@storybook/vue': + optional: true + '@storybook/vue3': + optional: true + '@storybook/web-components': + optional: true + lit: + optional: true + lit-html: + optional: true + react: + optional: true + react-dom: + optional: true + svelte: + optional: true + sveltedoc-parser: + optional: true + vue: + optional: true + webpack: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addon-actions': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-backgrounds': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-controls': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/addon-docs': 6.5.9_o7dzebd74uljnceeqkxt3bdnci + '@storybook/addon-measure': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-outline': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-toolbars': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-viewport': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/node-logger': 6.5.9 + core-js: 3.23.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + webpack: 4.46.0_webpack-cli@4.10.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/addon-links/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/qs': 6.9.7 + core-js: 3.23.3 + global: 4.4.0 + prop-types: 15.8.1 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-measure/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + core-js: 3.23.3 + global: 4.4.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: true + + /@storybook/addon-outline/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + core-js: 3.23.3 + global: 4.4.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + dev: true + + /@storybook/addon-toolbars/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/addon-viewport/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + global: 4.4.0 + memoizerific: 1.11.3 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/addons/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/webpack-env': 1.17.0 + core-js: 3.23.3 + global: 4.4.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/api/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + store2: 2.13.2 + telejson: 6.0.8 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/builder-webpack4/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/channels': 6.5.9 + '@storybook/client-api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/core-events': 6.5.9 + '@storybook/node-logger': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.8 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6_bbqhrndznz6a4k7d23h2kkrexi + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe + raw-loader: 4.0.2_webpack@4.46.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack4/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/channels': 6.5.9 + '@storybook/client-api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/core-events': 6.5.9 + '@storybook/node-logger': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.8 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6_bbqhrndznz6a4k7d23h2kkrexi + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe + raw-loader: 4.0.2_webpack@4.46.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/builder-webpack4/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/channels': 6.5.9 + '@storybook/client-api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/core-events': 6.5.9 + '@storybook/node-logger': 6.5.9 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + autoprefixer: 9.8.8 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 4.1.6_bubf4veva5nnocx7gaznjuarcu + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 + global: 4.4.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + postcss: 7.0.39 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe + raw-loader: 4.0.2_webpack@4.46.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + stable: 0.1.8 + style-loader: 1.3.0_webpack@4.46.0 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-filter-warnings-plugin: 1.2.1_webpack@4.46.0 + webpack-hot-middleware: 2.25.1 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/channel-postmessage/6.5.9: + resolution: {integrity: sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==} + dependencies: + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + core-js: 3.23.3 + global: 4.4.0 + qs: 6.11.0 + telejson: 6.0.8 + dev: true + + /@storybook/channel-websocket/6.5.9: + resolution: {integrity: sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==} + dependencies: + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + core-js: 3.23.3 + global: 4.4.0 + telejson: 6.0.8 + dev: true + + /@storybook/channels/6.5.9: + resolution: {integrity: sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==} + dependencies: + core-js: 3.23.3 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/client-api/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/qs': 6.9.7 + '@types/webpack-env': 1.17.0 + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + store2: 2.13.2 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/client-logger/6.5.9: + resolution: {integrity: sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==} + dependencies: + core-js: 3.23.3 + global: 4.4.0 + dev: true + + /@storybook/components/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/client-logger': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/react-syntax-highlighter': 11.0.5 + core-js: 3.23.3 + memoizerific: 1.11.3 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-syntax-highlighter: 15.5.0_react@17.0.2 + regenerator-runtime: 0.13.9 + util-deprecate: 1.0.2 + dev: true + + /@storybook/core-client/6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u: + resolution: {integrity: sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/channel-websocket': 6.5.9 + '@storybook/client-api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/preview-web': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + airbnb-js-shims: 2.2.1 + ansi-to-html: 0.6.15 + core-js: 3.23.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + typescript: 4.4.4 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /@storybook/core-common/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-decorators': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-export-default-from': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-for-of': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/register': 7.18.6_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@types/node': 16.11.43 + '@types/pretty-hrtime': 1.0.1 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.18.6 + chalk: 4.1.2 + core-js: 3.23.3 + express: 4.18.1 + file-system-cache: 1.1.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_bbqhrndznz6a4k7d23h2kkrexi + fs-extra: 9.1.0 + glob: 7.2.3 + handlebars: 4.7.7 + interpret: 2.2.0 + json5: 2.2.1 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-common/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-decorators': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-export-default-from': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-for-of': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/register': 7.18.6_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@types/node': 16.11.43 + '@types/pretty-hrtime': 1.0.1 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.18.6 + chalk: 4.1.2 + core-js: 3.23.3 + express: 4.18.1 + file-system-cache: 1.1.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_bbqhrndznz6a4k7d23h2kkrexi + fs-extra: 9.1.0 + glob: 7.2.3 + handlebars: 4.7.7 + interpret: 2.2.0 + json5: 2.2.1 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@4.10.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-common/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-decorators': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-export-default-from': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-object-rest-spread': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-block-scoping': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-classes': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-destructuring': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-for-of': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-parameters': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-spread': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/register': 7.18.6_@babel+core@7.18.6 + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@types/node': 16.11.43 + '@types/pretty-hrtime': 1.0.1 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + babel-plugin-macros: 3.1.0 + babel-plugin-polyfill-corejs3: 0.1.7_@babel+core@7.18.6 + chalk: 4.1.2 + core-js: 3.23.3 + express: 4.18.1 + file-system-cache: 1.1.0 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_bubf4veva5nnocx7gaznjuarcu + fs-extra: 9.1.0 + glob: 7.2.3 + handlebars: 4.7.7 + interpret: 2.2.0 + json5: 2.2.1 + lazy-universal-dotenv: 3.0.1 + picomatch: 2.3.1 + pkg-dir: 5.0.0 + pretty-hrtime: 1.0.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + resolve-from: 5.0.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-events/6.5.9: + resolution: {integrity: sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==} + dependencies: + core-js: 3.23.3 + dev: true + + /@storybook/core-server/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/csf-tools': 6.5.9 + '@storybook/manager-webpack4': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/telemetry': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@types/node': 16.11.43 + '@types/node-fetch': 2.6.2 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.2 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.23.3 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.18.1 + fs-extra: 9.1.0 + global: 4.4.0 + globby: 11.1.0 + ip: 2.0.0 + lodash: 4.17.21 + node-fetch: 2.6.7 + open: 8.4.0 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + watchpack: 2.4.0 + webpack: 4.46.0 + ws: 8.8.0 + x-default-browser: 0.4.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/csf-tools': 6.5.9 + '@storybook/manager-webpack4': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/telemetry': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@types/node': 16.11.43 + '@types/node-fetch': 2.6.2 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.2 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.23.3 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.18.1 + fs-extra: 9.1.0 + global: 4.4.0 + globby: 11.1.0 + ip: 2.0.0 + lodash: 4.17.21 + node-fetch: 2.6.7 + open: 8.4.0 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + watchpack: 2.4.0 + webpack: 4.46.0_webpack-cli@4.10.0 + ws: 8.8.0 + x-default-browser: 0.4.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core-server/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@storybook/builder-webpack4': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/csf-tools': 6.5.9 + '@storybook/manager-webpack4': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/node-logger': 6.5.9 + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/telemetry': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@types/node': 16.11.43 + '@types/node-fetch': 2.6.2 + '@types/pretty-hrtime': 1.0.1 + '@types/webpack': 4.41.32 + better-opn: 2.1.1 + boxen: 5.1.2 + chalk: 4.1.2 + cli-table3: 0.6.2 + commander: 6.2.1 + compression: 1.7.4 + core-js: 3.23.3 + cpy: 8.1.2 + detect-port: 1.3.0 + express: 4.18.1 + fs-extra: 9.1.0 + global: 4.4.0 + globby: 11.1.0 + ip: 2.0.0 + lodash: 4.17.21 + node-fetch: 2.6.7 + open: 8.4.0 + pretty-hrtime: 1.0.3 + prompts: 2.4.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + serve-favicon: 2.5.0 + slash: 3.0.0 + telejson: 6.0.8 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + watchpack: 2.4.0 + webpack: 4.46.0 + ws: 8.8.0 + x-default-browser: 0.4.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.5.9_3ggscw4f627v5jhywkfgtb5u3q: + resolution: {integrity: sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-server': 6.5.9_6mk4fwenfamrdmp5qntahco6au + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + typescript: 4.4.4 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.5.9_dxrwd6gdhxugcjbq32oyhgfltu: + resolution: {integrity: sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-server': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/core/6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u: + resolution: {integrity: sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==} + peerDependencies: + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + webpack: '*' + peerDependenciesMeta: + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-server': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + typescript: 4.4.4 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - bluebird + - bufferutil + - encoding + - eslint + - supports-color + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/csf-tools/6.5.9: + resolution: {integrity: sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==} + peerDependencies: + '@storybook/mdx2-csf': ^0.0.3 + peerDependenciesMeta: + '@storybook/mdx2-csf': + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/parser': 7.18.6 + '@babel/plugin-transform-react-jsx': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/mdx1-csf': 0.0.1_@babel+core@7.18.6 + core-js: 3.23.3 + fs-extra: 9.1.0 + global: 4.4.0 + regenerator-runtime: 0.13.9 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@storybook/csf/0.0.2--canary.4566f4d.1: + resolution: {integrity: sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==} + dependencies: + lodash: 4.17.21 + dev: true + + /@storybook/docs-tools/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==} + dependencies: + '@babel/core': 7.18.6 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + doctrine: 3.0.0 + lodash: 4.17.21 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - react + - react-dom + - supports-color + dev: true + + /@storybook/manager-webpack4/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/node-logger': 6.5.9 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.18.1 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.7 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 6.0.8 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - encoding + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/manager-webpack4/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/node-logger': 6.5.9 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.18.1 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.7 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 6.0.8 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - encoding + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/manager-webpack4/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-transform-template-literals': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-client': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/node-logger': 6.5.9 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/ui': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/node': 16.11.43 + '@types/webpack': 4.41.32 + babel-loader: 8.2.5_xcbjw3zjektbxpb7yraegegdpi + case-sensitive-paths-webpack-plugin: 2.4.0 + chalk: 4.1.2 + core-js: 3.23.3 + css-loader: 3.6.0_webpack@4.46.0 + express: 4.18.1 + file-loader: 6.2.0_webpack@4.46.0 + find-up: 5.0.0 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.2_webpack@4.46.0 + node-fetch: 2.6.7 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + style-loader: 1.3.0_webpack@4.46.0 + telejson: 6.0.8 + terser-webpack-plugin: 4.2.3_webpack@4.46.0 + ts-dedent: 2.2.0 + typescript: 4.4.4 + url-loader: 4.1.1_lit45vopotvaqup7lrvlnvtxwy + util-deprecate: 1.0.2 + webpack: 4.46.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + webpack-virtual-modules: 0.2.2 + transitivePeerDependencies: + - bluebird + - encoding + - eslint + - supports-color + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/mdx1-csf/0.0.1_@babel+core@7.18.6: + resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} + dependencies: + '@babel/generator': 7.18.7 + '@babel/parser': 7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/types': 7.18.7 + '@mdx-js/mdx': 1.6.22 + '@types/lodash': 4.14.182 + js-string-escape: 1.0.1 + loader-utils: 2.0.2 + lodash: 4.17.21 + prettier: 2.3.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@storybook/node-logger/6.5.9: + resolution: {integrity: sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==} + dependencies: + '@types/npmlog': 4.1.4 + chalk: 4.1.2 + core-js: 3.23.3 + npmlog: 5.0.1 + pretty-hrtime: 1.0.3 + dev: true + + /@storybook/postinstall/6.5.9: + resolution: {integrity: sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ==} + dependencies: + core-js: 3.23.3 + dev: true + + /@storybook/preset-create-react-app/3.2.0_vpyolfussykyviive6fphdj6k4: + resolution: {integrity: sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q==} + peerDependencies: + '@babel/core': '*' + '@storybook/node-logger': '*' + '@storybook/react': '>=5.2' + react-scripts: '>=3.0.0' + dependencies: + '@babel/core': 7.18.6 + '@pmmmwh/react-refresh-webpack-plugin': 0.4.3_bgtvclpd6eugfrpbb2rkpbwxsi + '@storybook/node-logger': 6.5.9 + '@storybook/react': 6.5.9_j6ng7opxplwphfhsdrw2xlskou + '@types/babel__core': 7.1.19 + '@types/webpack': 4.41.32 + babel-plugin-react-docgen: 4.2.1 + pnp-webpack-plugin: 1.7.0_typescript@4.4.4 + react-docgen-typescript-plugin: 1.0.1_bubf4veva5nnocx7gaznjuarcu + react-scripts: 4.0.3_uiqijp4xikdbdjkhli4gylh7zu + semver: 7.3.7 + transitivePeerDependencies: + - react-refresh + - sockjs-client + - supports-color + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@storybook/preview-web/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channel-postmessage': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + ansi-to-html: 0.6.15 + core-js: 3.23.3 + global: 4.4.0 + lodash: 4.17.21 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + unfetch: 4.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_bubf4veva5nnocx7gaznjuarcu: + resolution: {integrity: sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==} + peerDependencies: + typescript: '>= 3.x' + webpack: '>= 4' + dependencies: + debug: 4.3.4 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.0.4 + micromatch: 4.0.5 + react-docgen-typescript: 2.2.2_typescript@4.4.4 + tslib: 2.4.0 + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@storybook/react/6.5.9_j6ng7opxplwphfhsdrw2xlskou: + resolution: {integrity: sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.11.5 + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack4': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + require-from-string: ^2.0.2 + typescript: '*' + peerDependenciesMeta: + '@babel/core': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack4': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/preset-flow': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_a3gyllrqvxpec3fpybsrposvju + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core': 6.5.9_jzki3n6zdsbv3y6vcmbgybqf2u + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/node-logger': 6.5.9 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_bubf4veva5nnocx7gaznjuarcu + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/estree': 0.0.51 + '@types/node': 16.11.43 + '@types/webpack-env': 1.17.0 + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 + babel-plugin-add-react-displayname: 0.0.5 + babel-plugin-react-docgen: 4.2.1 + core-js: 3.23.3 + escodegen: 2.0.0 + fs-extra: 9.1.0 + global: 4.4.0 + html-tags: 3.2.0 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m + react-refresh: 0.11.0 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + require-from-string: 2.0.2 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@types/webpack' + - bluebird + - bufferutil + - encoding + - eslint + - sockjs-client + - supports-color + - type-fest + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@storybook/react/6.5.9_nrzqso4m4rnoflfjhxnx5fkfj4: + resolution: {integrity: sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.11.5 + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack4': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + require-from-string: ^2.0.2 + typescript: '*' + peerDependenciesMeta: + '@babel/core': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack4': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/preset-flow': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_a3gyllrqvxpec3fpybsrposvju + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core': 6.5.9_dxrwd6gdhxugcjbq32oyhgfltu + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/node-logger': 6.5.9 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_bubf4veva5nnocx7gaznjuarcu + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/estree': 0.0.51 + '@types/node': 16.11.43 + '@types/webpack-env': 1.17.0 + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 + babel-plugin-add-react-displayname: 0.0.5 + babel-plugin-react-docgen: 4.2.1 + core-js: 3.23.3 + escodegen: 2.0.0 + fs-extra: 9.1.0 + global: 4.4.0 + html-tags: 3.2.0 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m + react-refresh: 0.11.0 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + require-from-string: 2.0.2 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0_webpack-cli@4.10.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@types/webpack' + - bluebird + - bufferutil + - encoding + - eslint + - sockjs-client + - supports-color + - type-fest + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@storybook/react/6.5.9_xnzdybpwipo7vnae3bcyo56wxa: + resolution: {integrity: sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.11.5 + '@storybook/builder-webpack4': '*' + '@storybook/builder-webpack5': '*' + '@storybook/manager-webpack4': '*' + '@storybook/manager-webpack5': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + require-from-string: ^2.0.2 + typescript: '*' + peerDependenciesMeta: + '@babel/core': + optional: true + '@storybook/builder-webpack4': + optional: true + '@storybook/builder-webpack5': + optional: true + '@storybook/manager-webpack4': + optional: true + '@storybook/manager-webpack5': + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/preset-flow': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_a3gyllrqvxpec3fpybsrposvju + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core': 6.5.9_3ggscw4f627v5jhywkfgtb5u3q + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + '@storybook/csf': 0.0.2--canary.4566f4d.1 + '@storybook/docs-tools': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/node-logger': 6.5.9 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_bubf4veva5nnocx7gaznjuarcu + '@storybook/semver': 7.3.2 + '@storybook/store': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@types/estree': 0.0.51 + '@types/node': 16.11.43 + '@types/webpack-env': 1.17.0 + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + acorn-walk: 7.2.0 + babel-plugin-add-react-displayname: 0.0.5 + babel-plugin-react-docgen: 4.2.1 + core-js: 3.23.3 + escodegen: 2.0.0 + fs-extra: 9.1.0 + global: 4.4.0 + html-tags: 3.2.0 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m + react-refresh: 0.11.0 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + require-from-string: 2.0.2 + ts-dedent: 2.2.0 + typescript: 4.4.4 + util-deprecate: 1.0.2 + webpack: 4.46.0 + transitivePeerDependencies: + - '@storybook/mdx2-csf' + - '@types/webpack' + - bluebird + - bufferutil + - encoding + - eslint + - sockjs-client + - supports-color + - type-fest + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@storybook/router/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/client-logger': 6.5.9 + core-js: 3.23.3 + memoizerific: 1.11.3 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/semver/7.3.2: + resolution: {integrity: sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + core-js: 3.23.3 + find-up: 4.1.0 + dev: true + + /@storybook/source-loader/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + core-js: 3.23.3 + estraverse: 5.3.0 + global: 4.4.0 + loader-utils: 2.0.2 + lodash: 4.17.21 + prettier: 2.3.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/store/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-logger': 6.5.9 + '@storybook/core-events': 6.5.9 + '@storybook/csf': 0.0.2--canary.4566f4d.1 + core-js: 3.23.3 + fast-deep-equal: 3.1.3 + global: 4.4.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + slash: 3.0.0 + stable: 0.1.8 + synchronous-promise: 2.0.15 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + dev: true + + /@storybook/telemetry/6.5.9_6mk4fwenfamrdmp5qntahco6au: + resolution: {integrity: sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==} + dependencies: + '@storybook/client-logger': 6.5.9 + '@storybook/core-common': 6.5.9_6mk4fwenfamrdmp5qntahco6au + chalk: 4.1.2 + core-js: 3.23.3 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.3 + fs-extra: 9.1.0 + global: 4.4.0 + isomorphic-unfetch: 3.1.0 + nanoid: 3.3.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - encoding + - eslint + - react + - react-dom + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/telemetry/6.5.9_nyh47jx66fkq5merhfibk7s2m4: + resolution: {integrity: sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==} + dependencies: + '@storybook/client-logger': 6.5.9 + '@storybook/core-common': 6.5.9_nyh47jx66fkq5merhfibk7s2m4 + chalk: 4.1.2 + core-js: 3.23.3 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.3 + fs-extra: 9.1.0 + global: 4.4.0 + isomorphic-unfetch: 3.1.0 + nanoid: 3.3.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - encoding + - eslint + - react + - react-dom + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/telemetry/6.5.9_ry2seeu66kawwpdtp4l25sz2tu: + resolution: {integrity: sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==} + dependencies: + '@storybook/client-logger': 6.5.9 + '@storybook/core-common': 6.5.9_ry2seeu66kawwpdtp4l25sz2tu + chalk: 4.1.2 + core-js: 3.23.3 + detect-package-manager: 2.0.1 + fetch-retry: 5.0.3 + fs-extra: 9.1.0 + global: 4.4.0 + isomorphic-unfetch: 3.1.0 + nanoid: 3.3.4 + read-pkg-up: 7.0.1 + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - encoding + - eslint + - react + - react-dom + - supports-color + - typescript + - vue-template-compiler + - webpack-cli + - webpack-command + dev: true + + /@storybook/theming/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/client-logger': 6.5.9 + core-js: 3.23.3 + memoizerific: 1.11.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + dev: true + + /@storybook/ui/6.5.9_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@storybook/addons': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/channels': 6.5.9 + '@storybook/client-logger': 6.5.9 + '@storybook/components': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/core-events': 6.5.9 + '@storybook/router': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + '@storybook/semver': 7.3.2 + '@storybook/theming': 6.5.9_sfoxds7t5ydpegc3knd667wn6m + core-js: 3.23.3 + memoizerific: 1.11.3 + qs: 6.11.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + regenerator-runtime: 0.13.9 + resolve-from: 5.0.0 + dev: true + + /@surma/rollup-plugin-off-main-thread/1.4.2: + resolution: {integrity: sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==} + dependencies: + ejs: 2.7.4 + magic-string: 0.25.9 + dev: true + + /@svgr/babel-plugin-add-jsx-attribute/5.4.0: + resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute/5.4.0: + resolution: {integrity: sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression/5.0.1: + resolution: {integrity: sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value/5.0.1: + resolution: {integrity: sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-svg-dynamic-title/5.4.0: + resolution: {integrity: sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-svg-em-dimensions/5.4.0: + resolution: {integrity: sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-transform-react-native-svg/5.4.0: + resolution: {integrity: sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-plugin-transform-svg-component/5.5.0: + resolution: {integrity: sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==} + engines: {node: '>=10'} + dev: true + + /@svgr/babel-preset/5.5.0: + resolution: {integrity: sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==} + engines: {node: '>=10'} + dependencies: + '@svgr/babel-plugin-add-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-attribute': 5.4.0 + '@svgr/babel-plugin-remove-jsx-empty-expression': 5.0.1 + '@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1 + '@svgr/babel-plugin-svg-dynamic-title': 5.4.0 + '@svgr/babel-plugin-svg-em-dimensions': 5.4.0 + '@svgr/babel-plugin-transform-react-native-svg': 5.4.0 + '@svgr/babel-plugin-transform-svg-component': 5.5.0 + dev: true + + /@svgr/core/5.5.0: + resolution: {integrity: sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==} + engines: {node: '>=10'} + dependencies: + '@svgr/plugin-jsx': 5.5.0 + camelcase: 6.3.0 + cosmiconfig: 7.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/hast-util-to-babel-ast/5.5.0: + resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@svgr/plugin-jsx/5.5.0: + resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.18.6 + '@svgr/babel-preset': 5.5.0 + '@svgr/hast-util-to-babel-ast': 5.5.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/plugin-svgo/5.5.0: + resolution: {integrity: sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==} + engines: {node: '>=10'} + dependencies: + cosmiconfig: 7.0.1 + deepmerge: 4.2.2 + svgo: 1.3.2 + dev: true + + /@svgr/webpack/5.5.0: + resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-transform-react-constant-elements': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@svgr/core': 5.5.0 + '@svgr/plugin-jsx': 5.5.0 + '@svgr/plugin-svgo': 5.5.0 + loader-utils: 2.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@szmarczak/http-timer/4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@testing-library/dom/7.31.2: + resolution: {integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==} + engines: {node: '>=10'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.18.6 + '@types/aria-query': 4.2.2 + aria-query: 4.2.2 + chalk: 4.1.2 + dom-accessibility-api: 0.5.14 + lz-string: 1.4.4 + pretty-format: 26.6.2 + dev: true + + /@testing-library/dom/8.14.0: + resolution: {integrity: sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.18.6 + '@types/aria-query': 4.2.2 + aria-query: 5.0.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.14 + lz-string: 1.4.4 + pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom/5.16.4: + resolution: {integrity: sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + dependencies: + '@babel/runtime': 7.18.6 + '@types/testing-library__jest-dom': 5.14.5 + aria-query: 5.0.0 + chalk: 3.0.0 + css: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.14 + lodash: 4.17.21 + redent: 3.0.0 + dev: true + + /@testing-library/react-hooks/5.1.3_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-UdEUtlQapQ579NEcXDAUE275u+KUsPtxW7NmFrNt0bE6lW8lqNCyxDK0RSuECmNZ/S0/fgP00W9RWRhVKO/hRg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + react-test-renderer: '>=16.9.0' + peerDependenciesMeta: + react-dom: + optional: true + react-test-renderer: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@types/react': 17.0.47 + '@types/react-dom': 17.0.17 + '@types/react-test-renderer': 18.0.0 + filter-console: 0.1.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-error-boundary: 3.1.4_react@17.0.2 + dev: true + + /@testing-library/react/11.2.7_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==} + engines: {node: '>=10'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.18.6 + '@testing-library/dom': 7.31.2 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: true + + /@testing-library/user-event/12.8.3_ihvo3xlg2d6kwqju3os3zitn3y: + resolution: {integrity: sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + dependencies: + '@babel/runtime': 7.18.6 + '@testing-library/dom': 8.14.0 + dev: true + + /@tootallnate/once/1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + dev: true + + /@types/aria-query/4.2.2: + resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + dev: true + + /@types/babel__core/7.1.19: + resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} + dependencies: + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.17.1 + dev: true + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.18.6 + '@babel/types': 7.18.7 + dev: true + + /@types/babel__traverse/7.17.1: + resolution: {integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==} + dependencies: + '@babel/types': 7.18.7 + dev: true + + /@types/cacheable-request/6.0.2: + resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} + dependencies: + '@types/http-cache-semantics': 4.0.1 + '@types/keyv': 3.1.4 + '@types/node': 15.14.9 + '@types/responselike': 1.0.0 + dev: true + + /@types/component-emitter/1.2.11: + resolution: {integrity: sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==} + + /@types/cookie/0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: true + + /@types/cors/2.8.12: + resolution: {integrity: sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==} + dev: true + + /@types/crc/3.8.0: + resolution: {integrity: sha512-m7woGxgPGlPSJ/4ae/7xf95QW4pDpEiaxlQgGyt+6JInQeKyEdZJybfjZueA84X9Lk8vckPyUnXdvU0nVs4r9w==} + dependencies: + '@types/node': 18.0.3 + dev: false + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + + /@types/diff/5.0.2: + resolution: {integrity: sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==} + dev: true + + /@types/easy-table/0.0.33: + resolution: {integrity: sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==} + dev: true + + /@types/ejs/3.1.1: + resolution: {integrity: sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==} + dev: true + + /@types/eslint/7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 0.0.52 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree/0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + dev: true + + /@types/estree/0.0.52: + resolution: {integrity: sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ==} + dev: true + + /@types/fs-extra/9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + dependencies: + '@types/node': 15.14.9 + dev: true + + /@types/geojson/7946.0.8: + resolution: {integrity: sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==} + + /@types/glob/7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 3.0.5 + '@types/node': 18.0.3 + dev: true + + /@types/graceful-fs/4.1.5: + resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + dependencies: + '@types/node': 18.0.3 + dev: true + + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/history/4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + /@types/html-minifier-terser/5.1.2: + resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==} + dev: true + + /@types/http-cache-semantics/4.0.1: + resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: true + + /@types/inquirer/7.3.3: + resolution: {integrity: sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==} + dependencies: + '@types/through': 0.0.30 + rxjs: 6.6.7 + dev: true + + /@types/is-function/1.0.1: + resolution: {integrity: sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==} + dev: true + + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jasmine/3.10.6: + resolution: {integrity: sha512-twY9adK/vz72oWxCWxzXaxoDtF9TpfEEsxvbc1ibjF3gMD/RThSuSud/GKUTR3aJnfbivAbC/vLqhY+gdWCHfA==} + dev: true + + /@types/jest/26.0.24: + resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} + dependencies: + jest-diff: 26.6.2 + pretty-format: 26.6.2 + dev: true + + /@types/json-buffer/3.0.0: + resolution: {integrity: sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/keyv/3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 15.14.9 + dev: true + + /@types/leaflet/1.7.11: + resolution: {integrity: sha512-VwAYom2pfIAf/pLj1VR5aLltd4tOtHyvfaJlNYCoejzP2nu52PrMi1ehsLRMUS+bgafmIIKBV1cMfKeS+uJ0Vg==} + dependencies: + '@types/geojson': 7946.0.8 + + /@types/lodash.flattendeep/4.4.7: + resolution: {integrity: sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==} + dependencies: + '@types/lodash': 4.14.182 + dev: true + + /@types/lodash.pickby/4.6.7: + resolution: {integrity: sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==} + dependencies: + '@types/lodash': 4.14.182 + dev: true + + /@types/lodash.union/4.6.7: + resolution: {integrity: sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==} + dependencies: + '@types/lodash': 4.14.182 + dev: true + + /@types/lodash/4.14.182: + resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/mocha/9.1.1: + resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + dev: true + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + /@types/node-fetch/2.6.2: + resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} + dependencies: + '@types/node': 18.0.3 + form-data: 3.0.1 + dev: true + + /@types/node/10.17.60: + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + + /@types/node/14.18.21: + resolution: {integrity: sha512-x5W9s+8P4XteaxT/jKF0PSb7XEvo5VmqEWgsMlyeY4ZlLK8I6aH6g5TPPyDlLAep+GYf4kefb7HFyc7PAO3m+Q==} + dev: true + + /@types/node/15.14.9: + resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + dev: true + + /@types/node/16.11.43: + resolution: {integrity: sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ==} + dev: true + + /@types/node/16.9.1: + resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} + + /@types/node/18.0.3: + resolution: {integrity: sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==} + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/npmlog/4.1.4: + resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==} + dev: true + + /@types/object-inspect/1.8.1: + resolution: {integrity: sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + /@types/parse5/5.0.3: + resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==} + dev: true + + /@types/prettier/2.6.3: + resolution: {integrity: sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==} + dev: true + + /@types/pretty-hrtime/1.0.1: + resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} + dev: true + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + /@types/q/1.5.5: + resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} + dev: true + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: true + + /@types/rbush/3.0.0: + resolution: {integrity: sha512-W3ue/GYWXBOpkRm0VSoifrP3HV0Ni47aVJWvXyWMcbtpBy/l/K/smBRiJ+fI8f7shXRjZBiux+iJzYbh7VmcZg==} + dev: false + + /@types/react-dom/17.0.17: + resolution: {integrity: sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==} + dependencies: + '@types/react': 17.0.47 + + /@types/react-grid-layout/1.3.2: + resolution: {integrity: sha512-ZzpBEOC1JTQ7MGe1h1cPKSLP4jSWuxc+yvT4TsAlEW9+EFPzAf8nxQfFd7ea9gL17Em7PbwJZAsiwfQQBUklZQ==} + dependencies: + '@types/react': 17.0.47 + + /@types/react-is/17.0.3: + resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} + dependencies: + '@types/react': 17.0.47 + + /@types/react-leaflet/2.8.2: + resolution: {integrity: sha512-Iel8Vd1bSCD38Yhiqcmm/+9hjPEdd39LFE3tBMbOytq3QAQsC3LDrbo6ifoh8JbpqPbCsQPo9Wx5OELHixEShg==} + dependencies: + '@types/leaflet': 1.7.11 + '@types/react': 17.0.47 + + /@types/react-router-dom/5.3.3: + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.47 + '@types/react-router': 5.1.18 + + /@types/react-router/5.1.18: + resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 17.0.47 + + /@types/react-syntax-highlighter/11.0.5: + resolution: {integrity: sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==} + dependencies: + '@types/react': 17.0.47 + dev: true + + /@types/react-test-renderer/18.0.0: + resolution: {integrity: sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==} + dependencies: + '@types/react': 17.0.47 + dev: true + + /@types/react-transition-group/4.4.5: + resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} + dependencies: + '@types/react': 17.0.47 + + /@types/react-virtualized-auto-sizer/1.0.1: + resolution: {integrity: sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==} + dependencies: + '@types/react': 17.0.47 + dev: true + + /@types/react-window/1.8.5: + resolution: {integrity: sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==} + dependencies: + '@types/react': 17.0.47 + dev: true + + /@types/react/17.0.47: + resolution: {integrity: sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.0 + + /@types/recursive-readdir/2.2.1: + resolution: {integrity: sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==} + dependencies: + '@types/node': 15.14.9 + dev: true + + /@types/resolve/0.0.8: + resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} + dependencies: + '@types/node': 18.0.3 + dev: true + + /@types/responselike/1.0.0: + resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + dependencies: + '@types/node': 15.14.9 + dev: true + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + + /@types/shallowequal/1.1.1: + resolution: {integrity: sha512-Lhni3aX80zbpdxRuWhnuYPm8j8UQaa571lHP/xI4W+7BAFhSIhRReXnqjEgT/XzPoXZTJkCqstFMJ8CZTK6IlQ==} + dev: false + + /@types/source-list-map/0.1.2: + resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} + dev: true + + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/stream-buffers/3.0.4: + resolution: {integrity: sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==} + dependencies: + '@types/node': 18.0.3 + dev: true + + /@types/supports-color/8.1.1: + resolution: {integrity: sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==} + dev: true + + /@types/tapable/1.0.8: + resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} + dev: true + + /@types/testing-library__jest-dom/5.14.5: + resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} + dependencies: + '@types/jest': 26.0.24 + dev: true + + /@types/through/0.0.30: + resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} + dependencies: + '@types/node': 15.14.9 + dev: true + + /@types/uglify-js/3.16.0: + resolution: {integrity: sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==} + dependencies: + source-map: 0.6.1 + dev: true + + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + + /@types/webpack-env/1.17.0: + resolution: {integrity: sha512-eHSaNYEyxRA5IAG0Ym/yCyf86niZUIF/TpWKofQI/CVfh5HsMEUyfE2kwFxha4ow0s5g0LfISQxpDKjbRDrizw==} + dev: true + + /@types/webpack-sources/3.2.0: + resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} + dependencies: + '@types/node': 18.0.3 + '@types/source-list-map': 0.1.2 + source-map: 0.7.4 + dev: true + + /@types/webpack/4.41.32: + resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} + dependencies: + '@types/node': 18.0.3 + '@types/tapable': 1.0.8 + '@types/uglify-js': 3.16.0 + '@types/webpack-sources': 3.2.0 + anymatch: 3.1.2 + source-map: 0.6.1 + dev: true + + /@types/which/1.3.2: + resolution: {integrity: sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==} + dev: true + + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs/15.0.14: + resolution: {integrity: sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs/17.0.10: + resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yauzl/2.10.0: + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + requiresBuild: true + dependencies: + '@types/node': 18.0.3 + dev: true + optional: true + + /@typescript-eslint/eslint-plugin/4.33.0_zrqxgwgitu7trrjeml3nqco3jq: + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0_wnilx7boviscikmvsfkd6ljepe + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.4.4 + typescript: 4.4.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/3.10.1_wnilx7boviscikmvsfkd6ljepe: + resolution: {integrity: sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/types': 3.10.1 + '@typescript-eslint/typescript-estree': 3.10.1_typescript@4.4.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/experimental-utils/4.33.0_wnilx7boviscikmvsfkd6ljepe: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.4.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/4.33.0_wnilx7boviscikmvsfkd6ljepe: + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.4.4 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.4.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/types/3.10.1: + resolution: {integrity: sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types/4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/typescript-estree/3.10.1_typescript@4.4.4: + resolution: {integrity: sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 3.10.1 + '@typescript-eslint/visitor-keys': 3.10.1 + debug: 4.3.4 + glob: 7.2.3 + is-glob: 4.0.3 + lodash: 4.17.21 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.4.4 + typescript: 4.4.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.4.4: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.4.4 + typescript: 4.4.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys/3.10.1: + resolution: {integrity: sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /@typescript-eslint/visitor-keys/4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@ungap/promise-all-settled/1.1.2: + resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + dev: true + + /@wdio/browserstack-service/7.11.1_@wdio+cli@7.11.1: + resolution: {integrity: sha512-TC2g6Kor15uwBKvupD2GGyT3QZnYS2sQ8MSl5YZacrWXgGvYdp7JADS/gQrTVy4beH1MrN8Ae8KnalLCh/D2GQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@wdio/cli': ^7.0.0 + dependencies: + '@types/node': 15.14.9 + '@wdio/cli': 7.11.1 + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + browserstack-local: 1.5.1 + got: 11.8.5 + webdriverio: 7.11.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@wdio/cli/7.11.1: + resolution: {integrity: sha512-CGFX7vy5U9i9ccsUNmcOv+LzFaoKNFPr1+mopELld/b0wUVN9yM70jfgmUMjpHQnAMl3lqxIjBQuDrxE8/qTEw==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@types/ejs': 3.1.1 + '@types/fs-extra': 9.0.13 + '@types/inquirer': 7.3.3 + '@types/lodash.flattendeep': 4.4.7 + '@types/lodash.pickby': 4.6.7 + '@types/lodash.union': 4.6.7 + '@types/node': 15.14.9 + '@types/recursive-readdir': 2.2.1 + '@wdio/config': 7.10.1 + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + async-exit-hook: 2.0.1 + chalk: 4.1.2 + chokidar: 3.5.3 + cli-spinners: 2.6.1 + ejs: 3.1.8 + fs-extra: 10.1.0 + inquirer: 8.2.4 + lodash.flattendeep: 4.4.0 + lodash.pickby: 4.6.0 + lodash.union: 4.6.0 + mkdirp: 1.0.4 + recursive-readdir: 2.2.2 + webdriverio: 7.11.1 + yargs: 17.5.1 + yarn-install: 1.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@wdio/config/7.10.1: + resolution: {integrity: sha512-EA+kJBNPeIxkkyilHcmiIwqjtOUcWx5FVp69kSBs4BN2fG+6CgpzoVecuTm/qPU6D0DT5KIfxVR4FRHCF99F/g==} + engines: {node: '>=12.0.0'} + dependencies: + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + deepmerge: 4.2.2 + glob: 7.2.3 + dev: true + + /@wdio/local-runner/7.11.1_@wdio+cli@7.11.1: + resolution: {integrity: sha512-aoRQg46RMfNdFCVqtHDYhIyhLoeXyOHLLv7Teyp+FJuqVNtpQT2eZACf8sZL2IfF7ZBP6JtvoV/MJ7sMXpOV2A==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@wdio/cli': ^7.0.0 + dependencies: + '@types/stream-buffers': 3.0.4 + '@wdio/cli': 7.11.1 + '@wdio/logger': 7.7.0 + '@wdio/repl': 7.11.0 + '@wdio/runner': 7.11.1 + '@wdio/types': 7.10.1 + async-exit-hook: 2.0.1 + split2: 3.2.2 + stream-buffers: 3.0.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@wdio/logger/7.7.0: + resolution: {integrity: sha512-XX/OkC8NlvsBdhKsb9j7ZbuQtF/Vuo0xf38PXdqYtVezOrYbDuba0hPG++g/IGNuAF34ZbSi+49cvz4u5w92kQ==} + engines: {node: '>=12.0.0'} + dependencies: + chalk: 4.1.2 + loglevel: 1.8.0 + loglevel-plugin-prefix: 0.8.4 + strip-ansi: 6.0.1 + dev: true + + /@wdio/mocha-framework/7.11.1: + resolution: {integrity: sha512-66P2eTOso9W9Y0IMzhHmYZ98bfBDIkwswqJzGCrAbhuFpvOnqboF8wlrfUUADJ3b2rIVmsw02FCECNPS2EnQyQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/mocha': 9.1.1 + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + expect-webdriverio: 3.4.0 + mocha: 9.2.2 + dev: true + + /@wdio/protocols/7.11.0: + resolution: {integrity: sha512-yWKmCUmbHB1AH0U3lebXRh/G3+JtsD9Tx9fevgP9qA7Hq+rHj7KqUf15k1lPPodhOms8ncPj0J6ET1E13wh2qg==} + engines: {node: '>=12.0.0'} + dev: true + + /@wdio/repl/7.11.0: + resolution: {integrity: sha512-2GtWkUqepQ0QGvdo7fLWiZklf/O4eh3AB4vcafwGVKQhE8bpSh0l8/fkXOzYU7oK/PBGHJyWXxPOVf+H5DAViA==} + engines: {node: '>=12.0.0'} + dependencies: + '@wdio/utils': 7.11.0 + dev: true + + /@wdio/reporter/7.10.1: + resolution: {integrity: sha512-zgyHQc6j+GzlOnwlu3yhCQ8yAaTfo0MpNQG1GCiqtSKJ2c50J2HR5d9LYWrM7L8v13X4YWMxhW+3oYT+f35Gjw==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/diff': 5.0.2 + '@types/node': 15.14.9 + '@types/object-inspect': 1.8.1 + '@types/supports-color': 8.1.1 + '@wdio/types': 7.10.1 + diff: 5.1.0 + fs-extra: 10.1.0 + object-inspect: 1.12.2 + supports-color: 8.1.1 + dev: true + + /@wdio/runner/7.11.1: + resolution: {integrity: sha512-mPKqdpk/WTwpwlCg84J/Y+6ZURUSZ8jrSoBpCVsvs9NesdIkHtxLfvlA2btmXXRw5Al7VBtN/FFCBFBp5db+1Q==} + engines: {node: '>=12.0.0'} + dependencies: + '@wdio/config': 7.10.1 + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + deepmerge: 4.2.2 + gaze: 1.1.3 + webdriver: 7.11.0 + webdriverio: 7.11.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /@wdio/spec-reporter/7.10.1_@wdio+cli@7.11.1: + resolution: {integrity: sha512-Yo/XvBY3OkOhs3m32KcbeilJowVO4Ii0ZeNtn4KPPV6Z4pYglV8vYdTDJ/BIinuBBJWJPbS6EFLZtrsaSuuFYg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@wdio/cli': ^7.0.0 + dependencies: + '@types/easy-table': 0.0.33 + '@wdio/cli': 7.11.1 + '@wdio/reporter': 7.10.1 + '@wdio/types': 7.10.1 + chalk: 4.1.2 + easy-table: 1.2.0 + pretty-ms: 7.0.1 + dev: true + + /@wdio/types/7.10.1: + resolution: {integrity: sha512-wEDmdux2VCGO4wWVj7v9UbVRqQG7liHnDVPYJuQURPj3hJMiQQTIHwRi7EmwYfbJ9/mRoHBOGeZt7nSvtcjeaQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/node': 15.14.9 + got: 11.8.5 + dev: true + + /@wdio/utils/7.11.0: + resolution: {integrity: sha512-0n5mZha2QktV0181nMhw+IQ8MgYrqyvVDjP20P7JEnl6hehSkyXTAYQcYuKaw5AAVqipV3Eh96JBi5CnhpsoKQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@wdio/logger': 7.7.0 + '@wdio/types': 7.10.1 + p-iteration: 1.1.8 + dev: true + + /@webassemblyjs/ast/1.9.0: + resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.9.0: + resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} + dev: true + + /@webassemblyjs/helper-api-error/1.9.0: + resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} + dev: true + + /@webassemblyjs/helper-buffer/1.9.0: + resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} + dev: true + + /@webassemblyjs/helper-code-frame/1.9.0: + resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/helper-fsm/1.9.0: + resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} + dev: true + + /@webassemblyjs/helper-module-context/1.9.0: + resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.9.0: + resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} + dev: true + + /@webassemblyjs/helper-wasm-section/1.9.0: + resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + dev: true + + /@webassemblyjs/ieee754/1.9.0: + resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.9.0: + resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.9.0: + resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} + dev: true + + /@webassemblyjs/wasm-edit/1.9.0: + resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + dev: true + + /@webassemblyjs/wasm-gen/1.9.0: + resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wasm-opt/1.9.0: + resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + dev: true + + /@webassemblyjs/wasm-parser/1.9.0: + resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + dev: true + + /@webassemblyjs/wast-parser/1.9.0: + resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/wast-printer/1.9.0: + resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + dev: true + + /@webpack-cli/configtest/1.2.0_dfxgqfcw6epibhmjfd2ethbqbi: + resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + dependencies: + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-cli: 4.10.0_webpack@4.46.0 + dev: true + + /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: + resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} + peerDependencies: + webpack-cli: 4.x.x + dependencies: + envinfo: 7.8.1 + webpack-cli: 4.10.0_webpack@4.46.0 + dev: true + + /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: + resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} + peerDependencies: + webpack-cli: 4.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack-cli: 4.10.0_webpack@4.46.0 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long/4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /@zeit/schemas/2.6.0: + resolution: {integrity: sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==} + dev: true + + /abab/2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-globals/6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + dev: true + + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /address/1.1.2: + resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==} + engines: {node: '>= 0.12.0'} + dev: true + + /address/1.2.0: + resolution: {integrity: sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==} + engines: {node: '>= 10.0.0'} + dev: true + + /adjust-sourcemap-loader/3.0.0: + resolution: {integrity: sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.2 + regex-parser: 2.2.11 + dev: true + + /agent-base/4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + dependencies: + es6-promisify: 5.0.0 + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /airbnb-js-shims/2.2.1: + resolution: {integrity: sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==} + dependencies: + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + array.prototype.flatmap: 1.3.0 + es5-shim: 4.6.7 + es6-shim: 0.35.6 + function.prototype.name: 1.1.5 + globalthis: 1.0.3 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.getownpropertydescriptors: 2.1.4 + object.values: 1.1.5 + promise.allsettled: 1.0.5 + promise.prototype.finally: 3.1.3 + string.prototype.matchall: 4.0.7 + string.prototype.padend: 3.1.3 + string.prototype.padstart: 3.1.3 + symbol.prototype.description: 1.0.5 + dev: true + + /ajv-errors/1.0.1_ajv@6.12.6: + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/6.5.3: + resolution: {integrity: sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==} + dependencies: + fast-deep-equal: 2.0.1 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + /alphanum-sort/1.0.2: + resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} + dev: true + + /ansi-align/2.0.0: + resolution: {integrity: sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==} + dependencies: + string-width: 2.1.1 + dev: true + + /ansi-align/3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-colors/3.2.4: + resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors/4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community/0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-html/0.0.7: + resolution: {integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex/3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true + + /ansi-regex/4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles/2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-to-html/0.6.15: + resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + entities: 2.2.0 + dev: true + + /any-base/1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch/2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch/2.0.0_supports-color@6.1.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10_supports-color@6.1.0 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /app-root-dir/1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + dev: true + + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: true + + /aproba/2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: true + + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /archiver-utils/2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.10 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.7 + dev: true + + /archiver/5.3.1: + resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.4 + buffer-crc32: 0.2.13 + readable-stream: 3.6.0 + readdir-glob: 1.1.2 + tar-stream: 2.2.0 + zip-stream: 4.1.0 + dev: true + + /are-we-there-yet/2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: true + + /arg/2.0.0: + resolution: {integrity: sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==} + dev: true + + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query/4.2.2: + resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} + engines: {node: '>=6.0'} + dependencies: + '@babel/runtime': 7.18.6 + '@babel/runtime-corejs3': 7.18.6 + dev: true + + /aria-query/5.0.0: + resolution: {integrity: sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==} + engines: {node: '>=6.0'} + dev: true + + /arity-n/1.0.4: + resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + dev: true + + /arr-diff/4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-flatten/1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true + + /arr-union/3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-find-index/1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-flatten/2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + dev: true + + /array-includes/3.1.5: + resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + is-string: 1.0.7 + dev: true + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array-unique/0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.flat/1.3.0: + resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.flatmap/1.3.0: + resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.map/1.0.4: + resolution: {integrity: sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.reduce/1.0.4: + resolution: {integrity: sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /arrify/2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /assert/1.5.0: + resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + + /assign-symbols/1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true + + /ast-types-flow/0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true + + /ast-types/0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + dependencies: + tslib: 2.4.0 + dev: true + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async-each/1.0.3: + resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} + dev: true + + /async-exit-hook/2.0.1: + resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==} + engines: {node: '>=0.12.0'} + dev: true + + /async-limiter/1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: true + + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /atob/2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true + + /autoprefixer/9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + dependencies: + browserslist: 4.21.1 + caniuse-lite: 1.0.30001363 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + dev: true + + /axe-core/4.4.2: + resolution: {integrity: sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==} + engines: {node: '>=12'} + dev: true + + /axios/0.21.4_debug@4.3.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.1_debug@4.3.4 + transitivePeerDependencies: + - debug + + /axobject-query/2.2.0: + resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} + dev: true + + /babel-eslint/10.1.0_eslint@7.32.0: + resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} + engines: {node: '>=6'} + deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. + peerDependencies: + eslint: '>= 4.12.1' + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.18.6 + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + eslint: 7.32.0 + eslint-visitor-keys: 1.3.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-extract-comments/1.0.0: + resolution: {integrity: sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==} + engines: {node: '>=4'} + dependencies: + babylon: 6.18.0 + dev: true + + /babel-jest/26.6.3_@babel+core@7.12.3: + resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/babel__core': 7.1.19 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 26.6.2_@babel+core@7.12.3 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest/26.6.3_@babel+core@7.18.6: + resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/babel__core': 7.1.19 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 26.6.2_@babel+core@7.18.6 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-loader/8.1.0_ijzbfparldiylzlxam7rtsqhk4: + resolution: {integrity: sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==} + engines: {node: '>= 6.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.12.3 + find-cache-dir: 2.1.0 + loader-utils: 1.4.0 + mkdirp: 0.5.6 + pify: 4.0.1 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /babel-loader/8.2.5_xcbjw3zjektbxpb7yraegegdpi: + resolution: {integrity: sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + dependencies: + '@babel/core': 7.18.6 + find-cache-dir: 3.3.2 + loader-utils: 2.0.2 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /babel-plugin-add-react-displayname/0.0.5: + resolution: {integrity: sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==} + dev: true + + /babel-plugin-apply-mdx-type-prop/1.6.22_@babel+core@7.12.9: + resolution: {integrity: sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==} + peerDependencies: + '@babel/core': ^7.11.6 + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@mdx-js/util': 1.6.22 + dev: true + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.2 + dev: true + + /babel-plugin-extract-import-names/1.6.22: + resolution: {integrity: sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==} + dependencies: + '@babel/helper-plugin-utils': 7.10.4 + dev: true + + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.18.6 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.0 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist/26.6.2: + resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/template': 7.18.6 + '@babel/types': 7.18.7 + '@types/babel__core': 7.1.19 + '@types/babel__traverse': 7.17.1 + dev: true + + /babel-plugin-macros/2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} + dependencies: + '@babel/runtime': 7.18.6 + cosmiconfig: 6.0.0 + resolve: 1.22.1 + + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.18.6 + cosmiconfig: 7.0.1 + resolve: 1.22.1 + dev: true + + /babel-plugin-named-asset-import/0.3.8_@babel+core@7.12.3: + resolution: {integrity: sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==} + peerDependencies: + '@babel/core': ^7.1.0 + dependencies: + '@babel/core': 7.12.3 + dev: true + + /babel-plugin-polyfill-corejs2/0.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.18.6 + '@babel/core': 7.18.6 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.18.6: + resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-define-polyfill-provider': 0.1.5_@babel+core@7.18.6 + core-js-compat: 3.23.3 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.5.2_@babel+core@7.18.6: + resolution: {integrity: sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + core-js-compat: 3.23.3 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-define-polyfill-provider': 0.3.1_@babel+core@7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-react-docgen/4.2.1: + resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} + dependencies: + ast-types: 0.14.2 + lodash: 4.17.21 + react-docgen: 5.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-styled-components/2.0.7_styled-components@4.4.1: + resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 4.4.1_sfoxds7t5ydpegc3knd667wn6m + dev: true + + /babel-plugin-syntax-jsx/6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: true + + /babel-plugin-syntax-object-rest-spread/6.13.0: + resolution: {integrity: sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==} + dev: true + + /babel-plugin-transform-object-rest-spread/6.26.0: + resolution: {integrity: sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==} + dependencies: + babel-plugin-syntax-object-rest-spread: 6.13.0 + babel-runtime: 6.26.0 + dev: true + + /babel-plugin-transform-react-remove-prop-types/0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + dev: true + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.12.3: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.12.3 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.12.3 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.12.3 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.12.3 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.12.3 + dev: true + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.18.6: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.18.6 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.18.6 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.18.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.18.6 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.18.6 + dev: true + + /babel-preset-jest/26.6.2_@babel+core@7.12.3: + resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.12.3 + babel-plugin-jest-hoist: 26.6.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.12.3 + dev: true + + /babel-preset-jest/26.6.2_@babel+core@7.18.6: + resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.18.6 + babel-plugin-jest-hoist: 26.6.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 + dev: true + + /babel-preset-react-app/10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + dependencies: + '@babel/core': 7.18.6 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-decorators': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-optional-chaining': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-flow-strip-types': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.18.6 + '@babel/plugin-transform-runtime': 7.18.6_@babel+core@7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 + '@babel/runtime': 7.18.6 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: true + + /babylon/6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + dev: true + + /backo2/1.0.2: + resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} + dev: false + + /bail/1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base/0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: true + + /base64-arraybuffer/0.1.4: + resolution: {integrity: sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==} + engines: {node: '>= 0.6.0'} + dev: false + + /base64-js/1.3.1: + resolution: {integrity: sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==} + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /base64id/2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + + /batch/0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /better-opn/2.1.1: + resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} + engines: {node: '>8.0.0'} + dependencies: + open: 7.4.2 + dev: true + + /bfj/7.0.2: + resolution: {integrity: sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==} + engines: {node: '>= 8.0.0'} + dependencies: + bluebird: 3.7.2 + check-types: 11.1.2 + hoopy: 0.1.4 + tryer: 1.0.1 + dev: true + + /big-integer/1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + optional: true + + /big.js/5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions/1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bindings/1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + requiresBuild: true + dependencies: + file-uri-to-path: 1.0.0 + dev: true + optional: true + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /bmp-js/0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + /bn.js/4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js/5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /body-parser/1.20.0: + resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.4 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.10.3 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser/1.20.0_supports-color@6.1.0: + resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.4 + debug: 2.6.9_supports-color@6.1.0 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.10.3 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour/3.5.0: + resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.1 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /boxen/1.3.0: + resolution: {integrity: sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==} + engines: {node: '>=4'} + dependencies: + ansi-align: 2.0.0 + camelcase: 4.1.0 + chalk: 2.4.2 + cli-boxes: 1.0.0 + string-width: 2.1.1 + term-size: 1.2.0 + widest-line: 2.0.1 + dev: true + + /boxen/5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + dev: true + + /bplist-parser/0.1.1: + resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==} + dependencies: + big-integer: 1.6.51 + dev: true + optional: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces/2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/2.3.2_supports-color@6.1.0: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2_supports-color@6.1.0 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /brorand/1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browser-process-hrtime/1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true + + /browser-stdout/1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserify-aes/1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + + /browserslist/4.14.2: + resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001363 + electron-to-chromium: 1.4.182 + escalade: 3.1.1 + node-releases: 1.1.77 + dev: true + + /browserslist/4.21.1: + resolution: {integrity: sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001363 + electron-to-chromium: 1.4.182 + node-releases: 2.0.5 + update-browserslist-db: 1.0.4_browserslist@4.21.1 + + /browserstack-local/1.5.1: + resolution: {integrity: sha512-T/wxyWDzvBHbDvl7fZKpFU7mYze6nrUkBhNy+d+8bXBqgQX10HTYvajIGO0wb49oGSLCPM0CMZTV/s7e6LF0sA==} + dependencies: + agent-base: 6.0.2 + https-proxy-agent: 5.0.1 + is-running: 2.1.0 + ps-tree: 1.2.0 + temp-fs: 0.9.9 + transitivePeerDependencies: + - supports-color + dev: true + + /browserstack/1.5.3: + resolution: {integrity: sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==} + dependencies: + https-proxy-agent: 2.2.4 + transitivePeerDependencies: + - supports-color + dev: true + + /bs-logger/0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser/2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /btoa/1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + dev: true + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-equal/0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-indexof/1.1.1: + resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} + dev: true + + /buffer-xor/1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer/4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtin-status-codes/3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /bytes/3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /c8/7.11.3: + resolution: {integrity: sha512-6YBmsaNmqRm9OS3ZbIiL2EZgi1+Xc4O24jL3vMYGE6idixYuGdy76rIfIdltSKDj9DpLNrcXSonUTR1miBD0wA==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.0 + istanbul-reports: 3.1.4 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.0.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + dev: true + + /cac/3.0.4: + resolution: {integrity: sha512-hq4rxE3NT5PlaEiVV39Z45d6MoFcQZG5dsgJqtAUeOz3408LEQAElToDkf9i5IYSCOmK0If/81dLg7nKxqPR0w==} + engines: {node: '>=4'} + dependencies: + camelcase-keys: 3.0.0 + chalk: 1.1.3 + indent-string: 3.2.0 + minimist: 1.2.6 + read-pkg-up: 1.0.1 + suffix: 0.1.1 + text-table: 0.2.0 + dev: true + + /cacache/12.0.4: + resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1_bluebird@3.7.2 + rimraf: 2.6.3 + ssri: 6.0.2 + unique-filename: 1.1.1 + y18n: 4.0.3 + dev: true + + /cacache/15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.4 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.1.11 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cache-base/1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: true + + /cacheable-lookup/5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request/7.0.2: + resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.2 + get-stream: 5.2.0 + http-cache-semantics: 4.1.0 + keyv: 4.3.2 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.0 + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.2 + dev: true + + /call-me-maybe/1.0.1: + resolution: {integrity: sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==} + dev: true + + /caller-callsite/2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + dev: true + + /caller-path/2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + dev: true + + /callsites/2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case/4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.4.0 + dev: true + + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /camelcase-keys/2.1.0: + resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase: 2.1.1 + map-obj: 1.0.1 + dev: true + optional: true + + /camelcase-keys/3.0.0: + resolution: {integrity: sha512-U4E6A6aFyYnNW+tDt5/yIUKQURKXe3WMFPfX4FxrQFcwZ/R08AUk1xWcUtlr7oq6CV07Ji+aa69V2g7BSpblnQ==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase: 3.0.0 + map-obj: 1.0.1 + dev: true + + /camelcase/2.1.1: + resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /camelcase/3.0.0: + resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} + engines: {node: '>=0.10.0'} + dev: true + + /camelcase/4.1.0: + resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} + engines: {node: '>=4'} + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelize/1.0.0: + resolution: {integrity: sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==} + dev: true + + /caniuse-api/3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + dependencies: + browserslist: 4.21.1 + caniuse-lite: 1.0.30001363 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + dev: true + + /caniuse-lite/1.0.30001363: + resolution: {integrity: sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==} + + /canvas/2.9.3: + resolution: {integrity: sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.9 + nan: 2.16.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /capture-exit/2.0.0: + resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} + engines: {node: 6.* || 8.* || >= 10.*} + dependencies: + rsvp: 4.8.5 + dev: true + + /case-sensitive-paths-webpack-plugin/2.3.0: + resolution: {integrity: sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==} + engines: {node: '>=4'} + dev: true + + /case-sensitive-paths-webpack-plugin/2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + dev: true + + /ccount/1.1.0: + resolution: {integrity: sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==} + dev: true + + /chalk/1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: true + + /chalk/2.4.1: + resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex/1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /character-entities-legacy/1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities/1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid/1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-types/11.1.2: + resolution: {integrity: sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==} + dev: true + + /chokidar/2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.3 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /chokidar/2.1.8_supports-color@6.1.0: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0_supports-color@6.1.0 + async-each: 1.0.3 + braces: 2.3.2_supports-color@6.1.0 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1_supports-color@6.1.0 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chrome-launcher/0.14.2: + resolution: {integrity: sha512-Nk8DUCIfPR6p9WClPPFeP2ztpAdkT8xueoiDS03csea1uoJjm4w0p5Oy1hjykyjT1EQ0MMrEshLD3C8gHXyiZw==} + engines: {node: '>=12.13.0'} + dependencies: + '@types/node': 15.14.9 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /chrome-trace-event/1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /ci-info/2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info/3.3.2: + resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} + dev: true + + /cipher-base/1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /cjs-module-lexer/0.6.0: + resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} + dev: true + + /class-utils/0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: true + + /clean-css/4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-boxes/1.0.0: + resolution: {integrity: sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==} + engines: {node: '>=0.10.0'} + dev: true + + /cli-boxes/2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + dev: true + + /cli-color/2.0.3: + resolution: {integrity: sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + es6-iterator: 2.0.3 + memoizee: 0.4.15 + timers-ext: 0.1.7 + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners/2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + dev: true + + /cli-table3/0.6.2: + resolution: {integrity: sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==} + engines: {node: 10.* || >= 12.*} + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /cli-width/3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /clipboardy/1.2.3: + resolution: {integrity: sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==} + engines: {node: '>=4'} + dependencies: + arch: 2.2.0 + execa: 0.8.0 + dev: true + + /cliui/5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + + /cliui/6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui/7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep/4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone-response/1.0.2: + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /clsx/1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + /co/4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /coa/2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + dependencies: + '@types/q': 1.5.5 + chalk: 2.4.2 + q: 1.5.1 + dev: true + + /collapse-white-space/1.0.6: + resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==} + dev: true + + /collect-v8-coverage/1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /collection-visit/1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /color-string/1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: true + + /color-support/1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: true + + /color/3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /comma-separated-tokens/1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander/4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander/6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /common-path-prefix/3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /component-emitter/1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + + /compose-function/3.0.3: + resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + dependencies: + arity-n: 1.0.4 + dev: true + + /compress-brotli/1.3.8: + resolution: {integrity: sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==} + engines: {node: '>= 12'} + dependencies: + '@types/json-buffer': 3.0.0 + json-buffer: 3.0.1 + dev: true + + /compress-commons/4.1.1: + resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.2 + normalize-path: 3.0.0 + readable-stream: 3.6.0 + dev: true + + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression/1.7.3: + resolution: {integrity: sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /compression/1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /compression/1.7.4_supports-color@6.1.0: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9_supports-color@6.1.0 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /concurrently/5.3.0: + resolution: {integrity: sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + chalk: 2.4.2 + date-fns: 2.28.0 + lodash: 4.17.21 + read-pkg: 4.0.1 + rxjs: 6.6.7 + spawn-command: 0.0.2-1 + supports-color: 6.1.0 + tree-kill: 1.2.2 + yargs: 13.3.2 + dev: true + + /confusing-browser-globals/1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true + + /connect-history-api-fallback/1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: true + + /connect/3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /console-browserify/1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /console-control-strings/1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: true + + /constants-browserify/1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + + /content-disposition/0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: true + + /content-disposition/0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type/1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map/0.3.5: + resolution: {integrity: sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==} + dev: true + + /convert-source-map/1.7.0: + resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /convert-source-map/1.8.0: + resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} + dependencies: + safe-buffer: 5.1.2 + + /cookie-signature/1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie/0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-concurrently/1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.6.3 + run-queue: 1.0.3 + dev: true + + /copy-descriptor/0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true + + /core-js-compat/3.23.3: + resolution: {integrity: sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==} + dependencies: + browserslist: 4.21.1 + semver: 7.0.0 + dev: true + + /core-js-pure/3.23.3: + resolution: {integrity: sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==} + requiresBuild: true + dev: true + + /core-js/2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-js/3.23.3: + resolution: {integrity: sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==} + requiresBuild: true + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig/5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: true + + /cosmiconfig/6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /cosmiconfig/7.0.1: + resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /cp-file/7.0.0: + resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.10 + make-dir: 3.1.0 + nested-error-stacks: 2.1.1 + p-event: 4.2.0 + dev: true + + /cpy/8.1.2: + resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==} + engines: {node: '>=8'} + dependencies: + arrify: 2.0.1 + cp-file: 7.0.0 + globby: 9.2.0 + has-glob: 1.0.0 + junk: 3.1.0 + nested-error-stacks: 2.1.1 + p-all: 2.1.0 + p-filter: 2.1.0 + p-map: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /crc-32/1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /crc/3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + dependencies: + buffer: 5.7.1 + dev: false + + /crc32-stream/4.0.2: + resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.0 + dev: true + + /create-ecdh/4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash/1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-fetch/3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /cross-spawn/4.0.2: + resolution: {integrity: sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==} + dependencies: + lru-cache: 4.1.5 + which: 1.3.1 + dev: true + + /cross-spawn/5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-browserify/3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /crypto-random-string/1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + dev: true + + /css-blank-pseudo/0.1.4: + resolution: {integrity: sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.39 + dev: true + + /css-color-keywords/1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: true + + /css-color-names/0.0.4: + resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} + dev: true + + /css-declaration-sorter/4.0.1: + resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} + engines: {node: '>4'} + dependencies: + postcss: 7.0.39 + timsort: 0.3.0 + dev: true + + /css-has-pseudo/0.10.0: + resolution: {integrity: sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 5.0.0 + dev: true + + /css-loader/3.6.0_webpack@4.46.0: + resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.0 + normalize-path: 3.0.0 + postcss: 7.0.39 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.2.0 + schema-utils: 2.7.1 + semver: 6.3.0 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /css-loader/4.3.0_webpack@4.44.2: + resolution: {integrity: sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.27.0 || ^5.0.0 + dependencies: + camelcase: 6.3.0 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 2.0.2 + postcss: 7.0.39 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.2.0 + schema-utils: 2.7.1 + semver: 7.3.7 + webpack: 4.44.2 + dev: true + + /css-loader/5.2.7_webpack@4.46.0: + resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.27.0 || ^5.0.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.14 + loader-utils: 2.0.2 + postcss: 8.4.14 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.14 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.14 + postcss-modules-scope: 3.0.0_postcss@8.4.14 + postcss-modules-values: 4.0.0_postcss@8.4.14 + postcss-value-parser: 4.2.0 + schema-utils: 3.1.1 + semver: 7.3.7 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /css-prefers-color-scheme/3.1.1: + resolution: {integrity: sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + postcss: 7.0.39 + dev: true + + /css-select-base-adapter/0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + dev: true + + /css-select/2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + dev: true + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-shorthand-properties/1.1.1: + resolution: {integrity: sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==} + dev: true + + /css-to-react-native/2.3.2: + resolution: {integrity: sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==} + dependencies: + camelize: 1.0.0 + css-color-keywords: 1.0.0 + postcss-value-parser: 3.3.1 + dev: true + + /css-tree/1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-value/0.0.1: + resolution: {integrity: sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==} + dev: true + + /css-vendor/2.0.8: + resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} + dependencies: + '@babel/runtime': 7.18.6 + is-in-browser: 1.1.3 + dev: false + + /css-what/3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css.escape/1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /css/2.2.4: + resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.5.3 + urix: 0.1.0 + dev: true + + /css/3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + dev: true + + /cssdb/4.4.0: + resolution: {integrity: sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==} + dev: true + + /cssesc/2.0.0: + resolution: {integrity: sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /cssnano-preset-default/4.0.8: + resolution: {integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==} + engines: {node: '>=6.9.0'} + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.39 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.3 + postcss-unique-selectors: 4.0.1 + dev: true + + /cssnano-util-get-arguments/4.0.0: + resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano-util-get-match/4.0.0: + resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano-util-raw-cache/4.0.1: + resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /cssnano-util-same-parent/4.0.1: + resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} + engines: {node: '>=6.9.0'} + dev: true + + /cssnano/4.1.11: + resolution: {integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==} + engines: {node: '>=6.9.0'} + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.8 + is-resolvable: 1.1.0 + postcss: 7.0.39 + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom/0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + dev: true + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype/3.1.0: + resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} + + /currently-unhandled/0.4.1: + resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} + engines: {node: '>=0.10.0'} + dependencies: + array-find-index: 1.0.2 + dev: true + optional: true + + /custom-event/1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + dev: true + + /cyclist/1.0.1: + resolution: {integrity: sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==} + dev: true + + /d/1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.61 + type: 1.2.0 + dev: true + + /damerau-levenshtein/1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true + + /data-urls/2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + dev: true + + /date-fns/2.28.0: + resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==} + engines: {node: '>=0.11'} + + /date-format/4.0.11: + resolution: {integrity: sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==} + engines: {node: '>=4.0'} + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/2.6.9_supports-color@6.1.0: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + supports-color: 6.1.0 + dev: true + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/3.2.7_supports-color@6.1.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 6.1.0 + dev: true + + /debug/4.3.1: + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug/4.3.3_supports-color@8.1.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /debug/4.3.4_supports-color@5.5.0: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + dev: true + + /debug/4.3.4_supports-color@6.1.0: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 6.1.0 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decamelize/4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /decimal.js/10.3.1: + resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} + dev: true + + /decode-uri-component/0.2.0: + resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} + engines: {node: '>=0.10'} + dev: true + + /decompress-response/4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + dependencies: + mimic-response: 2.1.0 + dev: true + + /decompress-response/6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-equal/1.1.1: + resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.4.3 + dev: true + + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /default-browser-id/1.0.4: + resolution: {integrity: sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dependencies: + bplist-parser: 0.1.1 + meow: 3.7.0 + untildify: 2.1.0 + dev: true + optional: true + + /default-gateway/4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + dev: true + + /defaults/1.0.3: + resolution: {integrity: sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==} + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect/2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /define-property/0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: true + + /define-property/1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: true + + /define-property/2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: true + + /del/4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.6.3 + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /delegates/1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true + + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd/2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /des.js/1.0.1: + resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy/1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detab/2.0.4: + resolution: {integrity: sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==} + dependencies: + repeat-string: 1.6.1 + dev: true + + /detect-libc/2.0.1: + resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + engines: {node: '>=8'} + dev: true + + /detect-newline/3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-node/2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /detect-package-manager/2.0.1: + resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /detect-port-alt/1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.1.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: true + + /detect-port/1.3.0: + resolution: {integrity: sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.0 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: true + + /devtools-protocol/0.0.1011705: + resolution: {integrity: sha512-OKvTvu9n3swmgYshvsyVHYX0+aPzCoYUnyXUacfQMmFtBtBKewV/gT4I9jkAbpTqtTi2E4S9MXLlvzBDUlqg0Q==} + dev: true + + /devtools-protocol/0.0.901419: + resolution: {integrity: sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==} + dev: true + + /devtools-protocol/0.0.915197: + resolution: {integrity: sha512-JXt4akUoL62CtxKLQBxcJlI7gsCZyAQ1Qb/0MZJOz8VETazoJB6+IjUwTkECrvye9AnNLDQyyV00kz/vWXVifQ==} + dev: true + + /devtools/7.11.0: + resolution: {integrity: sha512-V3mIskCVv+OrqgJf9EU4bvoOrEx+qQ+sNoyLxqzxkFgh0wwtYIhcMiqDluL8dBKlhToV16UsYDKoqa67ylNwOg==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/node': 15.14.9 + '@wdio/config': 7.10.1 + '@wdio/logger': 7.7.0 + '@wdio/protocols': 7.11.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + chrome-launcher: 0.14.2 + edge-paths: 2.2.1 + puppeteer-core: 10.4.0 + query-selector-shadow-dom: 1.0.0 + ua-parser-js: 0.7.31 + uuid: 8.3.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /di/0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + dev: true + + /diff-sequences/26.6.2: + resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} + engines: {node: '>= 10.14.2'} + dev: true + + /diff-sequences/28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diff/5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + + /diffie-hellman/5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob/2.2.2: + resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} + engines: {node: '>=4'} + dependencies: + path-type: 3.0.0 + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-equal/1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + dev: true + + /dns-packet/1.3.4: + resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} + dependencies: + ip: 1.1.8 + safe-buffer: 5.2.1 + dev: true + + /dns-txt/2.0.2: + resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} + dependencies: + buffer-indexof: 1.1.1 + dev: true + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api/0.5.14: + resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} + dev: true + + /dom-converter/0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-helpers/5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.18.6 + csstype: 3.1.0 + + /dom-serialize/2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + dependencies: + custom-event: 1.0.1 + ent: 2.2.0 + extend: 3.0.2 + void-elements: 2.0.1 + dev: true + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-walk/0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + /domain-browser/1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domexception/2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + dependencies: + webidl-conversions: 5.0.0 + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /dot-case/3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /dot-prop/5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dotenv-expand/5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + dev: true + + /dotenv/8.2.0: + resolution: {integrity: sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==} + engines: {node: '>=8'} + dev: true + + /dotenv/8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: true + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /duplexify/3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.7 + stream-shift: 1.0.1 + dev: true + + /easy-table/1.2.0: + resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==} + dependencies: + ansi-regex: 5.0.1 + optionalDependencies: + wcwidth: 1.0.1 + dev: true + + /edge-paths/2.2.1: + resolution: {integrity: sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==} + dependencies: + '@types/which': 1.3.2 + which: 2.0.2 + dev: true + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /ejs/2.7.4: + resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: true + + /ejs/3.1.8: + resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.5 + dev: true + + /electron-to-chromium/1.4.182: + resolution: {integrity: sha512-OpEjTADzGoXABjqobGhpy0D2YsTncAax7IkER68ycc4adaq0dqEG9//9aenKPy7BGA90bqQdLac0dPp6uMkcSg==} + + /elliptic/6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /emittery/0.7.2: + resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} + engines: {node: '>=10'} + dev: true + + /emoji-regex/7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list/2.1.0: + resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} + engines: {node: '>= 0.10'} + dev: true + + /emojis-list/3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /endent/2.1.0: + resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} + dependencies: + dedent: 0.7.0 + fast-json-parse: 1.0.3 + objectorarray: 1.0.5 + dev: true + + /engine.io-client/4.1.4: + resolution: {integrity: sha512-843fqAdKeUMFqKi1sSjnR11tJ4wi8sIefu6+JC1OzkkJBmjtc/gM/rZ53tJfu5Iae/3gApm5veoS+v+gtT0+Fg==} + dependencies: + base64-arraybuffer: 0.1.4 + component-emitter: 1.3.0 + debug: 4.3.4 + engine.io-parser: 4.0.3 + has-cors: 1.1.0 + parseqs: 0.0.6 + parseuri: 0.0.6 + ws: 7.4.6 + xmlhttprequest-ssl: 1.6.3 + yeast: 0.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /engine.io-parser/4.0.3: + resolution: {integrity: sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==} + engines: {node: '>=8.0.0'} + dependencies: + base64-arraybuffer: 0.1.4 + dev: false + + /engine.io-parser/5.0.4: + resolution: {integrity: sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io/6.2.0: + resolution: {integrity: sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.12 + '@types/node': 18.0.3 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.0.4 + ws: 8.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve/4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} + dependencies: + graceful-fs: 4.2.10 + memory-fs: 0.5.0 + tapable: 1.1.3 + dev: true + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /ent/2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /envinfo/7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + dependencies: + prr: 1.0.1 + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser/2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: true + + /es-abstract/1.20.1: + resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.2 + get-symbol-description: 1.0.0 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.2 + regexp.prototype.flags: 1.4.3 + string.prototype.trimend: 1.0.5 + string.prototype.trimstart: 1.0.5 + unbox-primitive: 1.0.2 + dev: true + + /es-array-method-boxes-properly/1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-get-iterator/1.1.2: + resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + dev: true + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.4 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext/0.10.61: + resolution: {integrity: sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: true + + /es5-shim/4.6.7: + resolution: {integrity: sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==} + engines: {node: '>=0.4.0'} + dev: true + + /es6-iterator/2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + es6-symbol: 3.1.3 + dev: true + + /es6-promise/4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: true + + /es6-promisify/5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: true + + /es6-shim/0.35.6: + resolution: {integrity: sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==} + dev: true + + /es6-symbol/3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.6.0 + dev: true + + /es6-weak-map/2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-react-app/6.0.0_wl7dwujyi3bf4ng7y5libhxib4: + resolution: {integrity: sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 + '@typescript-eslint/parser': ^4.0.0 + babel-eslint: ^10.0.0 + eslint: ^7.5.0 + eslint-plugin-flowtype: ^5.2.0 + eslint-plugin-import: ^2.22.0 + eslint-plugin-jest: ^24.0.0 + eslint-plugin-jsx-a11y: ^6.3.1 + eslint-plugin-react: ^7.20.3 + eslint-plugin-react-hooks: ^4.0.8 + eslint-plugin-testing-library: ^3.9.0 + typescript: '*' + peerDependenciesMeta: + eslint-plugin-jest: + optional: true + eslint-plugin-testing-library: + optional: true + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + babel-eslint: 10.1.0_eslint@7.32.0 + confusing-browser-globals: 1.0.11 + eslint: 7.32.0 + eslint-plugin-flowtype: 5.10.0_eslint@7.32.0 + eslint-plugin-import: 2.26.0_ffi3uiz42rv3jyhs6cr7p7qqry + eslint-plugin-jest: 24.7.0_6f4esddknfe6lryu4sgtvm3pta + eslint-plugin-jsx-a11y: 6.6.0_eslint@7.32.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + eslint-plugin-testing-library: 3.10.2_wnilx7boviscikmvsfkd6ljepe + typescript: 4.4.4 + dev: true + + /eslint-import-resolver-node/0.3.6: + resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} + dependencies: + debug: 3.2.7 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils/2.7.3_lkzaig2qiyp6elizstfbgvzhie: + resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + debug: 3.2.7 + eslint-import-resolver-node: 0.3.6 + find-up: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-flowtype/5.10.0_eslint@7.32.0: + resolution: {integrity: sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.1.0 + dependencies: + eslint: 7.32.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: true + + /eslint-plugin-import/2.26.0_ffi3uiz42rv3jyhs6cr7p7qqry: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_lkzaig2qiyp6elizstfbgvzhie + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jest/24.7.0_6f4esddknfe6lryu4sgtvm3pta: + resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} + engines: {node: '>=10'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>= 4' + eslint: '>=5' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/experimental-utils': 4.33.0_wnilx7boviscikmvsfkd6ljepe + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jsx-a11y/6.6.0_eslint@7.32.0: + resolution: {integrity: sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.18.6 + aria-query: 4.2.2 + array-includes: 3.1.5 + ast-types-flow: 0.0.7 + axe-core: 4.4.2 + axobject-query: 2.2.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 7.32.0 + has: 1.0.3 + jsx-ast-utils: 3.3.2 + language-tags: 1.0.5 + minimatch: 3.1.2 + semver: 6.3.0 + dev: true + + /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-react/7.30.1_eslint@7.32.0: + resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.5 + array.prototype.flatmap: 1.3.0 + doctrine: 2.1.0 + eslint: 7.32.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.2 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.1 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.7 + dev: true + + /eslint-plugin-testing-library/3.10.2_wnilx7boviscikmvsfkd6ljepe: + resolution: {integrity: sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==} + engines: {node: ^10.12.0 || >=12.0.0, npm: '>=6'} + peerDependencies: + eslint: ^5 || ^6 || ^7 + dependencies: + '@typescript-eslint/experimental-utils': 3.10.1_wnilx7boviscikmvsfkd6ljepe + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-scope/4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@7.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-webpack-plugin/2.7.0_a7xmpkungfd35is2c4kqy55h3i: + resolution: {integrity: sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + webpack: ^4.0.0 || ^5.0.0 + dependencies: + '@types/eslint': 7.29.0 + arrify: 2.0.1 + eslint: 7.32.0 + jest-worker: 27.5.1 + micromatch: 4.0.5 + normalize-path: 3.0.0 + schema-utils: 3.1.1 + webpack: 4.44.2 + dev: true + + /eslint/7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.16.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.3.7 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.0 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-to-babel/3.2.1: + resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} + engines: {node: '>=8.3.0'} + dependencies: + '@babel/traverse': 7.18.6 + '@babel/types': 7.18.7 + c8: 7.11.3 + transitivePeerDependencies: + - supports-color + dev: true + + /estree-walker/0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-emitter/0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + dev: true + + /event-stream/3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + dev: true + + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /eventsource/2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + dev: true + + /evp_bytestokey/1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /exec-sh/0.3.6: + resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} + dev: true + + /execa/0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa/0.8.0: + resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa/1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true + + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exif-parser/0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + /exit/0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expand-brackets/2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expand-brackets/2.1.4_supports-color@6.1.0: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /expect-webdriverio/3.4.0: + resolution: {integrity: sha512-7Ivy1IB35pmkbCcI36un2OMytGEYCy1PcdqrlDnWZBzTpewAO14r+gO2FSuO5kNpDWm3gZSD4NYLG1KXJOlI3w==} + dependencies: + expect: 28.1.1 + jest-matcher-utils: 28.1.1 + dev: true + + /expect/26.6.2: + resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + ansi-styles: 4.3.0 + jest-get-type: 26.3.0 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + dev: true + + /expect/28.1.1: + resolution: {integrity: sha512-/AANEwGL0tWBwzLNOvO0yUdy2D52jVdNXppOqswC49sxMN2cPWsGCQdzuIf9tj6hHoBQzNvx75JUYuQAckPo3w==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/expect-utils': 28.1.1 + jest-get-type: 28.0.2 + jest-matcher-utils: 28.1.1 + jest-message-util: 28.1.1 + jest-util: 28.1.1 + dev: true + + /express/4.18.1: + resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.0 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.10.3 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express/4.18.1_supports-color@6.1.0: + resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.0_supports-color@6.1.0 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9_supports-color@6.1.0 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0_supports-color@6.1.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.10.3 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0_supports-color@6.1.0 + serve-static: 1.15.0_supports-color@6.1.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /ext/1.6.0: + resolution: {integrity: sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==} + dependencies: + type: 2.6.0 + dev: true + + /extend-shallow/2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: true + + /extend-shallow/3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extglob/2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extglob/2.0.4_supports-color@6.1.0: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4_supports-color@6.1.0 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extract-zip/2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-deep-equal/2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob/2.2.7: + resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} + engines: {node: '>=4.0.0'} + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.3 + merge2: 1.4.1 + micromatch: 3.1.10 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-parse/1.0.3: + resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-url-parser/1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + + /fastest-levenshtein/1.0.12: + resolution: {integrity: sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==} + dev: true + + /fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fault/1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + dependencies: + format: 0.2.2 + dev: true + + /faye-websocket/0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /fb-watchman/2.0.1: + resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} + dependencies: + bser: 2.1.1 + dev: true + + /fd-slicer/1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /fetch-retry/5.0.3: + resolution: {integrity: sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==} + dev: true + + /figgy-pudding/3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + dev: true + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-loader/6.1.1_webpack@4.44.2: + resolution: {integrity: sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 4.44.2 + dev: true + + /file-loader/6.2.0_webpack@4.46.0: + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /file-system-cache/1.1.0: + resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} + dependencies: + fs-extra: 10.1.0 + ramda: 0.28.0 + dev: true + + /file-type/9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + /file-uri-to-path/1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + requiresBuild: true + dev: true + optional: true + + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.0 + dev: true + + /filesize/6.1.0: + resolution: {integrity: sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==} + engines: {node: '>= 0.4.0'} + dev: true + + /fill-range/4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /filter-console/0.1.1: + resolution: {integrity: sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==} + engines: {node: '>=8'} + dev: true + + /finalhandler/1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler/1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler/1.2.0_supports-color@6.1.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir/2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: true + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + /find-up/1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + dev: true + + /find-up/2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: true + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.6 + rimraf: 3.0.2 + dev: true + + /flat/5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted/3.2.6: + resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} + dev: true + + /flatten/1.0.3: + resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} + deprecated: flatten is deprecated in favor of utility frameworks such as lodash. + dev: true + + /flush-write-stream/1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /follow-redirects/1.15.1_debug@4.3.4: + resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4 + + /for-in/1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true + + /foreground-child/2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + dev: true + + /fork-ts-checker-webpack-plugin/4.1.6_bbqhrndznz6a4k7d23h2kkrexi: + resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 2.4.2 + eslint: 7.32.0 + micromatch: 3.1.10 + minimatch: 3.1.2 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /fork-ts-checker-webpack-plugin/4.1.6_bubf4veva5nnocx7gaznjuarcu: + resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 2.4.2 + micromatch: 3.1.10 + minimatch: 3.1.2 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 4.4.4 + webpack: 4.46.0 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /fork-ts-checker-webpack-plugin/4.1.6_lqszvzlozoiycnphcgimetch2i: + resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 2.4.2 + eslint: 7.32.0 + micromatch: 3.1.10 + minimatch: 3.1.2 + semver: 5.7.1 + tapable: 1.1.3 + typescript: 4.4.4 + webpack: 4.44.2 + worker-rpc: 0.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /fork-ts-checker-webpack-plugin/6.5.2_bbqhrndznz6a4k7d23h2kkrexi: + resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + eslint: 7.32.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.7 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.7 + tapable: 1.1.3 + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /fork-ts-checker-webpack-plugin/6.5.2_bubf4veva5nnocx7gaznjuarcu: + resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.7 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.7 + tapable: 1.1.3 + typescript: 4.4.4 + webpack: 4.46.0 + dev: true + + /form-data/3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /format/0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: true + + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fragment-cache/0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: true + + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /from/0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + dev: true + + /from2/2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fs-constants/1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /fs-monkey/1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + dev: true + + /fs-write-stream-atomic/1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + dependencies: + graceful-fs: 4.2.10 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.7 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2. + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.16.0 + dev: true + optional: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gauge/3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: true + + /gaze/1.1.3: + resolution: {integrity: sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==} + engines: {node: '>= 4.0.0'} + dependencies: + globule: 1.3.4 + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic/1.1.2: + resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true + + /get-package-type/0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-port/5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: true + + /get-stdin/4.0.1: + resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + + /get-stream/3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true + + /get-stream/4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + dev: true + + /get-value/2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true + + /gifwrap/0.9.4: + resolution: {integrity: sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==} + dependencies: + image-q: 4.0.0 + omggif: 1.0.10 + + /github-slugger/1.4.0: + resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} + dev: true + + /glob-parent/3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-promise/3.4.0_glob@7.2.3: + resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} + engines: {node: '>=4'} + peerDependencies: + glob: '*' + dependencies: + '@types/glob': 7.2.0 + glob: 7.2.3 + dev: true + + /glob-to-regexp/0.3.0: + resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + dev: true + + /glob-to-regexp/0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob/7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + dev: true + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + dev: true + + /global/4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals/13.16.0: + resolution: {integrity: sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.4 + dev: true + + /globby/11.0.1: + resolution: {integrity: sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.11 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby/6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globby/9.2.0: + resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} + engines: {node: '>=6'} + dependencies: + '@types/glob': 7.2.0 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.2.3 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /globule/1.3.4: + resolution: {integrity: sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==} + engines: {node: '>= 0.10'} + dependencies: + glob: 7.1.7 + lodash: 4.17.21 + minimatch: 3.0.4 + dev: true + + /got/11.8.5: + resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.2 + '@types/responselike': 1.0.0 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.2 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.0 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /growl/1.10.5: + resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} + engines: {node: '>=4.x'} + dev: true + + /growly/1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + dev: true + optional: true + + /gzip-size/5.1.1: + resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} + engines: {node: '>=6'} + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + dev: true + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + + /handle-thing/2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.6 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.16.0 + dev: true + + /harmony-reflect/1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: true + + /has-ansi/2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-cors/1.1.0: + resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==} + dev: false + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-glob/1.0.0: + resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==} + engines: {node: '>=0.10.0'} + dependencies: + is-glob: 3.1.0 + dev: true + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.2 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has-unicode/2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: true + + /has-value/0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: true + + /has-value/1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: true + + /has-values/0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true + + /has-values/1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-base/3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /hash.js/1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /hast-to-hyperscript/9.0.1: + resolution: {integrity: sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==} + dependencies: + '@types/unist': 2.0.6 + comma-separated-tokens: 1.0.8 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + style-to-object: 0.3.0 + unist-util-is: 4.1.0 + web-namespaces: 1.1.4 + dev: true + + /hast-util-from-parse5/6.0.1: + resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==} + dependencies: + '@types/parse5': 5.0.3 + hastscript: 6.0.0 + property-information: 5.6.0 + vfile: 4.2.1 + vfile-location: 3.2.0 + web-namespaces: 1.1.4 + dev: true + + /hast-util-parse-selector/2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + dev: true + + /hast-util-raw/6.0.1: + resolution: {integrity: sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==} + dependencies: + '@types/hast': 2.3.4 + hast-util-from-parse5: 6.0.1 + hast-util-to-parse5: 6.0.0 + html-void-elements: 1.0.5 + parse5: 6.0.1 + unist-util-position: 3.1.0 + vfile: 4.2.1 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: true + + /hast-util-to-parse5/6.0.0: + resolution: {integrity: sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==} + dependencies: + hast-to-hyperscript: 9.0.1 + property-information: 5.6.0 + web-namespaces: 1.1.4 + xtend: 4.0.2 + zwitch: 1.0.5 + dev: true + + /hastscript/6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + dependencies: + '@types/hast': 2.3.4 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /hex-color-regex/1.1.0: + resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + dev: true + + /highlight.js/10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + dev: true + + /history/4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + dependencies: + '@babel/runtime': 7.18.6 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.2.0 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + /hmac-drbg/1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + + /hoopy/0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + dev: true + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hpack.js/2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: true + + /hsl-regex/1.0.0: + resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} + dev: true + + /hsla-regex/1.0.0: + resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} + dev: true + + /html-encoding-sniffer/2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + dev: true + + /html-entities/1.4.0: + resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} + dev: true + + /html-entities/2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html-minifier-terser/5.1.1: + resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} + engines: {node: '>=6'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 4.2.4 + commander: 4.1.1 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 4.8.0 + dev: true + + /html-tags/3.2.0: + resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + engines: {node: '>=8'} + dev: true + + /html-void-elements/1.0.5: + resolution: {integrity: sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==} + dev: true + + /html-webpack-plugin/4.5.0_webpack@4.44.2: + resolution: {integrity: sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==} + engines: {node: '>=6.9'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + '@types/html-minifier-terser': 5.1.2 + '@types/tapable': 1.0.8 + '@types/webpack': 4.41.32 + html-minifier-terser: 5.1.1 + loader-utils: 1.4.0 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + util.promisify: 1.0.0 + webpack: 4.44.2 + dev: true + + /html-webpack-plugin/4.5.2_webpack@4.46.0: + resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==} + engines: {node: '>=6.9'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + '@types/html-minifier-terser': 5.1.2 + '@types/tapable': 1.0.8 + '@types/webpack': 4.41.32 + html-minifier-terser: 5.1.1 + loader-utils: 1.4.0 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + util.promisify: 1.0.0 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /htmlparser2/6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: true + + /http-cache-semantics/4.1.0: + resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + dev: true + + /http-deceiver/1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors/1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors/2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js/0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent/4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware/0.19.1_tmpgdztspuwvsxzgjkhoqk7duq: + resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} + engines: {node: '>=4.0.0'} + dependencies: + http-proxy: 1.18.1_debug@4.3.4 + is-glob: 4.0.3 + lodash: 4.17.21 + micromatch: 3.1.10_supports-color@6.1.0 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /http-proxy/1.18.1_debug@4.3.4: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.1_debug@4.3.4 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /http2-wrapper/1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /https-browserify/1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + + /https-proxy-agent/2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + dependencies: + agent-base: 4.3.0 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /husky/8.0.1: + resolution: {integrity: sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /hyphenate-style-name/1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils/4.1.1: + resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.39 + dev: true + + /icss-utils/5.1.0_postcss@8.4.14: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.14 + dev: true + + /identity-obj-proxy/3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /iferr/0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + dev: true + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} + dev: true + + /image-q/4.0.0: + resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} + dependencies: + '@types/node': 16.9.1 + + /immer/8.0.1: + resolution: {integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==} + dev: true + + /import-cwd/2.1.0: + resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} + engines: {node: '>=4'} + dependencies: + import-from: 2.1.0 + dev: true + + /import-fresh/2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-from/2.1.0: + resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /import-local/2.0.0: + resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + dev: true + + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/2.1.0: + resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} + engines: {node: '>=0.10.0'} + dependencies: + repeating: 2.0.1 + dev: true + optional: true + + /indent-string/3.2.0: + resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} + engines: {node: '>=4'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /indexes-of/1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + dev: true + + /infer-owner/1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.1: + resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} + dev: true + + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /inline-style-parser/0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + + /inquirer/8.2.4: + resolution: {integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.5.5 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /internal-ip/4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + dev: true + + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.2 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /interpret/2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + dev: true + + /ip-regex/2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + dev: true + + /ip/1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: true + + /ip/2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: true + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /is-absolute-url/2.1.0: + resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-absolute-url/3.0.3: + resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} + engines: {node: '>=8'} + dev: true + + /is-accessor-descriptor/0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-accessor-descriptor/1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-alphabetical/1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical/1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrayish/0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + dependencies: + binary-extensions: 1.13.1 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer/1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + + /is-ci/2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: true + + /is-color-stop/1.1.0: + resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + dev: true + + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + dependencies: + has: 1.0.3 + + /is-data-descriptor/0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-data-descriptor/1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: true + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal/1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-descriptor/0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: true + + /is-descriptor/1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: true + + /is-directory/0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-dom/1.1.0: + resolution: {integrity: sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==} + dependencies: + is-object: 1.0.2 + is-window: 1.0.2 + dev: true + + /is-extendable/0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true + + /is-extendable/1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-finite/1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /is-fullwidth-code-point/2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-function/1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + /is-generator-fn/2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob/3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-hexadecimal/1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-in-browser/1.1.3: + resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} + dev: false + + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-map/2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-object/1.0.2: + resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} + dev: true + + /is-path-cwd/2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: true + + /is-path-in-cwd/2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + dependencies: + is-path-inside: 2.1.0 + dev: true + + /is-path-inside/2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + dependencies: + path-is-inside: 1.0.2 + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-promise/2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-resolvable/1.1.0: + resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} + dev: true + + /is-root/2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: true + + /is-running/2.1.0: + resolution: {integrity: sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==} + dev: true + + /is-set/2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream/1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-utf8/0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-what/3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-whitespace-character/1.0.4: + resolution: {integrity: sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==} + dev: true + + /is-window/1.0.2: + resolution: {integrity: sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==} + dev: true + + /is-windows/1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-word-character/1.0.4: + resolution: {integrity: sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==} + dev: true + + /is-wsl/1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray/0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isbinaryfile/4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isobject/2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: true + + /isobject/3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isobject/4.0.0: + resolution: {integrity: sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==} + engines: {node: '>=0.10.0'} + dev: true + + /isomorphic-unfetch/3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.6.7 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: true + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument/4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.18.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument/5.2.0: + resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.18.6 + '@babel/parser': 7.18.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports/3.1.4: + resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /iterate-iterator/1.0.2: + resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} + dev: true + + /iterate-value/1.0.2: + resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} + dependencies: + es-get-iterator: 1.1.2 + iterate-iterator: 1.0.2 + dev: true + + /jake/10.8.5: + resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.4 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jasmine-core/3.99.1: + resolution: {integrity: sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==} + dev: true + + /jasmine/3.99.0: + resolution: {integrity: sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==} + hasBin: true + dependencies: + glob: 7.2.3 + jasmine-core: 3.99.1 + dev: true + + /jest-changed-files/26.6.2: + resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + execa: 4.1.0 + throat: 5.0.0 + dev: true + + /jest-circus/26.6.0_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/traverse': 7.18.6 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/babel__traverse': 7.17.1 + '@types/node': 18.0.3 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runner: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-runtime: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + stack-utils: 2.0.5 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-cli/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3_canvas@2.9.3+ts-node@9.1.1 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + is-ci: 2.0.0 + jest-config: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-cli/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3_ts-node@9.1.1 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + is-ci: 2.0.0 + jest-config: 26.6.3_ts-node@9.1.1 + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-config/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} + engines: {node: '>= 10.14.2'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@jest/test-sequencer': 26.6.3_canvas@2.9.3+ts-node@9.1.1 + '@jest/types': 26.6.2 + babel-jest: 26.6.3_@babel+core@7.18.6 + chalk: 4.1.2 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-environment-jsdom: 26.6.2_canvas@2.9.3 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.5 + pretty-format: 26.6.2 + ts-node: 9.1.1_typescript@4.4.4 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-config/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} + engines: {node: '>= 10.14.2'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@jest/test-sequencer': 26.6.3_ts-node@9.1.1 + '@jest/types': 26.6.2 + babel-jest: 26.6.3_@babel+core@7.18.6 + chalk: 4.1.2 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-environment-jsdom: 26.6.2 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3_ts-node@9.1.1 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.5 + pretty-format: 26.6.2 + ts-node: 9.1.1_typescript@4.4.4 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-diff/26.6.2: + resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} + engines: {node: '>= 10.14.2'} + dependencies: + chalk: 4.1.2 + diff-sequences: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-diff/28.1.1: + resolution: {integrity: sha512-/MUUxeR2fHbqHoMMiffe/Afm+U8U4olFRJ0hiVG2lZatPJcnGxx292ustVu7bULhjV65IYMxRdploAKLbcrsyg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.1 + dev: true + + /jest-docblock/26.0.0: + resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} + engines: {node: '>= 10.14.2'} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each/26.6.2: + resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + jest-get-type: 26.3.0 + jest-util: 26.6.2 + pretty-format: 26.6.2 + dev: true + + /jest-environment-jsdom/26.6.2: + resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + jest-mock: 26.6.2 + jest-util: 26.6.2 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-environment-jsdom/26.6.2_canvas@2.9.3: + resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + jest-mock: 26.6.2 + jest-util: 26.6.2 + jsdom: 16.7.0_canvas@2.9.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node/26.6.2: + resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + jest-mock: 26.6.2 + jest-util: 26.6.2 + dev: true + + /jest-get-type/26.3.0: + resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} + engines: {node: '>= 10.14.2'} + dev: true + + /jest-get-type/28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-haste-map/26.6.2: + resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/graceful-fs': 4.1.5 + '@types/node': 18.0.3 + anymatch: 3.1.2 + fb-watchman: 2.0.1 + graceful-fs: 4.2.10 + jest-regex-util: 26.0.0 + jest-serializer: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + micromatch: 4.0.5 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-jasmine2/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/traverse': 7.18.6 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-jasmine2/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/traverse': 7.18.6 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3_ts-node@9.1.1 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-leak-detector/26.6.2: + resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} + engines: {node: '>= 10.14.2'} + dependencies: + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-matcher-utils/26.6.2: + resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} + engines: {node: '>= 10.14.2'} + dependencies: + chalk: 4.1.2 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + dev: true + + /jest-matcher-utils/28.1.1: + resolution: {integrity: sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 28.1.1 + jest-get-type: 28.0.2 + pretty-format: 28.1.1 + dev: true + + /jest-message-util/26.6.2: + resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 26.6.2 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 26.6.2 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + + /jest-message-util/28.1.1: + resolution: {integrity: sha512-xoDOOT66fLfmTRiqkoLIU7v42mal/SqwDKvfmfiWAdJMSJiU+ozgluO7KbvoAgiwIrrGZsV7viETjc8GNrA/IQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 28.1.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 28.1.1 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + + /jest-mock/26.6.2: + resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + dev: true + + /jest-pnp-resolver/1.2.2_jest-resolve@26.6.0: + resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 26.6.0 + dev: true + + /jest-pnp-resolver/1.2.2_jest-resolve@26.6.2: + resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 26.6.2 + dev: true + + /jest-regex-util/26.0.0: + resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} + engines: {node: '>= 10.14.2'} + dev: true + + /jest-resolve-dependencies/26.6.3: + resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + jest-regex-util: 26.0.0 + jest-snapshot: 26.6.2 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve/26.6.0: + resolution: {integrity: sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-pnp-resolver: 1.2.2_jest-resolve@26.6.0 + jest-util: 26.6.2 + read-pkg-up: 7.0.1 + resolve: 1.22.1 + slash: 3.0.0 + dev: true + + /jest-resolve/26.6.2: + resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-pnp-resolver: 1.2.2_jest-resolve@26.6.2 + jest-util: 26.6.2 + read-pkg-up: 7.0.1 + resolve: 1.22.1 + slash: 3.0.0 + dev: true + + /jest-runner/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-config: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runner/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-config: 26.6.3_ts-node@9.1.1 + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3_ts-node@9.1.1 + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runtime/26.6.3_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.14 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-config: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-runtime/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.14 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-config: 26.6.3_ts-node@9.1.1 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest-serializer/26.6.2: + resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/node': 18.0.3 + graceful-fs: 4.2.10 + dev: true + + /jest-snapshot/26.6.2: + resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} + engines: {node: '>= 10.14.2'} + dependencies: + '@babel/types': 7.18.7 + '@jest/types': 26.6.2 + '@types/babel__traverse': 7.17.1 + '@types/prettier': 2.6.3 + chalk: 4.1.2 + expect: 26.6.2 + graceful-fs: 4.2.10 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + jest-haste-map: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + natural-compare: 1.4.0 + pretty-format: 26.6.2 + semver: 7.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util/26.6.2: + resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.10 + is-ci: 2.0.0 + micromatch: 4.0.5 + dev: true + + /jest-util/28.1.1: + resolution: {integrity: sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.1 + '@types/node': 18.0.3 + chalk: 4.1.2 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate/26.6.2: + resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 26.3.0 + leven: 3.1.0 + pretty-format: 26.6.2 + dev: true + + /jest-watch-typeahead/0.6.1_jest@26.6.0: + resolution: {integrity: sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==} + engines: {node: '>=10'} + peerDependencies: + jest: ^26.0.0 + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest: 26.6.0_canvas@2.9.3+ts-node@9.1.1 + jest-regex-util: 26.0.0 + jest-watcher: 26.6.2 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + dev: true + + /jest-watcher/26.6.2: + resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 18.0.3 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 26.6.2 + string-length: 4.0.2 + dev: true + + /jest-worker/24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + dev: true + + /jest-worker/26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.0.3 + merge-stream: 2.0.0 + supports-color: 7.2.0 + dev: true + + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.0.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/26.6.0_canvas@2.9.3+ts-node@9.1.1: + resolution: {integrity: sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3_canvas@2.9.3+ts-node@9.1.1 + import-local: 3.1.0 + jest-cli: 26.6.3_canvas@2.9.3+ts-node@9.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jest/26.6.3_ts-node@9.1.1: + resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} + engines: {node: '>= 10.14.2'} + hasBin: true + dependencies: + '@jest/core': 26.6.3_ts-node@9.1.1 + import-local: 3.1.0 + jest-cli: 26.6.3_ts-node@9.1.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + dev: true + + /jpeg-js/0.4.2: + resolution: {integrity: sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==} + + /js-sha256/0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + + /js-string-escape/1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom/16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.7.1 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.3.1 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.1 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.0.0 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.8 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsdom/16.7.0_canvas@2.9.3: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.7.1 + acorn-globals: 6.0.0 + canvas: 2.9.3 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.3.1 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.1 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.0.0 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.8 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-buffer/3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-ref-parser/9.0.9: + resolution: {integrity: sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==} + engines: {node: '>=10'} + dependencies: + '@apidevtools/json-schema-ref-parser': 9.0.9 + dev: true + + /json-schema-to-typescript/10.1.5: + resolution: {integrity: sha512-X8bNNksfCQo6LhEuqNxmZr4eZpPjXZajmimciuk8eWXzZlif9Brq7WuMGD/SOhBKcRKP2SGVDNZbC28WQqx9Rg==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + '@types/json-schema': 7.0.11 + '@types/lodash': 4.14.182 + '@types/prettier': 2.6.3 + cli-color: 2.0.3 + get-stdin: 8.0.0 + glob: 7.2.3 + glob-promise: 3.4.0_glob@7.2.3 + is-glob: 4.0.3 + json-schema-ref-parser: 9.0.9 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + minimist: 1.2.6 + mkdirp: 1.0.4 + mz: 2.7.0 + prettier: 2.7.1 + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + hasBin: true + dependencies: + minimist: 1.2.6 + dev: true + + /json5/2.2.1: + resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jss-plugin-camel-case/10.9.0: + resolution: {integrity: sha512-UH6uPpnDk413/r/2Olmw4+y54yEF2lRIV8XIZyuYpgPYTITLlPOsq6XB9qeqv+75SQSg3KLocq5jUBXW8qWWww==} + dependencies: + '@babel/runtime': 7.18.6 + hyphenate-style-name: 1.0.4 + jss: 10.9.0 + dev: false + + /jss-plugin-default-unit/10.9.0: + resolution: {integrity: sha512-7Ju4Q9wJ/MZPsxfu4T84mzdn7pLHWeqoGd/D8O3eDNNJ93Xc8PxnLmV8s8ZPNRYkLdxZqKtm1nPQ0BM4JRlq2w==} + dependencies: + '@babel/runtime': 7.18.6 + jss: 10.9.0 + dev: false + + /jss-plugin-global/10.9.0: + resolution: {integrity: sha512-4G8PHNJ0x6nwAFsEzcuVDiBlyMsj2y3VjmFAx/uHk/R/gzJV+yRHICjT4MKGGu1cJq2hfowFWCyrr/Gg37FbgQ==} + dependencies: + '@babel/runtime': 7.18.6 + jss: 10.9.0 + dev: false + + /jss-plugin-nested/10.9.0: + resolution: {integrity: sha512-2UJnDrfCZpMYcpPYR16oZB7VAC6b/1QLsRiAutOt7wJaaqwCBvNsosLEu/fUyKNQNGdvg2PPJFDO5AX7dwxtoA==} + dependencies: + '@babel/runtime': 7.18.6 + jss: 10.9.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-props-sort/10.9.0: + resolution: {integrity: sha512-7A76HI8bzwqrsMOJTWKx/uD5v+U8piLnp5bvru7g/3ZEQOu1+PjHvv7bFdNO3DwNPC9oM0a//KwIJsIcDCjDzw==} + dependencies: + '@babel/runtime': 7.18.6 + jss: 10.9.0 + dev: false + + /jss-plugin-rule-value-function/10.9.0: + resolution: {integrity: sha512-IHJv6YrEf8pRzkY207cPmdbBstBaE+z8pazhPShfz0tZSDtRdQua5jjg6NMz3IbTasVx9FdnmptxPqSWL5tyJg==} + dependencies: + '@babel/runtime': 7.18.6 + jss: 10.9.0 + tiny-warning: 1.0.3 + dev: false + + /jss-plugin-vendor-prefixer/10.9.0: + resolution: {integrity: sha512-MbvsaXP7iiVdYVSEoi+blrW+AYnTDvHTW6I6zqi7JcwXdc6I9Kbm234nEblayhF38EftoenbM+5218pidmC5gA==} + dependencies: + '@babel/runtime': 7.18.6 + css-vendor: 2.0.8 + jss: 10.9.0 + dev: false + + /jss/10.9.0: + resolution: {integrity: sha512-YpzpreB6kUunQBbrlArlsMpXYyndt9JATbt95tajx0t4MTJJcCJdd4hdNpHmOIDiUJrF/oX5wtVFrS3uofWfGw==} + dependencies: + '@babel/runtime': 7.18.6 + csstype: 3.1.0 + is-in-browser: 1.1.3 + tiny-warning: 1.0.3 + dev: false + + /jsx-ast-utils/3.3.2: + resolution: {integrity: sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.5 + object.assign: 4.1.2 + dev: true + + /junk/3.1.0: + resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} + engines: {node: '>=8'} + dev: true + + /karma-browserstack-launcher/1.6.0_karma@6.4.0: + resolution: {integrity: sha512-Y/UWPdHZkHIVH2To4GWHCTzmrsB6H7PBWy6pw+TWz5sr4HW2mcE+Uj6qWgoVNxvQU1Pfn5LQQzI6EQ65p8QbiQ==} + peerDependencies: + karma: '>=0.9' + dependencies: + browserstack: 1.5.3 + browserstack-local: 1.5.1 + karma: 6.4.0_debug@4.3.4 + q: 1.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /karma-chrome-launcher/3.1.1: + resolution: {integrity: sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==} + dependencies: + which: 1.3.1 + dev: true + + /karma-coverage/2.2.0: + resolution: {integrity: sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==} + engines: {node: '>=10.0.0'} + dependencies: + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.0 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /karma-jasmine/4.0.2_karma@6.4.0: + resolution: {integrity: sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==} + engines: {node: '>= 10'} + peerDependencies: + karma: '*' + dependencies: + jasmine-core: 3.99.1 + karma: 6.4.0_debug@4.3.4 + dev: true + + /karma-source-map-support/1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /karma-webpack/4.0.2_webpack@4.46.0: + resolution: {integrity: sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + clone-deep: 4.0.1 + loader-utils: 1.4.0 + neo-async: 2.6.2 + schema-utils: 1.0.0 + source-map: 0.7.4 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-dev-middleware: 3.7.3_webpack@4.46.0 + dev: true + + /karma/6.4.0_debug@4.3.4: + resolution: {integrity: sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.0 + braces: 3.0.2 + chokidar: 3.5.3 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + http-proxy: 1.18.1_debug@4.3.4 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.6.0 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.5.1 + source-map: 0.6.1 + tmp: 0.2.1 + ua-parser-js: 0.7.31 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /keycloak-js/11.0.3: + resolution: {integrity: sha512-e2OVyCiru25UhJz3aPj5irf//+vJzvAhHdcsCIWAcvF8Te22iUoZqEdNFji8D3zNzDehX4VpuIJwQOYCj6rqTA==} + dependencies: + base64-js: 1.3.1 + js-sha256: 0.9.0 + + /keyv/4.3.2: + resolution: {integrity: sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==} + dependencies: + compress-brotli: 1.3.8 + json-buffer: 3.0.1 + dev: true + + /killable/1.0.1: + resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} + dev: true + + /kind-of/3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: true + + /kind-of/5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: true + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /klona/2.0.5: + resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} + engines: {node: '>= 8'} + dev: true + + /ky/0.28.7: + resolution: {integrity: sha512-a23i6qSr/ep15vdtw/zyEQIDLoUaKDg9Jf04CYl/0ns/wXNYna26zJpI+MeIFaPeDvkrjLPrKtKOiiI3IE53RQ==} + engines: {node: '>=12'} + dev: true + + /language-subtag-registry/0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: true + + /language-tags/1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + dependencies: + language-subtag-registry: 0.3.22 + dev: true + + /last-call-webpack-plugin/3.0.0: + resolution: {integrity: sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==} + dependencies: + lodash: 4.17.21 + webpack-sources: 1.4.3 + dev: true + + /lazy-universal-dotenv/3.0.1: + resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} + engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} + dependencies: + '@babel/runtime': 7.18.6 + app-root-dir: 1.0.2 + core-js: 3.23.3 + dotenv: 8.6.0 + dotenv-expand: 5.1.0 + dev: true + + /lazystream/1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.7 + dev: true + + /leaflet/1.8.0: + resolution: {integrity: sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA==} + + /leven/3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lighthouse-logger/1.3.0: + resolution: {integrity: sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==} + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + dev: true + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lint-staged/10.5.4: + resolution: {integrity: sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==} + hasBin: true + dependencies: + chalk: 4.1.2 + cli-truncate: 2.1.0 + commander: 6.2.1 + cosmiconfig: 7.0.1 + debug: 4.3.4 + dedent: 0.7.0 + enquirer: 2.3.6 + execa: 4.1.0 + listr2: 3.14.0_enquirer@2.3.6 + log-symbols: 4.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + please-upgrade-node: 3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2/3.14.0_enquirer@2.3.6: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.19 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.5 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /load-bmfont/1.4.1: + resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.4 + phin: 2.9.3 + xhr: 2.6.0 + xtend: 4.0.2 + + /load-json-file/1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} + dependencies: + graceful-fs: 4.2.10 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + dev: true + + /loader-runner/2.4.0: + resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dev: true + + /loader-utils/1.2.3: + resolution: {integrity: sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 2.1.0 + json5: 1.0.1 + dev: true + + /loader-utils/1.4.0: + resolution: {integrity: sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==} + engines: {node: '>=4.0.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.1 + dev: true + + /loader-utils/2.0.0: + resolution: {integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.1 + dev: true + + /loader-utils/2.0.2: + resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.1 + dev: true + + /locate-path/2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash._reinterpolate/3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} + dev: true + + /lodash.clonedeep/4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: true + + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.defaults/4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: true + + /lodash.difference/4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: true + + /lodash.flatten/4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: true + + /lodash.flattendeep/4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + + /lodash.isequal/4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + /lodash.isobject/3.0.2: + resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==} + dev: true + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.memoize/4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.pickby/4.6.0: + resolution: {integrity: sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==} + dev: true + + /lodash.template/4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: true + + /lodash.templatesettings/4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + dependencies: + lodash._reinterpolate: 3.0.0 + dev: true + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.union/4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.zip/4.2.0: + resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /log4js/6.6.0: + resolution: {integrity: sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.11 + debug: 4.3.4 + flatted: 3.2.6 + rfdc: 1.3.0 + streamroller: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /loglevel-plugin-prefix/0.8.4: + resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==} + dev: true + + /loglevel/1.8.0: + resolution: {integrity: sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==} + engines: {node: '>= 0.6.0'} + dev: true + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loud-rejection/1.6.0: + resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} + engines: {node: '>=0.10.0'} + dependencies: + currently-unhandled: 0.4.1 + signal-exit: 3.0.7 + dev: true + optional: true + + /lower-case/2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.4.0 + dev: true + + /lowercase-keys/2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + + /lowlight/1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + dependencies: + fault: 1.0.4 + highlight.js: 10.7.3 + dev: true + + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lru-queue/0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + dependencies: + es5-ext: 0.10.61 + dev: true + + /lz-string/1.4.4: + resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + hasBin: true + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /map-cache/0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-or-similar/1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + dev: true + + /map-stream/0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + dev: true + + /map-visit/1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: true + + /markdown-escapes/1.0.4: + resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} + dev: true + + /marky/1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: true + + /md5.js/1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdast-squeeze-paragraphs/4.0.0: + resolution: {integrity: sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==} + dependencies: + unist-util-remove: 2.1.0 + dev: true + + /mdast-util-definitions/4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + dependencies: + unist-util-visit: 2.0.3 + dev: true + + /mdast-util-to-hast/10.0.1: + resolution: {integrity: sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + mdast-util-definitions: 4.0.0 + mdurl: 1.0.1 + unist-builder: 2.0.3 + unist-util-generated: 1.1.6 + unist-util-position: 3.1.0 + unist-util-visit: 2.0.3 + dev: true + + /mdast-util-to-string/1.1.0: + resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /mdn-data/2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + dev: true + + /mdurl/1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + + /media-typer/0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs/3.4.7: + resolution: {integrity: sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + dev: true + + /memoize-one/5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + /memoizee/0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.61 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + dev: true + + /memoizerific/1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + dependencies: + map-or-similar: 1.5.0 + dev: true + + /memory-fs/0.4.1: + resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /memory-fs/0.5.0: + resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + dependencies: + errno: 0.1.8 + readable-stream: 2.3.7 + dev: true + + /meow/3.7.0: + resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} + engines: {node: '>=0.10.0'} + dependencies: + camelcase-keys: 2.1.0 + decamelize: 1.2.0 + loud-rejection: 1.6.0 + map-obj: 1.0.1 + minimist: 1.2.6 + normalize-package-data: 2.5.0 + object-assign: 4.1.1 + read-pkg-up: 1.0.1 + redent: 1.0.0 + trim-newlines: 1.0.0 + dev: true + optional: true + + /merge-anything/2.4.4: + resolution: {integrity: sha512-l5XlriUDJKQT12bH+rVhAHjwIuXWdAIecGwsYjv2LJo+dA1AeRTmeQS+3QBpO6lEthBMDi2IUMpLC1yyRvGlwQ==} + dependencies: + is-what: 3.14.1 + dev: true + + /merge-descriptors/1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-source-map/1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + dependencies: + source-map: 0.6.1 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods/1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /microevent.ts/0.1.1: + resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} + dev: true + + /micromatch/3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/3.1.10_supports-color@6.1.0: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2_supports-color@6.1.0 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4_supports-color@6.1.0 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13_supports-color@6.1.0 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /miller-rabin/4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /mime-db/1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.33.0 + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime/2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-response/1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response/2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + dev: true + + /mimic-response/3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /min-document/2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /mini-create-react-context/0.4.1_at7mkepldmzoo6silmqc5bca74: + resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.18.6 + prop-types: 15.8.1 + react: 17.0.2 + tiny-warning: 1.0.3 + + /mini-css-extract-plugin/0.11.3_webpack@4.44.2: + resolution: {integrity: sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.4.0 || ^5.0.0 + dependencies: + loader-utils: 1.4.0 + normalize-url: 1.9.1 + schema-utils: 1.0.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + dev: true + + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch/3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/4.2.1: + resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + + /minipass-collect/1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass-flush/1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass-pipeline/1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.4 + dev: true + + /minipass/3.3.4: + resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + yallist: 4.0.0 + dev: true + + /mississippi/3.0.0: + resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} + engines: {node: '>=4.0.0'} + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.0 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + dev: true + + /mixin-deep/1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: true + + /mkdirp-classic/0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.6 + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mocha/9.2.2: + resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} + engines: {node: '>= 12.0.0'} + hasBin: true + dependencies: + '@ungap/promise-all-settled': 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.3_supports-color@8.1.1 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 4.2.1 + ms: 2.1.3 + nanoid: 3.3.1 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + workerpool: 6.2.0 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /move-concurrently/1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.6.3 + run-queue: 1.0.3 + dev: true + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms/2.1.1: + resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multicast-dns-service-types/1.1.0: + resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} + dev: true + + /multicast-dns/6.2.3: + resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} + hasBin: true + dependencies: + dns-packet: 1.3.4 + thunky: 1.1.0 + dev: true + + /mute-stream/0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nan/2.16.0: + resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} + requiresBuild: true + dev: true + + /nanoid/3.3.1: + resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /nanomatch/1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /nanomatch/1.2.13_supports-color@6.1.0: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2_supports-color@6.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /native-url/0.2.6: + resolution: {integrity: sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==} + dependencies: + querystring: 0.2.1 + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nested-error-stacks/2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + dev: true + + /next-tick/1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: true + + /nice-try/1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true + + /no-case/3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.4.0 + dev: true + + /node-dir/0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + dev: true + + /node-fetch/2.6.1: + resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} + engines: {node: 4.x || >=6.0.0} + dev: true + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-forge/0.10.0: + resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} + engines: {node: '>= 6.0.0'} + dev: true + + /node-int64/0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-libs-browser/2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-notifier/8.0.2: + resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} + requiresBuild: true + dependencies: + growly: 1.3.0 + is-wsl: 2.2.0 + semver: 7.3.7 + shellwords: 0.1.1 + uuid: 8.3.2 + which: 2.0.2 + dev: true + optional: true + + /node-releases/1.1.77: + resolution: {integrity: sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==} + dev: true + + /node-releases/2.0.5: + resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} + + /node-vibrant/3.1.6: + resolution: {integrity: sha512-Wlc/hQmBMOu6xon12ZJHS2N3M+I6J8DhrD3Yo6m5175v8sFkVIN+UjhKVRcO+fqvre89ASTpmiFEP3nPO13SwA==} + dependencies: + '@jimp/custom': 0.16.1 + '@jimp/plugin-resize': 0.16.1_@jimp+custom@0.16.1 + '@jimp/types': 0.16.1_@jimp+custom@0.16.1 + '@types/lodash': 4.14.182 + '@types/node': 10.17.60 + lodash: 4.17.21 + url: 0.11.0 + + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url/1.9.1: + resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==} + engines: {node: '>=4'} + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + dev: true + + /normalize-url/3.3.0: + resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} + engines: {node: '>=6'} + dev: true + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-run-path/2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npmlog/5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: true + + /nth-check/1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + dependencies: + boolbase: 1.0.0 + dev: true + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + dev: true + + /nwsapi/2.2.1: + resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-copy/0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: true + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object-visit/1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.assign/4.1.2: + resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries/1.1.5: + resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /object.fromentries/2.0.5: + resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /object.getownpropertydescriptors/2.1.4: + resolution: {integrity: sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.4 + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /object.hasown/1.1.1: + resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} + dependencies: + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /object.pick/1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /object.values/1.1.5: + resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /objectorarray/1.0.5: + resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + dev: true + + /obuf/1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /omggif/1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-finished/2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /opn/5.5.0: + resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} + engines: {node: '>=4'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /optimize-css-assets-webpack-plugin/5.0.4_webpack@4.44.2: + resolution: {integrity: sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cssnano: 4.1.11 + last-call-webpack-plugin: 3.0.0 + webpack: 4.44.2 + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /ora/5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-browserify/0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + + /os-homedir/1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-all/2.1.0: + resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==} + engines: {node: '>=6'} + dependencies: + p-map: 2.1.0 + dev: true + + /p-cancelable/2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-each-series/2.2.0: + resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} + engines: {node: '>=8'} + dev: true + + /p-event/4.2.0: + resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} + engines: {node: '>=8'} + dependencies: + p-timeout: 3.2.0 + dev: true + + /p-filter/2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + dependencies: + p-map: 2.1.0 + dev: true + + /p-finally/1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-iteration/1.1.8: + resolution: {integrity: sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==} + engines: {node: '>=8.0.0'} + dev: true + + /p-limit/1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map/2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true + + /p-map/3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry/3.0.1: + resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} + engines: {node: '>=6'} + dependencies: + retry: 0.12.0 + dev: true + + /p-timeout/3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-try/1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + /parallel-transform/1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + dependencies: + cyclist: 1.0.1 + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /param-case/3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-asn1/5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + + /parse-bmfont-ascii/1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + /parse-bmfont-binary/1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + /parse-bmfont-xml/1.1.4: + resolution: {integrity: sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==} + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.4.23 + + /parse-entities/2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-headers/2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + /parse-json/2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + dependencies: + error-ex: 1.3.2 + dev: true + + /parse-json/4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse-ms/2.1.0: + resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==} + engines: {node: '>=6'} + dev: true + + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: true + + /parseqs/0.0.6: + resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==} + dev: false + + /parseuri/0.0.6: + resolution: {integrity: sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==} + dev: false + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case/3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.0 + dev: true + + /pascalcase/0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true + + /path-browserify/0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: true + + /path-dirname/1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + dev: true + + /path-exists/2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie-promise: 2.0.1 + dev: true + + /path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-is-inside/1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key/2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-to-regexp/0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-to-regexp/1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + dependencies: + isarray: 0.0.1 + + /path-to-regexp/2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + dev: true + + /path-type/1.1.0: + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} + engines: {node: '>=0.10.0'} + dependencies: + graceful-fs: 4.2.10 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /path-type/3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pause-stream/0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + dependencies: + through: 2.3.8 + dev: true + + /pbkdf2/3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /pend/1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /phin/2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + + /picocolors/0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify/3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates/4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pixelmatch/4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + dependencies: + pngjs: 3.4.0 + + /pkg-dir/3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: true + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pkg-dir/5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + dev: true + + /pkg-up/3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: true + + /please-upgrade-node/3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + dependencies: + semver-compare: 1.0.0 + dev: true + + /pngjs/3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + /pnp-webpack-plugin/1.6.4_typescript@4.4.4: + resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0_typescript@4.4.4 + transitivePeerDependencies: + - typescript + dev: true + + /pnp-webpack-plugin/1.7.0_typescript@4.4.4: + resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} + engines: {node: '>=6'} + dependencies: + ts-pnp: 1.2.0_typescript@4.4.4 + transitivePeerDependencies: + - typescript + dev: true + + /polished/4.2.2: + resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + engines: {node: '>=10'} + dependencies: + '@babel/runtime': 7.18.6 + dev: true + + /portfinder/1.0.28_supports-color@6.1.0: + resolution: {integrity: sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==} + engines: {node: '>= 0.12.0'} + dependencies: + async: 2.6.4 + debug: 3.2.7_supports-color@6.1.0 + mkdirp: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /posix-character-classes/0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true + + /postcss-attribute-case-insensitive/4.0.2: + resolution: {integrity: sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-browser-comments/3.0.0_browserslist@4.21.1: + resolution: {integrity: sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==} + engines: {node: '>=8.0.0'} + peerDependencies: + browserslist: ^4 + dependencies: + browserslist: 4.21.1 + postcss: 7.0.39 + dev: true + + /postcss-calc/7.0.5: + resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation/2.0.1: + resolution: {integrity: sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-color-gray/5.0.0: + resolution: {integrity: sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-color-hex-alpha/5.0.3: + resolution: {integrity: sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-color-mod-function/3.0.3: + resolution: {integrity: sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-color-rebeccapurple/4.0.1: + resolution: {integrity: sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-colormin/4.0.3: + resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.21.1 + color: 3.2.1 + has: 1.0.3 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-convert-values/4.0.1: + resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-custom-media/7.0.8: + resolution: {integrity: sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-custom-properties/8.0.11: + resolution: {integrity: sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-custom-selectors/5.1.2: + resolution: {integrity: sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 5.0.0 + dev: true + + /postcss-dir-pseudo-class/5.0.0: + resolution: {integrity: sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==} + engines: {node: '>=4.0.0'} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 5.0.0 + dev: true + + /postcss-discard-comments/4.0.2: + resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-discard-duplicates/4.0.2: + resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-discard-empty/4.0.1: + resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-discard-overridden/4.0.1: + resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-double-position-gradients/1.0.0: + resolution: {integrity: sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-env-function/2.0.2: + resolution: {integrity: sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-flexbugs-fixes/4.2.1: + resolution: {integrity: sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-focus-visible/4.0.0: + resolution: {integrity: sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-focus-within/3.0.0: + resolution: {integrity: sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-font-variant/4.0.1: + resolution: {integrity: sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-gap-properties/2.0.0: + resolution: {integrity: sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-image-set-function/3.0.1: + resolution: {integrity: sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-initial/3.0.4: + resolution: {integrity: sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-lab-function/2.0.1: + resolution: {integrity: sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/convert-colors': 1.4.0 + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-load-config/2.1.2: + resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} + engines: {node: '>= 4'} + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + dev: true + + /postcss-loader/3.0.0: + resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} + engines: {node: '>= 6'} + dependencies: + loader-utils: 1.4.0 + postcss: 7.0.39 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + dev: true + + /postcss-loader/4.3.0_gzaxsinx64nntyd3vmdqwl7coe: + resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cosmiconfig: 7.0.1 + klona: 2.0.5 + loader-utils: 2.0.2 + postcss: 7.0.39 + schema-utils: 3.1.1 + semver: 7.3.7 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /postcss-logical/3.0.0: + resolution: {integrity: sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-media-minmax/4.0.0: + resolution: {integrity: sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-merge-longhand/4.0.11: + resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} + engines: {node: '>=6.9.0'} + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + dev: true + + /postcss-merge-rules/4.0.3: + resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.21.1 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + dev: true + + /postcss-minify-font-values/4.0.2: + resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-gradients/4.0.2: + resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-minify-params/4.0.2: + resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.21.1 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + dev: true + + /postcss-minify-selectors/4.0.2: + resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.3 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + dev: true + + /postcss-modules-extract-imports/2.0.0: + resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-modules-extract-imports/3.0.0_postcss@8.4.14: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-modules-local-by-default/3.0.3: + resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} + engines: {node: '>= 6'} + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.39 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-local-by-default/4.0.0_postcss@8.4.14: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope/2.2.0: + resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} + engines: {node: '>= 6'} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-modules-scope/3.0.0_postcss@8.4.14: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-modules-values/3.0.0: + resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.39 + dev: true + + /postcss-modules-values/4.0.0_postcss@8.4.14: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.14 + postcss: 8.4.14 + dev: true + + /postcss-nesting/7.0.1: + resolution: {integrity: sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-normalize-charset/4.0.1: + resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-normalize-display-values/4.0.2: + resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-positions/4.0.2: + resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.3 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-repeat-style/4.0.2: + resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-string/4.0.2: + resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} + engines: {node: '>=6.9.0'} + dependencies: + has: 1.0.3 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-timing-functions/4.0.2: + resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-unicode/4.0.1: + resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.21.1 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-url/4.0.1: + resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} + engines: {node: '>=6.9.0'} + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize-whitespace/4.0.2: + resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-normalize/8.0.1: + resolution: {integrity: sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@csstools/normalize.css': 10.1.0 + browserslist: 4.21.1 + postcss: 7.0.39 + postcss-browser-comments: 3.0.0_browserslist@4.21.1 + sanitize.css: 10.0.0 + dev: true + + /postcss-ordered-values/4.1.2: + resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-overflow-shorthand/2.0.0: + resolution: {integrity: sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-page-break/2.0.0: + resolution: {integrity: sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-place/4.0.1: + resolution: {integrity: sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-values-parser: 2.0.1 + dev: true + + /postcss-preset-env/6.7.0: + resolution: {integrity: sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==} + engines: {node: '>=6.0.0'} + dependencies: + autoprefixer: 9.8.8 + browserslist: 4.21.1 + caniuse-lite: 1.0.30001363 + css-blank-pseudo: 0.1.4 + css-has-pseudo: 0.10.0 + css-prefers-color-scheme: 3.1.1 + cssdb: 4.4.0 + postcss: 7.0.39 + postcss-attribute-case-insensitive: 4.0.2 + postcss-color-functional-notation: 2.0.1 + postcss-color-gray: 5.0.0 + postcss-color-hex-alpha: 5.0.3 + postcss-color-mod-function: 3.0.3 + postcss-color-rebeccapurple: 4.0.1 + postcss-custom-media: 7.0.8 + postcss-custom-properties: 8.0.11 + postcss-custom-selectors: 5.1.2 + postcss-dir-pseudo-class: 5.0.0 + postcss-double-position-gradients: 1.0.0 + postcss-env-function: 2.0.2 + postcss-focus-visible: 4.0.0 + postcss-focus-within: 3.0.0 + postcss-font-variant: 4.0.1 + postcss-gap-properties: 2.0.0 + postcss-image-set-function: 3.0.1 + postcss-initial: 3.0.4 + postcss-lab-function: 2.0.1 + postcss-logical: 3.0.0 + postcss-media-minmax: 4.0.0 + postcss-nesting: 7.0.1 + postcss-overflow-shorthand: 2.0.0 + postcss-page-break: 2.0.0 + postcss-place: 4.0.1 + postcss-pseudo-class-any-link: 6.0.0 + postcss-replace-overflow-wrap: 3.0.0 + postcss-selector-matches: 4.0.0 + postcss-selector-not: 4.0.1 + dev: true + + /postcss-pseudo-class-any-link/6.0.0: + resolution: {integrity: sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 5.0.0 + dev: true + + /postcss-reduce-initial/4.0.3: + resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.21.1 + caniuse-api: 3.0.0 + has: 1.0.3 + postcss: 7.0.39 + dev: true + + /postcss-reduce-transforms/4.0.2: + resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} + engines: {node: '>=6.9.0'} + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.3 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + dev: true + + /postcss-replace-overflow-wrap/3.0.0: + resolution: {integrity: sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-safe-parser/5.0.2: + resolution: {integrity: sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==} + engines: {node: '>=10.0'} + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-selector-matches/4.0.0: + resolution: {integrity: sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==} + dependencies: + balanced-match: 1.0.2 + postcss: 7.0.39 + dev: true + + /postcss-selector-not/4.0.1: + resolution: {integrity: sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==} + dependencies: + balanced-match: 1.0.2 + postcss: 7.0.39 + dev: true + + /postcss-selector-parser/3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss-selector-parser/5.0.0: + resolution: {integrity: sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 2.0.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo/4.0.3: + resolution: {integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==} + engines: {node: '>=6.9.0'} + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + dev: true + + /postcss-unique-selectors/4.0.1: + resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} + engines: {node: '>=6.9.0'} + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.39 + uniqs: 2.0.0 + dev: true + + /postcss-value-parser/3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss-values-parser/2.0.1: + resolution: {integrity: sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==} + engines: {node: '>=6.14.4'} + dependencies: + flatten: 1.0.3 + indexes-of: 1.0.1 + uniq: 1.0.1 + dev: true + + /postcss/7.0.36: + resolution: {integrity: sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==} + engines: {node: '>=6.0.0'} + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + dev: true + + /postcss/7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + dev: true + + /postcss/8.4.14: + resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prepend-http/1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + dev: true + + /prettier/2.3.0: + resolution: {integrity: sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /prettier/2.7.1: + resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-bytes/5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /pretty-error/2.1.2: + resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} + dependencies: + lodash: 4.17.21 + renderkid: 2.0.7 + dev: true + + /pretty-format/26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: true + + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format/28.1.1: + resolution: {integrity: sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.0.2 + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /pretty-hrtime/1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + dev: true + + /pretty-ms/7.0.1: + resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==} + engines: {node: '>=10'} + dependencies: + parse-ms: 2.1.0 + dev: true + + /prismjs/1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + dev: true + + /prismjs/1.28.0: + resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==} + engines: {node: '>=6'} + dev: true + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + /progress/2.0.1: + resolution: {integrity: sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==} + engines: {node: '>=0.4.0'} + dev: true + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise-inflight/1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-inflight/1.0.1_bluebird@3.7.2: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dependencies: + bluebird: 3.7.2 + dev: true + + /promise.allsettled/1.0.5: + resolution: {integrity: sha512-tVDqeZPoBC0SlzJHzWGZ2NKAguVq2oiYj7gbggbiTvH2itHohijTp7njOUA0aQ/nl+0lr/r6egmhoYu63UZ/pQ==} + engines: {node: '>= 0.4'} + dependencies: + array.prototype.map: 1.0.4 + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + iterate-value: 1.0.2 + dev: true + + /promise.prototype.finally/3.1.3: + resolution: {integrity: sha512-EXRF3fC9/0gz4qkt/f5EP5iW4kj9oFpBICNpCNOb/52+8nlHIX07FPLbi/q4qYBQ1xZqivMzTpNQSnArVASolQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /promise/8.1.0: + resolution: {integrity: sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==} + dependencies: + asap: 2.0.6 + dev: true + + /prompts/2.4.0: + resolution: {integrity: sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /property-information/5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + dependencies: + xtend: 4.0.2 + dev: true + + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-from-env/1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + + /ps-tree/1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + dependencies: + event-stream: 3.3.4 + dev: true + + /pseudomap/1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /public-encrypt/4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /pumpify/1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + dev: true + + /punycode/1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + + /punycode/1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + /puppeteer-core/10.4.0: + resolution: {integrity: sha512-KU8zyb7AIOqNjLCN3wkrFXxh+EVaG+zrs2P03ATNjc3iwSxHsu5/EvZiREpQ/IJiT9xfQbDVgKcsvRuzLCxglQ==} + engines: {node: '>=10.18.1'} + dependencies: + debug: 4.3.1 + devtools-protocol: 0.0.901419 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.0 + node-fetch: 2.6.1 + pkg-dir: 4.2.0 + progress: 2.0.1 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.0.0 + unbzip2-stream: 1.3.3 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /puppeteer/15.3.1: + resolution: {integrity: sha512-Z+SpYBiS1zUzMXV7Wnhe2pyuVCFAFRTq1UrUWHB2CkLos5v7bXvXYuZ3Fn5pSN5IObxijyx4opNYKTCRnGni6Q==} + engines: {node: '>=14.1.0'} + requiresBuild: true + dependencies: + cross-fetch: 3.1.5 + debug: 4.3.4 + devtools-protocol: 0.0.1011705 + extract-zip: 2.0.1 + https-proxy-agent: 5.0.1 + pkg-dir: 4.2.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 3.0.2 + tar-fs: 2.1.1 + unbzip2-stream: 1.4.3 + ws: 8.8.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: true + + /pyright/1.1.257: + resolution: {integrity: sha512-r8dBY9Q/o6oM7n/xh0sruCNQ68PfKkXga6GXwghUIhLSo59ZPnQfeoNDHdAh1caGbb/NvQQXzF8C5KqruOYokg==} + engines: {node: '>=12.0.0'} + hasBin: true + dev: true + + /q/1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /qjobs/1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + dev: true + + /qs/6.10.3: + resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /query-selector-shadow-dom/1.0.0: + resolution: {integrity: sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==} + dev: true + + /query-string/4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + dev: true + + /querystring-es3/0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + + /querystring/0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + /querystring/0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /quickselect/2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /raf/3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: true + + /ramda/0.28.0: + resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + dev: true + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill/1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser/1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: true + + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body/2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /raw-loader/4.0.2_webpack@4.46.0: + resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /rbush/3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + dependencies: + quickselect: 2.0.0 + dev: false + + /rc/1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.6 + strip-json-comments: 2.0.1 + dev: true + + /react-app-polyfill/2.0.0: + resolution: {integrity: sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==} + engines: {node: '>=10'} + dependencies: + core-js: 3.23.3 + object-assign: 4.1.1 + promise: 8.1.0 + raf: 3.4.1 + regenerator-runtime: 0.13.9 + whatwg-fetch: 3.6.2 + dev: true + + /react-customizable-progressbar/1.0.3_react@17.0.2: + resolution: {integrity: sha512-aqkZoexIfXXiQgFvo1++7GaxAKAQCb/zj5lRMj6oniZjn9CSIhowr3dSnGnvvvygvegVcPGEYK8shPV5MZasSQ==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + react: 17.0.2 + + /react-dev-utils/11.0.4_lqszvzlozoiycnphcgimetch2i: + resolution: {integrity: sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==} + engines: {node: '>=10'} + dependencies: + '@babel/code-frame': 7.10.4 + address: 1.1.2 + browserslist: 4.14.2 + chalk: 2.4.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 2.0.0 + filesize: 6.1.0 + find-up: 4.1.0 + fork-ts-checker-webpack-plugin: 4.1.6_lqszvzlozoiycnphcgimetch2i + global-modules: 2.0.0 + globby: 11.0.1 + gzip-size: 5.1.1 + immer: 8.0.1 + is-root: 2.1.0 + loader-utils: 2.0.0 + open: 7.4.2 + pkg-up: 3.1.0 + prompts: 2.4.0 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.2 + shell-quote: 1.7.2 + strip-ansi: 6.0.0 + text-table: 0.2.0 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + dev: true + + /react-docgen-typescript-plugin/1.0.1_bubf4veva5nnocx7gaznjuarcu: + resolution: {integrity: sha512-ifcKA71E1W+OdsQ6Z7EwJhGtBIbVHemivFyySAYMEbLzcMw4rDA8QHNoYOI++Hq1Ai8GzSeYtz+UXpmB3H8ZMQ==} + peerDependencies: + typescript: '>= 3.x' + webpack: '>= 4' + dependencies: + debug: 4.3.4 + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.0.4 + micromatch: 4.0.5 + react-docgen-typescript: 1.22.0_typescript@4.4.4 + tslib: 2.4.0 + typescript: 4.4.4 + webpack: 4.46.0 + webpack-sources: 2.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /react-docgen-typescript/1.22.0_typescript@4.4.4: + resolution: {integrity: sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==} + peerDependencies: + typescript: '>= 3.x' + dependencies: + typescript: 4.4.4 + dev: true + + /react-docgen-typescript/2.2.2_typescript@4.4.4: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + dependencies: + typescript: 4.4.4 + dev: true + + /react-docgen/5.4.3: + resolution: {integrity: sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==} + engines: {node: '>=8.10.0'} + hasBin: true + dependencies: + '@babel/core': 7.18.6 + '@babel/generator': 7.18.7 + '@babel/runtime': 7.18.6 + ast-types: 0.14.2 + commander: 2.20.3 + doctrine: 3.0.0 + estree-to-babel: 3.2.1 + neo-async: 2.6.2 + node-dir: 0.1.17 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /react-dom/17.0.2_react@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + + /react-draggable/4.4.5_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + + /react-element-to-jsx-string/14.3.4_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 + dependencies: + '@base2/pretty-print-object': 1.0.1 + is-plain-object: 5.0.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 17.0.2 + dev: true + + /react-error-boundary/3.1.4_react@17.0.2: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.18.6 + react: 17.0.2 + dev: true + + /react-error-overlay/6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: true + + /react-grid-layout/1.3.4_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-sB3rNhorW77HUdOjB4JkelZTdJGQKuXLl3gNg+BI8gJkTScspL1myfZzW/EM0dLEn+1eH+xW+wNqk0oIM9o7cw==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + clsx: 1.2.1 + lodash.isequal: 4.5.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-draggable: 4.4.5_sfoxds7t5ydpegc3knd667wn6m + react-resizable: 3.0.4_sfoxds7t5ydpegc3knd667wn6m + + /react-inspector/5.1.1_react@17.0.2: + resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} + peerDependencies: + react: ^16.8.4 || ^17.0.0 + dependencies: + '@babel/runtime': 7.18.6 + is-dom: 1.1.0 + prop-types: 15.8.1 + react: 17.0.2 + dev: true + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /react-leaflet/2.8.0_6k6ga34dyylvilikktgvdmyx6a: + resolution: {integrity: sha512-Y7oHtNrrlRH8muDttXf+jZ2Ga/X7jneSGi1GN8uEdeCfLProTqgG2Zoa5TfloS3ZnY20v7w+DIenMG59beFsQw==} + peerDependencies: + leaflet: ^1.6.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.18.6 + fast-deep-equal: 3.1.3 + hoist-non-react-statics: 3.3.2 + leaflet: 1.8.0 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + warning: 4.0.3 + + /react-refresh/0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + dev: true + + /react-refresh/0.8.3: + resolution: {integrity: sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==} + engines: {node: '>=0.10.0'} + dev: true + + /react-refresh/0.9.0: + resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-resizable/3.0.4_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-StnwmiESiamNzdRHbSSvA65b0ZQJ7eVQpPusrSmcpyGKzC0gojhtO62xxH6YOBmepk9dQTBi9yxidL3W4s3EBA==} + peerDependencies: + react: '>= 16.3' + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + react-draggable: 4.4.5_sfoxds7t5ydpegc3knd667wn6m + transitivePeerDependencies: + - react-dom + + /react-router-dom/5.3.3_react@17.0.2: + resolution: {integrity: sha512-Ov0tGPMBgqmbu5CDmN++tv2HQ9HlWDuWIIqn4b88gjlAN5IHI+4ZUZRcpz9Hl0azFIwihbLDYw1OiHGRo7ZIng==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.18.6 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-router: 5.3.3_react@17.0.2 + tiny-invariant: 1.2.0 + tiny-warning: 1.0.3 + + /react-router/5.3.3_react@17.0.2: + resolution: {integrity: sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w==} + peerDependencies: + react: '>=15' + dependencies: + '@babel/runtime': 7.18.6 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + mini-create-react-context: 0.4.1_at7mkepldmzoo6silmqc5bca74 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 17.0.2 + react-is: 16.13.1 + tiny-invariant: 1.2.0 + tiny-warning: 1.0.3 + + /react-scripts/4.0.3_uiqijp4xikdbdjkhli4gylh7zu: + resolution: {integrity: sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + peerDependencies: + react: '>= 16' + typescript: ^3.2.1 || ^4 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/core': 7.12.3 + '@pmmmwh/react-refresh-webpack-plugin': 0.4.3_t4ezke4netssl24gycl5qjajya + '@svgr/webpack': 5.5.0 + '@typescript-eslint/eslint-plugin': 4.33.0_zrqxgwgitu7trrjeml3nqco3jq + '@typescript-eslint/parser': 4.33.0_wnilx7boviscikmvsfkd6ljepe + babel-eslint: 10.1.0_eslint@7.32.0 + babel-jest: 26.6.3_@babel+core@7.12.3 + babel-loader: 8.1.0_ijzbfparldiylzlxam7rtsqhk4 + babel-plugin-named-asset-import: 0.3.8_@babel+core@7.12.3 + babel-preset-react-app: 10.0.1 + bfj: 7.0.2 + camelcase: 6.3.0 + case-sensitive-paths-webpack-plugin: 2.3.0 + css-loader: 4.3.0_webpack@4.44.2 + dotenv: 8.2.0 + dotenv-expand: 5.1.0 + eslint: 7.32.0 + eslint-config-react-app: 6.0.0_wl7dwujyi3bf4ng7y5libhxib4 + eslint-plugin-flowtype: 5.10.0_eslint@7.32.0 + eslint-plugin-import: 2.26.0_ffi3uiz42rv3jyhs6cr7p7qqry + eslint-plugin-jest: 24.7.0_6f4esddknfe6lryu4sgtvm3pta + eslint-plugin-jsx-a11y: 6.6.0_eslint@7.32.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + eslint-plugin-testing-library: 3.10.2_wnilx7boviscikmvsfkd6ljepe + eslint-webpack-plugin: 2.7.0_a7xmpkungfd35is2c4kqy55h3i + file-loader: 6.1.1_webpack@4.44.2 + fs-extra: 9.1.0 + html-webpack-plugin: 4.5.0_webpack@4.44.2 + identity-obj-proxy: 3.0.0 + jest: 26.6.0_canvas@2.9.3+ts-node@9.1.1 + jest-circus: 26.6.0_canvas@2.9.3+ts-node@9.1.1 + jest-resolve: 26.6.0 + jest-watch-typeahead: 0.6.1_jest@26.6.0 + mini-css-extract-plugin: 0.11.3_webpack@4.44.2 + optimize-css-assets-webpack-plugin: 5.0.4_webpack@4.44.2 + pnp-webpack-plugin: 1.6.4_typescript@4.4.4 + postcss-flexbugs-fixes: 4.2.1 + postcss-loader: 3.0.0 + postcss-normalize: 8.0.1 + postcss-preset-env: 6.7.0 + postcss-safe-parser: 5.0.2 + prompts: 2.4.0 + react: 17.0.2 + react-app-polyfill: 2.0.0 + react-dev-utils: 11.0.4_lqszvzlozoiycnphcgimetch2i + react-refresh: 0.8.3 + resolve: 1.18.1 + resolve-url-loader: 3.1.4 + sass-loader: 10.3.1_webpack@4.44.2 + semver: 7.3.2 + style-loader: 1.3.0_webpack@4.44.2 + terser-webpack-plugin: 4.2.3_webpack@4.44.2 + ts-pnp: 1.2.0_typescript@4.4.4 + typescript: 4.4.4 + url-loader: 4.1.1_7hroj2mdu577asu2zyhaasbvae + webpack: 4.44.2 + webpack-dev-server: 3.11.1_webpack@4.44.2 + webpack-manifest-plugin: 2.2.0_webpack@4.44.2 + workbox-webpack-plugin: 5.1.4_webpack@4.44.2 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - '@types/webpack' + - bluebird + - bufferutil + - canvas + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - fibers + - node-sass + - sass + - sockjs-client + - supports-color + - ts-node + - type-fest + - utf-8-validate + - vue-template-compiler + - webpack-cli + - webpack-command + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /react-syntax-highlighter/15.5.0_react@17.0.2: + resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} + peerDependencies: + react: '>= 0.14.0' + dependencies: + '@babel/runtime': 7.18.6 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.28.0 + react: 17.0.2 + refractor: 3.6.0 + dev: true + + /react-transition-group/4.4.2_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.18.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + + /react-virtualized-auto-sizer/1.0.6_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 + react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 + dependencies: + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-window/1.8.7_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==} + engines: {node: '>8.0.0'} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.18.6 + memoize-one: 5.2.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react/17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /read-pkg-up/1.0.1: + resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} + engines: {node: '>=0.10.0'} + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/1.1.0: + resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} + engines: {node: '>=0.10.0'} + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + dev: true + + /read-pkg/4.0.1: + resolution: {integrity: sha512-+UBirHHDm5J+3WDmLBZYSklRYg82nMlz+enn+GMZ22nSR2f4bzxmhso6rzQW/3mT2PVzpzDTiYIZahk8UmZ44w==} + engines: {node: '>=6'} + dependencies: + normalize-package-data: 2.5.0 + parse-json: 4.0.0 + pify: 3.0.0 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdir-glob/1.1.2: + resolution: {integrity: sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==} + dependencies: + minimatch: 5.1.0 + dev: true + + /readdirp/2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.10 + micromatch: 3.1.10 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /readdirp/2.2.1_supports-color@6.1.0: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.10 + micromatch: 3.1.10_supports-color@6.1.0 + readable-stream: 2.3.7 + transitivePeerDependencies: + - supports-color + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir/0.7.1: + resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.1 + dev: true + + /recursive-readdir/2.2.2: + resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==} + engines: {node: '>=0.10.0'} + dependencies: + minimatch: 3.0.4 + dev: true + + /redent/1.0.0: + resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} + engines: {node: '>=0.10.0'} + dependencies: + indent-string: 2.1.0 + strip-indent: 1.0.1 + dev: true + optional: true + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /refractor/3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} + dependencies: + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.27.0 + dev: true + + /regenerate-unicode-properties/10.0.1: + resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: true + + /regenerator-runtime/0.13.9: + resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + + /regenerator-transform/0.15.0: + resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} + dependencies: + '@babel/runtime': 7.18.6 + dev: true + + /regex-not/1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: true + + /regex-parser/2.2.11: + resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /regexpu-core/5.1.0: + resolution: {integrity: sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.0.1 + regjsgen: 0.6.0 + regjsparser: 0.8.4 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.0.0 + dev: true + + /registry-auth-token/3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + dev: true + + /registry-url/3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + dependencies: + rc: 1.2.8 + dev: true + + /regjsgen/0.6.0: + resolution: {integrity: sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==} + dev: true + + /regjsparser/0.8.4: + resolution: {integrity: sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /relateurl/0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /remark-external-links/8.0.0: + resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} + dependencies: + extend: 3.0.2 + is-absolute-url: 3.0.3 + mdast-util-definitions: 4.0.0 + space-separated-tokens: 1.1.5 + unist-util-visit: 2.0.3 + dev: true + + /remark-footnotes/2.0.0: + resolution: {integrity: sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==} + dev: true + + /remark-mdx/1.6.22: + resolution: {integrity: sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==} + dependencies: + '@babel/core': 7.12.9 + '@babel/helper-plugin-utils': 7.10.4 + '@babel/plugin-proposal-object-rest-spread': 7.12.1_@babel+core@7.12.9 + '@babel/plugin-syntax-jsx': 7.12.1_@babel+core@7.12.9 + '@mdx-js/util': 1.6.22 + is-alphabetical: 1.0.4 + remark-parse: 8.0.3 + unified: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse/8.0.3: + resolution: {integrity: sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==} + dependencies: + ccount: 1.1.0 + collapse-white-space: 1.0.6 + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-whitespace-character: 1.0.4 + is-word-character: 1.0.4 + markdown-escapes: 1.0.4 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + state-toggle: 1.0.3 + trim: 0.0.1 + trim-trailing-lines: 1.1.4 + unherit: 1.1.3 + unist-util-remove-position: 2.0.1 + vfile-location: 3.2.0 + xtend: 4.0.2 + dev: true + + /remark-slug/6.1.0: + resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} + dependencies: + github-slugger: 1.4.0 + mdast-util-to-string: 1.1.0 + unist-util-visit: 2.0.3 + dev: true + + /remark-squeeze-paragraphs/4.0.0: + resolution: {integrity: sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==} + dependencies: + mdast-squeeze-paragraphs: 4.0.0 + dev: true + + /remove-trailing-separator/1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + + /renderkid/2.0.7: + resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 3.0.1 + dev: true + + /repeat-element/1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true + + /repeat-string/1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /repeating/2.0.1: + resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} + engines: {node: '>=0.10.0'} + dependencies: + is-finite: 1.1.0 + dev: true + optional: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + /require-main-filename/2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /reselect/4.1.6: + resolution: {integrity: sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==} + dev: false + + /resolve-alpn/1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + + /resolve-cwd/2.0.0: + resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} + engines: {node: '>=4'} + dependencies: + resolve-from: 3.0.0 + dev: true + + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from/3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pathname/3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + /resolve-url-loader/3.1.4: + resolution: {integrity: sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==} + engines: {node: '>=6.0.0'} + dependencies: + adjust-sourcemap-loader: 3.0.0 + camelcase: 5.3.1 + compose-function: 3.0.3 + convert-source-map: 1.7.0 + es6-iterator: 2.0.3 + loader-utils: 1.2.3 + postcss: 7.0.36 + rework: 1.0.1 + rework-visit: 1.0.0 + source-map: 0.6.1 + dev: true + + /resolve-url/0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true + + /resolve/1.18.1: + resolution: {integrity: sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==} + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve/2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike/2.0.0: + resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + + /resq/1.10.2: + resolution: {integrity: sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==} + dependencies: + fast-deep-equal: 2.0.1 + dev: true + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /ret/0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rework-visit/1.0.0: + resolution: {integrity: sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==} + dev: true + + /rework/1.0.1: + resolution: {integrity: sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==} + dependencies: + convert-source-map: 0.3.5 + css: 2.2.4 + dev: true + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rgb-regex/1.0.1: + resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} + dev: true + + /rgb2hex/0.2.5: + resolution: {integrity: sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==} + dev: true + + /rgba-regex/1.0.0: + resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} + dev: true + + /rifm/0.12.1_react@17.0.2: + resolution: {integrity: sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==} + peerDependencies: + react: '>=16.8' + dependencies: + react: 17.0.2 + + /rimraf/2.5.4: + resolution: {integrity: sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf/2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /ripemd160/2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rollup-plugin-babel/4.4.0_zsdi2hrctkppubwowpcr23auqa: + resolution: {integrity: sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel. + peerDependencies: + '@babel/core': 7 || ^7.0.0-rc.2 + rollup: '>=0.60.0 <3' + dependencies: + '@babel/core': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + rollup: 1.32.1 + rollup-pluginutils: 2.8.2 + dev: true + + /rollup-plugin-terser/5.3.1_rollup@1.32.1: + resolution: {integrity: sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==} + peerDependencies: + rollup: '>=0.66.0 <3' + dependencies: + '@babel/code-frame': 7.18.6 + jest-worker: 24.9.0 + rollup: 1.32.1 + rollup-pluginutils: 2.8.2 + serialize-javascript: 4.0.0 + terser: 4.8.0 + dev: true + + /rollup-pluginutils/2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: true + + /rollup/1.32.1: + resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} + hasBin: true + dependencies: + '@types/estree': 0.0.52 + '@types/node': 18.0.3 + acorn: 7.4.1 + dev: true + + /rsvp/4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + dev: true + + /run-async/2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-queue/1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + dependencies: + aproba: 1.2.0 + dev: true + + /rxjs/6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /rxjs/7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + dependencies: + tslib: 2.4.0 + + /safe-buffer/5.1.1: + resolution: {integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==} + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex/1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sane/4.1.0: + resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} + engines: {node: 6.* || 8.* || >= 10.*} + deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added + hasBin: true + dependencies: + '@cnakazawa/watch': 1.0.4 + anymatch: 2.0.0 + capture-exit: 2.0.0 + exec-sh: 0.3.6 + execa: 1.0.0 + fb-watchman: 2.0.1 + micromatch: 3.1.10 + minimist: 1.2.6 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /sanitize.css/10.0.0: + resolution: {integrity: sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==} + dev: true + + /sass-loader/10.3.1_webpack@4.44.2: + resolution: {integrity: sha512-y2aBdtYkbqorVavkC3fcJIUDGIegzDWPn3/LAFhsf3G+MzPKTJx37sROf5pXtUeggSVbNbmfj8TgRaSLMelXRA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + klona: 2.0.5 + loader-utils: 2.0.2 + neo-async: 2.6.2 + schema-utils: 3.1.1 + semver: 7.3.7 + webpack: 4.44.2 + dev: true + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + /saxes/5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler/0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /schema-utils/1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1_ajv@6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /schema-utils/3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /select-hose/2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned/1.10.14: + resolution: {integrity: sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==} + dependencies: + node-forge: 0.10.0 + dev: true + + /semver-compare/1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver/7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} + hasBin: true + dev: true + + /semver/7.3.2: + resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /semver/7.3.7: + resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send/0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /send/0.18.0_supports-color@6.1.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9_supports-color@6.1.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-error/8.1.0: + resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.20.2 + dev: true + + /serialize-javascript/4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serialize-javascript/5.0.1: + resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serialize-javascript/6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-favicon/2.5.0: + resolution: {integrity: sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==} + engines: {node: '>= 0.8.0'} + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + ms: 2.1.1 + parseurl: 1.3.3 + safe-buffer: 5.1.1 + dev: true + + /serve-handler/6.1.3: + resolution: {integrity: sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.0.4 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: true + + /serve-index/1.9.1_supports-color@6.1.0: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9_supports-color@6.1.0 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.15.0_supports-color@6.1.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /serve/11.3.2: + resolution: {integrity: sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==} + hasBin: true + dependencies: + '@zeit/schemas': 2.6.0 + ajv: 6.5.3 + arg: 2.0.0 + boxen: 1.3.0 + chalk: 2.4.1 + clipboardy: 1.2.3 + compression: 1.7.3 + serve-handler: 6.1.3 + update-check: 1.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /set-blocking/2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-value/2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-clone/3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shallowequal/1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + + /shebang-command/1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote/1.7.2: + resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} + dev: true + + /shellwords/0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + dev: true + optional: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.2 + object-inspect: 1.12.2 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /simple-concat/1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: true + + /simple-get/3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + dev: true + + /simple-swizzle/0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: true + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash/2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /snapdragon-node/2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: true + + /snapdragon-util/3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /snapdragon/0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /snapdragon/0.8.2_supports-color@6.1.0: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9_supports-color@6.1.0 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io-adapter/2.4.0: + resolution: {integrity: sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==} + dev: true + + /socket.io-client/3.1.3: + resolution: {integrity: sha512-4sIGOGOmCg3AOgGi7EEr6ZkTZRkrXwub70bBB/F0JSkMOUFpA77WsL87o34DffQQ31PkbMUIadGOk+3tx1KGbw==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/component-emitter': 1.2.11 + backo2: 1.0.2 + component-emitter: 1.3.0 + debug: 4.3.4 + engine.io-client: 4.1.4 + parseuri: 0.0.6 + socket.io-parser: 4.0.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /socket.io-parser/4.0.5: + resolution: {integrity: sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==} + engines: {node: '>=10.0.0'} + dependencies: + '@types/component-emitter': 1.2.11 + component-emitter: 1.3.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /socket.io/4.5.1: + resolution: {integrity: sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==} + engines: {node: '>=10.0.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + debug: 4.3.4 + engine.io: 6.2.0 + socket.io-adapter: 2.4.0 + socket.io-parser: 4.0.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /sockjs-client/1.6.1_supports-color@6.1.0: + resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} + engines: {node: '>=12'} + dependencies: + debug: 3.2.7_supports-color@6.1.0 + eventsource: 2.0.2 + faye-websocket: 0.11.4 + inherits: 2.0.4 + url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color + dev: true + + /sockjs/0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /sort-keys/1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /source-list-map/2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + dev: true + + /source-map-explorer/2.5.2: + resolution: {integrity: sha512-gBwOyCcHPHcdLbgw6Y6kgoH1uLKL6hN3zz0xJcNI2lpnElZliIlmSYAjUVwAWnc7+HscoTyh1ScR7ITtFuEnxg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + btoa: 1.2.1 + chalk: 4.1.2 + convert-source-map: 1.8.0 + ejs: 3.1.8 + escape-html: 1.0.3 + glob: 7.2.3 + gzip-size: 6.0.0 + lodash: 4.17.21 + open: 7.4.2 + source-map: 0.7.4 + temp: 0.9.4 + yargs: 16.2.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-resolve/0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: true + + /source-map-resolve/0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.0 + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-url/0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true + + /source-map/0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + dev: true + + /space-separated-tokens/1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + dev: true + + /spawn-command/0.0.2-1: + resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} + dev: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.11 + dev: true + + /spdx-license-ids/3.0.11: + resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} + dev: true + + /spdy-transport/3.0.0_supports-color@6.1.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4_supports-color@6.1.0 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy/4.0.2_supports-color@6.1.0: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4_supports-color@6.1.0 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0_supports-color@6.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /split-string/3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: true + + /split/0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: true + + /split2/3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.0 + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /ssri/6.0.2: + resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} + dependencies: + figgy-pudding: 3.5.2 + dev: true + + /ssri/8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.4 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stack-utils/2.0.5: + resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackframe/1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: true + + /state-toggle/1.0.3: + resolution: {integrity: sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==} + dev: true + + /static-extend/0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: true + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses/2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /store2/2.13.2: + resolution: {integrity: sha512-CMtO2Uneg3SAz/d6fZ/6qbqqQHi2ynq6/KzMD/26gTkiEShCcpqFfTHgOxsE0egAq6SX3FmN4CeSqn8BzXQkJg==} + dev: true + + /stream-browserify/2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /stream-buffers/3.0.2: + resolution: {integrity: sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==} + engines: {node: '>= 0.10.0'} + dev: true + + /stream-combiner/0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + dependencies: + duplexer: 0.1.2 + dev: true + + /stream-each/1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.1 + dev: true + + /stream-http/2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: true + + /streamroller/3.1.1: + resolution: {integrity: sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.11 + debug: 4.3.4 + fs-extra: 10.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /strict-uri-encode/1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: true + + /string-argv/0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + dev: true + + /string-length/4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-natural-compare/3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: true + + /string-width/2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + + /string-width/3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string.prototype.matchall/4.0.7: + resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + get-intrinsic: 1.1.2 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: true + + /string.prototype.padend/3.1.3: + resolution: {integrity: sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.padstart/3.1.3: + resolution: {integrity: sha512-NZydyOMtYxpTjGqp0VN5PYUF/tsU15yDMZnUdj16qRUIUiMJkHHSDElYyQFrMu+/WloTpA7MQSiADhBicDfaoA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimend/1.0.5: + resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string.prototype.trimstart/1.0.5: + resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.1 + dev: true + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + dependencies: + ansi-regex: 3.0.1 + dev: true + + /strip-ansi/5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: true + + /strip-ansi/6.0.0: + resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom/2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-comments/1.0.2: + resolution: {integrity: sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==} + engines: {node: '>=4'} + dependencies: + babel-extract-comments: 1.0.0 + babel-plugin-transform-object-rest-spread: 6.26.0 + dev: true + + /strip-eof/1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent/1.0.1: + resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + get-stdin: 4.0.1 + dev: true + optional: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-loader/1.3.0_webpack@4.44.2: + resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 2.7.1 + webpack: 4.44.2 + dev: true + + /style-loader/1.3.0_webpack@4.46.0: + resolution: {integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 2.7.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /style-loader/2.0.0_webpack@4.46.0: + resolution: {integrity: sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + loader-utils: 2.0.2 + schema-utils: 3.1.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /style-to-object/0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: true + + /styled-components/4.4.1_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-RNqj14kYzw++6Sr38n7197xG33ipEOktGElty4I70IKzQF1jzaD1U4xQ+Ny/i03UUhHlC5NWEO+d8olRCDji6g==} + requiresBuild: true + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/traverse': 7.18.6_supports-color@5.5.0 + '@emotion/is-prop-valid': 0.8.8 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.0.7_styled-components@4.4.1 + css-to-react-native: 2.3.2 + memoize-one: 5.2.1 + merge-anything: 2.4.4 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-is: 16.13.1 + stylis: 3.5.4 + stylis-rule-sheet: 0.0.10_stylis@3.5.4 + supports-color: 5.5.0 + dev: true + + /stylehacks/4.0.3: + resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} + engines: {node: '>=6.9.0'} + dependencies: + browserslist: 4.21.1 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + dev: true + + /stylis-rule-sheet/0.0.10_stylis@3.5.4: + resolution: {integrity: sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==} + peerDependencies: + stylis: ^3.5.0 + dependencies: + stylis: 3.5.4 + dev: true + + /stylis/3.5.4: + resolution: {integrity: sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==} + dev: true + + /stylis/4.0.13: + resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==} + + /suffix/0.1.1: + resolution: {integrity: sha512-j5uf6MJtMCfC4vBe5LFktSe4bGyNTBk7I2Kdri0jeLrcv5B9pWfxVa5JQpoxgtR8vaVB7bVxsWgnfQbX5wkhAA==} + engines: {node: '>=4'} + dev: true + + /supports-color/2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks/2.2.0: + resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-parser/2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: true + + /svgo/1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.1.5 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + dev: true + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /symbol.prototype.description/1.0.5: + resolution: {integrity: sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==} + engines: {node: '>= 0.11.15'} + dependencies: + call-bind: 1.0.2 + get-symbol-description: 1.0.0 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.4 + dev: true + + /synchronous-promise/2.0.15: + resolution: {integrity: sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==} + dev: true + + /table/6.8.0: + resolution: {integrity: sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.11.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: true + + /tar-fs/2.0.0: + resolution: {integrity: sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==} + dependencies: + chownr: 1.1.4 + mkdirp: 0.5.6 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-fs/2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream/2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /tar/6.1.11: + resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.3.4 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /telejson/6.0.8: + resolution: {integrity: sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==} + dependencies: + '@types/is-function': 1.0.1 + global: 4.4.0 + is-function: 1.0.2 + is-regex: 1.1.4 + is-symbol: 1.0.4 + isobject: 4.0.0 + lodash: 4.17.21 + memoizerific: 1.11.3 + dev: true + + /temp-dir/1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + dev: true + + /temp-fs/0.9.9: + resolution: {integrity: sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==} + engines: {node: '>=0.8.0'} + dependencies: + rimraf: 2.5.4 + dev: true + + /temp/0.9.4: + resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} + engines: {node: '>=6.0.0'} + dependencies: + mkdirp: 0.5.6 + rimraf: 2.6.3 + dev: true + + /tempy/0.3.0: + resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} + engines: {node: '>=8'} + dependencies: + temp-dir: 1.0.0 + type-fest: 0.3.1 + unique-string: 1.0.0 + dev: true + + /term-size/1.2.0: + resolution: {integrity: sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==} + engines: {node: '>=4'} + dependencies: + execa: 0.7.0 + dev: true + + /terminal-link/2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.2.0 + dev: true + + /terser-webpack-plugin/1.4.5_webpack@4.44.2: + resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser-webpack-plugin/1.4.5_webpack@4.46.0: + resolution: {integrity: sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.0 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + dev: true + + /terser-webpack-plugin/4.2.3_webpack@4.44.2: + resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 15.3.0 + find-cache-dir: 3.3.2 + jest-worker: 26.6.2 + p-limit: 3.1.0 + schema-utils: 3.1.1 + serialize-javascript: 5.0.1 + source-map: 0.6.1 + terser: 5.14.1 + webpack: 4.44.2 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + dev: true + + /terser-webpack-plugin/4.2.3_webpack@4.46.0: + resolution: {integrity: sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + cacache: 15.3.0 + find-cache-dir: 3.3.2 + jest-worker: 26.6.2 + p-limit: 3.1.0 + schema-utils: 3.1.1 + serialize-javascript: 5.0.1 + source-map: 0.6.1 + terser: 5.14.1 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + dev: true + + /terser/4.8.0: + resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + acorn: 8.7.1 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.21 + dev: true + + /terser/5.14.1: + resolution: {integrity: sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.7.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /throat/5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /through2/2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + + /thunky/1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /timers-browserify/2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /timers-ext/0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + dependencies: + es5-ext: 0.10.61 + next-tick: 1.1.0 + dev: true + + /timm/1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + /timsort/0.3.0: + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + dev: true + + /tiny-invariant/1.2.0: + resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} + + /tiny-warning/1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + /tinycolor2/1.4.2: + resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-arraybuffer/1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-object-path/0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: true + + /to-regex-range/2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /to-regex/3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: true + + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tough-cookie/4.0.0: + resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + universalify: 0.1.2 + dev: true + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.1.1 + dev: true + + /tree-kill/1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /trim-newlines/1.0.0: + resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + + /trim-trailing-lines/1.1.4: + resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} + dev: true + + /trim/0.0.1: + resolution: {integrity: sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==} + dev: true + + /trough/1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /tryer/1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + dev: true + + /ts-dedent/2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: true + + /ts-jest/26.5.6_zdj7ajopyucih64akr2ufopani: + resolution: {integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==} + engines: {node: '>= 10'} + hasBin: true + peerDependencies: + jest: '>=26 <27' + typescript: '>=3.8 <5.0' + dependencies: + bs-logger: 0.2.6 + buffer-from: 1.1.2 + fast-json-stable-stringify: 2.1.0 + jest: 26.6.3_ts-node@9.1.1 + jest-util: 26.6.2 + json5: 2.2.1 + lodash: 4.17.21 + make-error: 1.3.6 + mkdirp: 1.0.4 + semver: 7.3.7 + typescript: 4.4.4 + yargs-parser: 20.2.9 + dev: true + + /ts-loader/8.4.0_bubf4veva5nnocx7gaznjuarcu: + resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} + engines: {node: '>=10.0.0'} + peerDependencies: + typescript: '*' + webpack: '*' + dependencies: + chalk: 4.1.2 + enhanced-resolve: 4.5.0 + loader-utils: 2.0.2 + micromatch: 4.0.5 + semver: 7.3.7 + typescript: 4.4.4 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /ts-node/9.1.1_typescript@4.4.4: + resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} + engines: {node: '>=10.0.0'} + hasBin: true + peerDependencies: + typescript: '>=2.7' + dependencies: + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.21 + typescript: 4.4.4 + yn: 3.1.1 + dev: true + + /ts-pnp/1.2.0_typescript@4.4.4: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.4.4 + dev: true + + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.1 + minimist: 1.2.6 + strip-bom: 3.0.0 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + /tsutils/3.21.0_typescript@4.4.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.4.4 + dev: true + + /tty-browserify/0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /type/1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: true + + /type/2.6.0: + resolution: {integrity: sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==} + dev: true + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript/4.4.4: + resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /ua-parser-js/0.7.31: + resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==} + dev: true + + /uglify-js/3.16.0: + resolution: {integrity: sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unbzip2-stream/1.3.3: + resolution: {integrity: sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + + /unbzip2-stream/1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: true + + /unfetch/4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: true + + /unherit/1.1.3: + resolution: {integrity: sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==} + dependencies: + inherits: 2.0.4 + xtend: 4.0.2 + dev: true + + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.0.0 + dev: true + + /unicode-match-property-value-ecmascript/2.0.0: + resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript/2.0.0: + resolution: {integrity: sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==} + engines: {node: '>=4'} + dev: true + + /unified/9.2.0: + resolution: {integrity: sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==} + dependencies: + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /union-value/1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: true + + /uniq/1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + dev: true + + /uniqs/2.0.0: + resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} + dev: true + + /unique-filename/1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-string/1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} + dependencies: + crypto-random-string: 1.0.0 + dev: true + + /unist-builder/2.0.3: + resolution: {integrity: sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==} + dev: true + + /unist-util-generated/1.1.6: + resolution: {integrity: sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==} + dev: true + + /unist-util-is/4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + + /unist-util-position/3.1.0: + resolution: {integrity: sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==} + dev: true + + /unist-util-remove-position/2.0.1: + resolution: {integrity: sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==} + dependencies: + unist-util-visit: 2.0.3 + dev: true + + /unist-util-remove/2.1.0: + resolution: {integrity: sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-stringify-position/2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-visit-parents/3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 4.1.0 + dev: true + + /unist-util-visit/2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: true + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unquote/1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: true + + /unset-value/1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: true + + /untildify/2.1.0: + resolution: {integrity: sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + dev: true + optional: true + + /upath/1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db/1.0.4_browserslist@4.21.1: + resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.1 + escalade: 3.1.1 + picocolors: 1.0.0 + + /update-check/1.5.2: + resolution: {integrity: sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==} + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + + /urix/0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true + + /url-loader/4.1.1_7hroj2mdu577asu2zyhaasbvae: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 6.1.1_webpack@4.44.2 + loader-utils: 2.0.2 + mime-types: 2.1.35 + schema-utils: 3.1.1 + webpack: 4.44.2 + dev: true + + /url-loader/4.1.1_lit45vopotvaqup7lrvlnvtxwy: + resolution: {integrity: sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + dependencies: + file-loader: 6.2.0_webpack@4.46.0 + loader-utils: 2.0.2 + mime-types: 2.1.35 + schema-utils: 3.1.1 + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /url-parse/1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url/0.11.0: + resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + + /use/3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true + + /utif/2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + dependencies: + pako: 1.0.11 + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /util.promisify/1.0.0: + resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} + dependencies: + define-properties: 1.1.4 + object.getownpropertydescriptors: 2.1.4 + dev: true + + /util.promisify/1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + dependencies: + define-properties: 1.1.4 + es-abstract: 1.20.1 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.4 + dev: true + + /util/0.10.3: + resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: true + + /utila/0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid-browser/3.1.0: + resolution: {integrity: sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==} + dev: true + + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /v8-to-istanbul/7.1.2: + resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} + engines: {node: '>=10.10.0'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.8.0 + source-map: 0.7.4 + dev: true + + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.14 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.8.0 + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /value-equal/1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vendors/1.0.4: + resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} + dev: true + + /vfile-location/3.2.0: + resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} + dev: true + + /vfile-message/2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile/4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /vm-browserify/1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /void-elements/2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + dev: true + + /w3c-hr-time/1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + dependencies: + browser-process-hrtime: 1.0.0 + dev: true + + /w3c-xmlserializer/2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + dependencies: + xml-name-validator: 3.0.0 + dev: true + + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /warning/4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + + /watchpack-chokidar2/2.0.1: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + requiresBuild: true + dependencies: + chokidar: 2.1.8 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + + /watchpack/1.7.5: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} + dependencies: + graceful-fs: 4.2.10 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.5.3 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /watchpack/2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: true + + /wbuf/1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.3 + dev: true + + /web-namespaces/1.1.4: + resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} + dev: true + + /webdriver/7.11.0: + resolution: {integrity: sha512-Sd4n3Hxz/6WDa4Ay8cJj/ICDbf2ndlAzd7NMj+dmhfDsDF7L77eCZYB8zrrxs2hoK63E54eyKzyycK3BB3WoYQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/node': 15.14.9 + '@wdio/config': 7.10.1 + '@wdio/logger': 7.7.0 + '@wdio/protocols': 7.11.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + got: 11.8.5 + ky: 0.28.7 + lodash.merge: 4.6.2 + dev: true + + /webdriverio/7.11.1: + resolution: {integrity: sha512-N796qZIqkfIJJtSNBcAimnVr3SrnEjbwjYSBqAhVdGSidUKb1k6bxjC223WFwpANGkxABJUrVkx+qGNOtc+yGg==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/aria-query': 4.2.2 + '@types/node': 15.14.9 + '@wdio/config': 7.10.1 + '@wdio/logger': 7.7.0 + '@wdio/protocols': 7.11.0 + '@wdio/repl': 7.11.0 + '@wdio/types': 7.10.1 + '@wdio/utils': 7.11.0 + archiver: 5.3.1 + aria-query: 4.2.2 + atob: 2.1.2 + css-shorthand-properties: 1.1.1 + css-value: 0.0.1 + devtools: 7.11.0 + devtools-protocol: 0.0.915197 + fs-extra: 10.1.0 + get-port: 5.1.1 + grapheme-splitter: 1.0.4 + lodash.clonedeep: 4.5.0 + lodash.isobject: 3.0.2 + lodash.isplainobject: 4.0.6 + lodash.zip: 4.2.0 + minimatch: 3.1.2 + puppeteer-core: 10.4.0 + query-selector-shadow-dom: 1.0.0 + resq: 1.10.2 + rgb2hex: 0.2.5 + serialize-error: 8.1.0 + webdriver: 7.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions/5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: true + + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: true + + /webpack-cli/4.10.0_webpack@4.46.0: + resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + '@webpack-cli/migrate': '*' + webpack: 4.x.x || 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + '@webpack-cli/migrate': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 1.2.0_dfxgqfcw6epibhmjfd2ethbqbi + '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 + '@webpack-cli/serve': 1.7.0_webpack-cli@4.10.0 + colorette: 2.0.19 + commander: 7.2.0 + cross-spawn: 7.0.3 + fastest-levenshtein: 1.0.12 + import-local: 3.1.0 + interpret: 2.2.0 + rechoir: 0.7.1 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-merge: 5.8.0 + dev: true + + /webpack-dev-middleware/3.7.3_webpack@4.44.2: + resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} + engines: {node: '>= 6'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + memory-fs: 0.4.1 + mime: 2.6.0 + mkdirp: 0.5.6 + range-parser: 1.2.1 + webpack: 4.44.2 + webpack-log: 2.0.0 + dev: true + + /webpack-dev-middleware/3.7.3_webpack@4.46.0: + resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} + engines: {node: '>= 6'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + memory-fs: 0.4.1 + mime: 2.6.0 + mkdirp: 0.5.6 + range-parser: 1.2.1 + webpack: 4.46.0_webpack-cli@4.10.0 + webpack-log: 2.0.0 + dev: true + + /webpack-dev-server/3.11.1_webpack@4.44.2: + resolution: {integrity: sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==} + engines: {node: '>= 6.11.5'} + hasBin: true + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + ansi-html: 0.0.7 + bonjour: 3.5.0 + chokidar: 2.1.8_supports-color@6.1.0 + compression: 1.7.4_supports-color@6.1.0 + connect-history-api-fallback: 1.6.0 + debug: 4.3.4_supports-color@6.1.0 + del: 4.1.1 + express: 4.18.1_supports-color@6.1.0 + html-entities: 1.4.0 + http-proxy-middleware: 0.19.1_tmpgdztspuwvsxzgjkhoqk7duq + import-local: 2.0.0 + internal-ip: 4.3.0 + ip: 1.1.8 + is-absolute-url: 3.0.3 + killable: 1.0.1 + loglevel: 1.8.0 + opn: 5.5.0 + p-retry: 3.0.1 + portfinder: 1.0.28_supports-color@6.1.0 + schema-utils: 1.0.0 + selfsigned: 1.10.14 + semver: 6.3.0 + serve-index: 1.9.1_supports-color@6.1.0 + sockjs: 0.3.24 + sockjs-client: 1.6.1_supports-color@6.1.0 + spdy: 4.0.2_supports-color@6.1.0 + strip-ansi: 3.0.1 + supports-color: 6.1.0 + url: 0.11.0 + webpack: 4.44.2 + webpack-dev-middleware: 3.7.3_webpack@4.44.2 + webpack-log: 2.0.0 + ws: 6.2.2 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /webpack-filter-warnings-plugin/1.2.1_webpack@4.46.0: + resolution: {integrity: sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==} + engines: {node: '>= 4.3 < 5.0.0 || >= 5.10'} + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + dependencies: + webpack: 4.46.0_webpack-cli@4.10.0 + dev: true + + /webpack-hot-middleware/2.25.1: + resolution: {integrity: sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==} + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.3.3 + querystring: 0.2.1 + strip-ansi: 6.0.1 + dev: true + + /webpack-log/2.0.0: + resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} + engines: {node: '>= 6'} + dependencies: + ansi-colors: 3.2.4 + uuid: 3.4.0 + dev: true + + /webpack-manifest-plugin/2.2.0_webpack@4.44.2: + resolution: {integrity: sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==} + engines: {node: '>=6.11.5'} + peerDependencies: + webpack: 2 || 3 || 4 + dependencies: + fs-extra: 7.0.1 + lodash: 4.17.21 + object.entries: 1.1.5 + tapable: 1.1.3 + webpack: 4.44.2 + dev: true + + /webpack-merge/5.8.0: + resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + wildcard: 2.0.0 + dev: true + + /webpack-sources/1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-sources/2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + dev: true + + /webpack-virtual-modules/0.2.2: + resolution: {integrity: sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==} + dependencies: + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /webpack/4.44.2: + resolution: {integrity: sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.3 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.6 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.44.2 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /webpack/4.46.0: + resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.3 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.6 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /webpack/4.46.0_webpack-cli@4.10.0: + resolution: {integrity: sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + chrome-trace-event: 1.0.3 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.0 + memory-fs: 0.4.1 + micromatch: 3.1.10 + mkdirp: 0.5.6 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.5_webpack@4.46.0 + watchpack: 1.7.5 + webpack-cli: 4.10.0_webpack@4.46.0 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /websocket-driver/0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions/0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /whatwg-encoding/1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 + dev: true + + /whatwg-fetch/3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: true + + /whatwg-mimetype/2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + dev: true + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-module/2.0.0: + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wide-align/1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: true + + /widest-line/2.0.1: + resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==} + engines: {node: '>=4'} + dependencies: + string-width: 2.1.1 + dev: true + + /widest-line/3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + dependencies: + string-width: 4.2.3 + dev: true + + /wildcard/2.0.0: + resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wordwrap/1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /workbox-background-sync/5.1.4: + resolution: {integrity: sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-broadcast-update/5.1.4: + resolution: {integrity: sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-build/5.1.4: + resolution: {integrity: sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==} + engines: {node: '>=8.0.0'} + dependencies: + '@babel/core': 7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@babel/runtime': 7.18.6 + '@hapi/joi': 15.1.1 + '@rollup/plugin-node-resolve': 7.1.3_rollup@1.32.1 + '@rollup/plugin-replace': 2.4.2_rollup@1.32.1 + '@surma/rollup-plugin-off-main-thread': 1.4.2 + common-tags: 1.8.2 + fast-json-stable-stringify: 2.1.0 + fs-extra: 8.1.0 + glob: 7.2.3 + lodash.template: 4.5.0 + pretty-bytes: 5.6.0 + rollup: 1.32.1 + rollup-plugin-babel: 4.4.0_zsdi2hrctkppubwowpcr23auqa + rollup-plugin-terser: 5.3.1_rollup@1.32.1 + source-map: 0.7.4 + source-map-url: 0.4.1 + stringify-object: 3.3.0 + strip-comments: 1.0.2 + tempy: 0.3.0 + upath: 1.2.0 + workbox-background-sync: 5.1.4 + workbox-broadcast-update: 5.1.4 + workbox-cacheable-response: 5.1.4 + workbox-core: 5.1.4 + workbox-expiration: 5.1.4 + workbox-google-analytics: 5.1.4 + workbox-navigation-preload: 5.1.4 + workbox-precaching: 5.1.4 + workbox-range-requests: 5.1.4 + workbox-routing: 5.1.4 + workbox-strategies: 5.1.4 + workbox-streams: 5.1.4 + workbox-sw: 5.1.4 + workbox-window: 5.1.4 + transitivePeerDependencies: + - supports-color + dev: true + + /workbox-cacheable-response/5.1.4: + resolution: {integrity: sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-core/5.1.4: + resolution: {integrity: sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==} + dev: true + + /workbox-expiration/5.1.4: + resolution: {integrity: sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-google-analytics/5.1.4: + resolution: {integrity: sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==} + dependencies: + workbox-background-sync: 5.1.4 + workbox-core: 5.1.4 + workbox-routing: 5.1.4 + workbox-strategies: 5.1.4 + dev: true + + /workbox-navigation-preload/5.1.4: + resolution: {integrity: sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-precaching/5.1.4: + resolution: {integrity: sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-range-requests/5.1.4: + resolution: {integrity: sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-routing/5.1.4: + resolution: {integrity: sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /workbox-strategies/5.1.4: + resolution: {integrity: sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==} + dependencies: + workbox-core: 5.1.4 + workbox-routing: 5.1.4 + dev: true + + /workbox-streams/5.1.4: + resolution: {integrity: sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==} + dependencies: + workbox-core: 5.1.4 + workbox-routing: 5.1.4 + dev: true + + /workbox-sw/5.1.4: + resolution: {integrity: sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==} + dev: true + + /workbox-webpack-plugin/5.1.4_webpack@4.44.2: + resolution: {integrity: sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==} + engines: {node: '>=8.0.0'} + peerDependencies: + webpack: ^4.0.0 + dependencies: + '@babel/runtime': 7.18.6 + fast-json-stable-stringify: 2.1.0 + source-map-url: 0.4.1 + upath: 1.2.0 + webpack: 4.44.2 + webpack-sources: 1.4.3 + workbox-build: 5.1.4 + transitivePeerDependencies: + - supports-color + dev: true + + /workbox-window/5.1.4: + resolution: {integrity: sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==} + dependencies: + workbox-core: 5.1.4 + dev: true + + /worker-farm/1.7.0: + resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + dependencies: + errno: 0.1.8 + dev: true + + /worker-rpc/0.1.1: + resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} + dependencies: + microevent.ts: 0.1.1 + dev: true + + /workerpool/6.2.0: + resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} + dev: true + + /wrap-ansi/5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /ws/6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: true + + /ws/7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + /ws/7.5.8: + resolution: {integrity: sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws/8.2.3: + resolution: {integrity: sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws/8.8.0: + resolution: {integrity: sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /x-default-browser/0.4.0: + resolution: {integrity: sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==} + hasBin: true + optionalDependencies: + default-browser-id: 1.0.4 + dev: true + + /xhr/2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.5 + xtend: 4.0.2 + + /xml-name-validator/3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + dev: true + + /xml-parse-from-string/1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + /xml2js/0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + + /xmlbuilder/11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xmlhttprequest-ssl/1.6.3: + resolution: {integrity: sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==} + engines: {node: '>=0.4.0'} + dev: false + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n/4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yargs-parser/13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser/20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/21.0.1: + resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==} + engines: {node: '>=12'} + dev: true + + /yargs-unparser/2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs/13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 13.1.2 + dev: true + + /yargs/15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.0 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs/16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs/17.5.1: + resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.0.1 + dev: true + + /yarn-install/1.0.0: + resolution: {integrity: sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==} + engines: {node: '>=6'} + hasBin: true + dependencies: + cac: 3.0.4 + chalk: 1.1.3 + cross-spawn: 4.0.2 + dev: true + + /yauzl/2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yeast/0.1.2: + resolution: {integrity: sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==} + dev: false + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zip-stream/4.1.0: + resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + compress-commons: 4.1.1 + readable-stream: 3.6.0 + dev: true + + /zwitch/1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true + + file:packages/api-server: + resolution: {directory: packages/api-server, type: directory} + name: api-server + version: 0.0.0 + dev: true + + file:packages/dashboard_@babel+core@7.18.6: + resolution: {directory: packages/dashboard, type: directory} + id: file:packages/dashboard + name: rmf-dashboard + version: 0.0.1 + dependencies: + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@fontsource/roboto': 4.5.7 + '@fortawesome/fontawesome-svg-core': 1.2.36 + '@fortawesome/free-solid-svg-icons': 5.15.4 + '@fortawesome/react-fontawesome': 0.1.19_6uk63tqcq2kfmhhlivxd3orcjq + '@mui/icons-material': 5.8.4_kvph6qsx6c7p7rhep4xods6o6m + '@mui/material': 5.8.7_nn45z5sr7igu7sfun6tiae5hx4 + '@mui/system': 5.8.7_sudpmbbyhqtxq6t4xf6jlicdem + '@types/debug': 4.1.7 + '@types/leaflet': 1.7.11 + '@types/react': 17.0.47 + '@types/react-dom': 17.0.17 + '@types/react-grid-layout': 1.3.2 + '@types/react-leaflet': 2.8.2 + '@types/react-router': 5.1.18 + '@types/react-router-dom': 5.3.3 + ajv: 8.11.0 + api-client: link:packages/api-client + axios: 0.21.4_debug@4.3.4 + date-fns: 2.28.0 + debug: 4.3.4 + eventemitter3: 4.0.7 + keycloak-js: 11.0.3 + leaflet: 1.8.0 + node-vibrant: 3.1.6 + react: 17.0.2 + react-components: link:packages/react-components + react-customizable-progressbar: 1.0.3_react@17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-grid-layout: 1.3.4_sfoxds7t5ydpegc3knd667wn6m + react-leaflet: 2.8.0_6k6ga34dyylvilikktgvdmyx6a + react-router: 5.3.3_react@17.0.2 + react-router-dom: 5.3.3_react@17.0.2 + rmf-auth: file:packages/rmf-auth_j3cervwsprovj3mlqz6gmsp66u + rmf-models: file:packages/rmf-models + rxjs: 7.5.5 + transitivePeerDependencies: + - '@babel/core' + - '@emotion/react' + - '@emotion/styled' + - dayjs + - luxon + - moment + - supports-color + dev: true + + file:packages/rmf-auth_j3cervwsprovj3mlqz6gmsp66u: + resolution: {directory: packages/rmf-auth, type: directory} + id: file:packages/rmf-auth + name: rmf-auth + version: 0.0.1 + peerDependencies: + '@mui/material': ^5.8.3 + react: ^17.0.2 + react-dom: ^17.0.2 + react-router: ^5.2.0 + react-router-dom: ^5.2.0 + dependencies: + '@emotion/react': 11.9.3_7xvhny4l7yi42slhiqkpgmpofm + '@emotion/styled': 11.9.3_i64ertekxmxppn657xiekwuutq + '@fontsource/roboto': 4.5.7 + '@mui/icons-material': 5.8.4_kvph6qsx6c7p7rhep4xods6o6m + '@mui/lab': 5.0.0-alpha.86_d4ztt27k5xb5vqpt5ozi45o7wq + '@mui/material': 5.8.7_nn45z5sr7igu7sfun6tiae5hx4 + api-client: link:packages/api-client + eventemitter3: 4.0.7 + keycloak-js: 11.0.3 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + react-router: 5.3.3_react@17.0.2 + react-router-dom: 5.3.3_react@17.0.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - date-fns + - dayjs + - luxon + - moment + + file:packages/rmf-models: + resolution: {directory: packages/rmf-models, type: directory} + name: rmf-models + version: 0.0.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..67727b864 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +packages: + - 'packages/*' + - 'pipenv-install' diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh deleted file mode 100755 index 63f51b1bf..000000000 --- a/scripts/bootstrap.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -set -e - -usage() { - echo "Usage: bootstrap.sh [--help] " -} - -options=$(getopt -l'help' -o'h' -- "$@") -[ $? -eq 0 ] || { - usage - exit 1 -} -eval set -- "$options" -while true; do - case "$1" in - --help | -h) - usage - exit 1 - ;; - --) - shift - break - ;; - esac -done -targets="$@" - -if [[ -z "$C1" || "$CI" == 0 || "$CI" == 'false' ]]; then - cmd='install' -else - cmd='ci' -fi - -# workaround https://github.com/npm/cli/issues/3208 -mkdir -p "$(dirname "$0")"/../node_modules - -eval npm --prefix "$(dirname $0)/.." $cmd --include-workspace-root $(node "$(dirname $0)/workspace-args.js" $targets) diff --git a/scripts/current-package.js b/scripts/current-package.js deleted file mode 100644 index c06897d6d..000000000 --- a/scripts/current-package.js +++ /dev/null @@ -1,5 +0,0 @@ -const fs = require('fs'); - -const pkg = JSON.parse(fs.readFileSync('package.json')); - -console.log(pkg['name']); diff --git a/scripts/generate-pylintrc.js b/scripts/generate-pylintrc.js index 24dd99f82..e45a510f4 100644 --- a/scripts/generate-pylintrc.js +++ b/scripts/generate-pylintrc.js @@ -7,10 +7,6 @@ const { execSync } = require('child_process'); const fs = require('fs'); fs.copyFileSync(`${__dirname}/base.pylintrc`, `${__dirname}/../packages/api-server/.pylintrc`); -fs.copyFileSync( - `${__dirname}/base.pylintrc`, - `${__dirname}/../packages/reporting-server/.pylintrc`, -); fs.copyFileSync(`${__dirname}/base.pylintrc`, `${__dirname}/../packages/ros-translator/.pylintrc`); let result = execSync( `pipenv run pylint --rcfile=${__dirname}/base.pylintrc --ignore=CVS,test --generate-rcfile`, diff --git a/scripts/nws.sh b/scripts/nws.sh deleted file mode 100755 index a8940d11a..000000000 --- a/scripts/nws.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -set -e - -usage() { - echo 'Usage: nws.sh [--dependencies-only|-d]