diff --git a/.env b/.env
new file mode 100644
index 00000000..550387e6
--- /dev/null
+++ b/.env
@@ -0,0 +1,12 @@
+# Specify if deploying under a nested public path
+# https://vitejs.dev/guide/build.html#public-base-path
+VITE_BASE_URL='/'
+# Configure names used in the content
+VITE_SHORT_NAME='ATLAS'
+VITE_MITRE_TITLE='MITRE ATLAS™'
+VITE_CONTACT_EMAIL='atlas@mitre.org'
+# URL of the deployed Navigator instance
+# See https://github.com/mitre-attack/attack-navigator for source info
+VITE_NAVIGATOR_URL='https://mitre-atlas.github.io/atlas-navigator'
+# Used to construct URL to Navigator layer JSON files for case studies
+VITE_NAVIGATOR_LAYER_GITHUB_URL='https://raw.githubusercontent.com/mitre-atlas/atlas-navigator-data/main'
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 00000000..6f40582d
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,15 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ 'extends': [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended',
+ '@vue/eslint-config-typescript',
+ '@vue/eslint-config-prettier/skip-formatting'
+ ],
+ parserOptions: {
+ ecmaVersion: 'latest'
+ }
+}
diff --git a/.github/workflows/deploy-github.yml b/.github/workflows/deploy-github.yml
new file mode 100644
index 00000000..8e7f54dd
--- /dev/null
+++ b/.github/workflows/deploy-github.yml
@@ -0,0 +1,56 @@
+name: GitHub Pages
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: write
+ concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ - name: Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: "20"
+
+ - name: Cache dependencies
+ uses: actions/cache@v4
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
+
+ - name: Configure environment variables
+ shell: bash
+ env:
+ GOOGLE_ANALYTICS_ID: ${{ secrets.GOOGLE_ANALYTICS_ID }}
+ VITE_OSANO_SCRIPT: ${{ secrets.VITE_OSANO_SCRIPT }}
+ run: echo -e "VITE_ANALYTICS_ID=$GOOGLE_ANALYTICS_ID\nVITE_OSANO_SCRIPT=$VITE_OSANO_SCRIPT" > .env.production
+
+ - name: Install dependencies
+ run: npm install
+
+ - name: Build for production
+ run: |
+ export NODE_OPTIONS="--max_old_space_size=4096"
+ npm run build
+ # Fix for 404 on refresh issue
+ cp dist/index.html dist/404.html
+
+ - name: deploy
+ uses: peaceiris/actions-gh-pages@v3
+ if: ${{ github.ref == 'refs/heads/main' }}
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./dist
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..38adffa6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..03ea7df8
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+image: node:latest
+
+variables:
+ GIT_SUBMODULE_STRATEGY: normal
+
+pages:
+ stage: deploy
+ cache:
+ key:
+ files:
+ - package-lock.json
+ prefix: npm
+ paths:
+ - node_modules/
+ script:
+ # Configure to set Navigator URL, etc.
+ - echo "VITE_BASE_URL=$CI_PROJECT_NAME" >> .env
+ - cat .env
+ - npm run build
+ # navigate into the build output directory
+ - cd dist
+ # fix for 404 on refresh issue
+ - cp index.html 404.html
+ - cd ..
+ - cp -a dist/. public/
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+ tags:
+ - pages
+
+default:
+ before_script:
+ # Install and cache dependencies
+ - npm install --cache .npm --prefer-offline
diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md
new file mode 100644
index 00000000..fdea2ac2
--- /dev/null
+++ b/.gitlab/merge_request_templates/Default.md
@@ -0,0 +1,42 @@
+# Description
+
+Jira Ticket:
+
+Add Navigator page
+
+## Important Changes
+
+`test.vue`
+
+* List changes here
+
+
+Notes:
+
+* List notes here
+
+## Testing Recommendations
+
+* [ ] List testing steps here
+
+
+# Checklists
+
+**Submitter:**
+
+* [ ] This MR is into the correct branch.
+* [ ] Comment added to the relevant Jira ticket(s) with a link to this MR.
+* [ ] The relevant Jira ticket has been moved to 'In Review'.
+* [ ] Post on Slack that the MR is open for review, tagging the reviewer.
+* [ ] Code diff has been reviewed (it **does not** contain: additional white space, not applicable code changes, debug statements, etc.).
+
+**Reviewer:**
+
+* [ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose.
+* [ ] You have tried to break the code.
+* [ ] Tested all recommendations listed in the "Testing Recommendations" section. The application behaves as expected with this MR.
+
+**Final Merger**
+
+* [ ] At least one review/approval have been received on this MR and all checklists have been completed.
+* [ ] The relevant Jira ticket has been moved to 'Done.'
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..ec660887
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,4 @@
+[submodule "public/atlas-data"]
+ path = public/atlas-data
+ url = ../atlas-data.git
+ branch = main
diff --git a/.nojekyll b/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/.prettierrc.json b/.prettierrc.json
new file mode 100644
index 00000000..66e23359
--- /dev/null
+++ b/.prettierrc.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://json.schemastore.org/prettierrc",
+ "semi": false,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "printWidth": 100,
+ "trailingComma": "none"
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..8ac0f5f7
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,155 @@
+# ATLAS Website Changelog
+
+## [4.0.0]() (2024-03-11)
+
+Website redesign
+
+#### Website
+- Migrated from Nuxt.js 2 to Vue 3
+- Design updates
+
+#### Data
+- Updated ATLAS data to [version 4.5.2](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#452-2024-03-11)
+
+## [3.6.1]() (2024-01-12)
+
+#### Website
+- Minor mitigations updates
+- Updated events and LinkedIn info
+
+#### Data
+- Updated ATLAS data to [version 4.5.1](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#451-2024-01-12)
+
+## [3.6.0]() (2023-10-25)
+
+#### Website
+- New LLM content and updated mitigations
+
+#### Data
+- Updated ATLAS data to [version 4.5.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#450-2023-10-25)
+
+## [3.5.0]() (2023-04-12)
+
+#### Website
+- Initial mitigations
+
+#### Data
+- Updated ATLAS data to [version 4.4.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#440-2023-04-12)
+
+## [3.4.0]() (2023-03-01)
+
+#### Website
+- Minor fixes
+
+#### Data
+- Updated ATLAS data to [version 4.3.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#430-2023-02-28)
+
+## [3.3.0]() (2023-01-19)
+
+#### Website
+- ATLAS tactics and techniques that are adapted from ATT&CK are denoted with a red &
+- Updated events list
+- Various fixes
+
+#### Data
+- Updated ATLAS data to [version 4.2.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#420-2023-01-18)
+
+## [3.2.0]() (2022-10-28)
+
+#### Website
+- Supports new case study fields: case study type, reporter, target, and actor
+- Added FAQ page in "Resources" navigation menu
+- Added "Key Info" button on individual case study pages
+- Various fixes and updates
+
+#### Data
+- Updated ATLAS data to [version 4.1.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#410-2022-10-27)
+
+## [3.1.0]() (2022-07-12)
+
+#### Website
+- Supports display of custom data object types and string properties
+- Supports display of multiple matrices
+- Updated site navigation features with better support for small screens
+- Various fixes and updates
+
+#### Data
+- Updated ATLAS data to [version 4.0.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#400-2022-05-27)
+
+## [3.0.0]() (2022-03-31)
+
+#### Website
+- Added case study builder feature
+- Added ability to download case studies as Powerpoint files and raw YAML
+- Added events list and more ways to get involved on the contact page
+- Various fixes and language updates
+
+#### Data
+- Updates ATLAS data to [version 3.0.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#300-2022-03-23)
+- Moved ATLAS data files to their own repositories
+
+## [2.3.2]() (2022-01-04)
+
+#### Data
+- Added individual case study YAML files for case study builder use
+
+## [2.3.1]() (2021-11-23)
+
+#### Data
+- Fixed Navigator layer files for the 2 new case studies
+
+## [2.3.0]() (2021-10-29)
+
+#### Website
+- Added case study examples to technique pages
+
+#### Data
+- Updated ATLAS data to [version 2.2.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#220-2021-10-29)
+
+## [2.2.2]() (2021-07-28)
+
+#### Data
+- Updated ATLAS Navigator layer files for parent technique expansion and relevant tactic highlights
+
+## [2.2.1]() (2021-07-14)
+
+#### Website
+- Added buttons on each case study page to view its layer on the ATLAS Navigator
+
+## [2.2.0]() (2021-07-12)
+
+#### Website
+- Removed colloquium announcement
+- Various fixes
+
+#### Data
+- Added ATLAS Navigator layer files to highlight techniques used in each case study
+
+## [2.1.3]() (2021-06-22)
+
+#### Website
+- Added contact email
+- Fixed sources format
+
+## [2.1.2]() (2021-06-21)
+
+#### Website
+- Added analytics
+- Various fixes
+
+## [2.1.1]() (2021-06-18)
+
+#### Website
+- Added ATLAS Navigator page and CNAME
+- Language updates
+
+## [2.1.0]() (2021-06-16)
+
+#### Website
+- Added new footer, logos, colloquium announcement
+- Updated to privacy policy, terms of use, and license
+- Various fixes
+
+## [2.0.0]() (2021-05-13)
+
+Initial GitHub release with ATLAS data [version 2.0.0](https://github.com/mitre-atlas/atlas-data/blob/main/CHANGELOG.md#200-2021-05-13)
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 00000000..015f1dc0
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,14 @@
+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.
+
+This project makes use of ATT&CK®.
+ATT&CK® Terms of Use - https://attack.mitre.org/resources/terms-of-use/
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..7a9fc35d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,44 @@
+# ATLAS Website
+
+ATLAS enables researchers to navigate the landscape of threats to artificial intelligence systems. Visit https://atlas.mitre.org for more information.
+
+This repository contains the ATLAS website source code, which is built upon Vue 3 and served via GitHub Pages at https://atlas.mitre.org.
+
+## Initial Git Setup
+
+This project uses the `atlas-data` project in this group as a Git submodule in `public/atlas-data`.
+
+Clone the repository using `git clone --recurse-submodules`, or if the repository is already cloned, run `git submodule init` then `git submodule update`.
+
+Once the submodule is available, run the following **once** to sparse checkout only the necessary files in the `dist` directory.
+
+```bash
+git -C static/atlas-data/ config core.sparseCheckout true
+echo 'dist/*' >> .git/modules/static/atlas-data/info/sparse-checkout
+git submodule update --force --checkout static/atlas-data/
+```
+
+## Updating ATLAS Data
+
+To update `atlas-data`, run `git submodule update --remote` to get the latest from its main branch, then commit the result.
+
+## Development Setup
+
+Ensure node and npm are available - currently using node v20.
+
+```bash
+# Install dependencies
+$ npm install
+
+# Serve with hot reload
+$ npm run dev
+
+# Build for production and launch preview server
+$ npm run build
+$ npm run preview
+```
+
+## Notice
+
+Copyright 2021-2024 The MITRE Corporation.
+Approved for Public Release; Distribution Unlimited. Case Number 21-2363.
diff --git a/env.d.ts b/env.d.ts
new file mode 100644
index 00000000..11f02fe2
--- /dev/null
+++ b/env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..f36a113e
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite App
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..cb35424d
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,13398 @@
+{
+ "name": "atlas",
+ "version": "4.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "atlas",
+ "version": "4.0.0",
+ "dependencies": {
+ "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
+ "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
+ "@mdi/font": "7.4.47",
+ "@mdit-vue/plugin-frontmatter": "^2.0.0",
+ "@mdit-vue/plugin-toc": "^2.0.0",
+ "@unhead/vue": "^1.8.13",
+ "esbuild": "^0.20.1",
+ "js-yaml": "^4.1.0",
+ "jsonschema": "^1.4.1",
+ "markdown-it": "^14.0.0",
+ "markdown-it-anchor": "^8.6.7",
+ "pinia": "^2.1.7",
+ "pluralize": "^8.0.0",
+ "pptxgenjs": "3.7.1",
+ "roboto-fontface": "*",
+ "vite-plugin-vuetify": "^2.0.3",
+ "vue": "^3.4.21",
+ "vue-draggable-plus": "^0.3.5",
+ "vue-gtag": "^2.0.1",
+ "vue-router": "^4.3.0",
+ "vuetify": "^3.5.8",
+ "webfontloader": "^1.6.28"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.7.2",
+ "@tsconfig/node18": "^18.2.2",
+ "@types/node": "^20.11.25",
+ "@types/webfontloader": "^1.6.38",
+ "@vitejs/plugin-vue": "^5.0.4",
+ "@vitejs/plugin-vue-jsx": "^3.1.0",
+ "@vue/eslint-config-prettier": "^9.0.0",
+ "@vue/eslint-config-typescript": "^13.0.0",
+ "@vue/tsconfig": "^0.5.1",
+ "eslint": "^8.57.0",
+ "eslint-plugin-vue": "^9.22.0",
+ "npm-run-all2": "^6.1.2",
+ "prettier": "^3.2.5",
+ "raw-loader": "^4.0.2",
+ "sass": "^1.71.1",
+ "typescript": "~5.4.2",
+ "vite": "^5.1.6",
+ "vite-plugin-node-polyfills": "^0.21.0",
+ "vue-cli-plugin-vuetify": "~2.5.8",
+ "vue-tsc": "^2.0.6",
+ "webpack-plugin-vuetify": "^3.0.3"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz",
+ "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.0",
+ "@babel/parser": "^7.24.0",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.0",
+ "@babel/types": "^7.24.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz",
+ "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz",
+ "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
+ "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
+ "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
+ "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
+ "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@esbuild-plugins/node-globals-polyfill": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
+ "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==",
+ "peerDependencies": {
+ "esbuild": "*"
+ }
+ },
+ "node_modules/@esbuild-plugins/node-modules-polyfill": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz",
+ "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==",
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0",
+ "rollup-plugin-node-polyfills": "^0.2.1"
+ },
+ "peerDependencies": {
+ "esbuild": "*"
+ }
+ },
+ "node_modules/@esbuild-plugins/node-modules-polyfill/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz",
+ "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz",
+ "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz",
+ "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz",
+ "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz",
+ "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz",
+ "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz",
+ "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz",
+ "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz",
+ "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz",
+ "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz",
+ "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz",
+ "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz",
+ "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz",
+ "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz",
+ "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz",
+ "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz",
+ "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz",
+ "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz",
+ "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz",
+ "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz",
+ "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz",
+ "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz",
+ "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
+ "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+ "devOptional": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@mdi/font": {
+ "version": "7.4.47",
+ "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz",
+ "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw=="
+ },
+ "node_modules/@mdit-vue/plugin-frontmatter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-2.0.0.tgz",
+ "integrity": "sha512-/LrT6E60QI4XV4mqx3J87hqYXlR7ZyMvndmftR2RGz7cRAwa/xL+kyFLlgrMxkBIKitOShKa3LS/9Ov9b0fU+g==",
+ "dependencies": {
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "gray-matter": "^4.0.3",
+ "markdown-it": "^14.0.0"
+ }
+ },
+ "node_modules/@mdit-vue/plugin-frontmatter/node_modules/@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@mdit-vue/plugin-toc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-toc/-/plugin-toc-2.0.0.tgz",
+ "integrity": "sha512-PKQ8sZna3D5chTnt2lxL+ddpyXd++6Nyc0l8VXCeDgStlySQwiP9jaLeeC88oqY4BtRu4cAmILmxDrvuX0Rrdg==",
+ "dependencies": {
+ "@mdit-vue/shared": "2.0.0",
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "markdown-it": "^14.0.0"
+ }
+ },
+ "node_modules/@mdit-vue/plugin-toc/node_modules/@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@mdit-vue/shared": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/shared/-/shared-2.0.0.tgz",
+ "integrity": "sha512-PdxpQpbyTazeo2JT87qms6RPZIzyJd+gwuB+1jSwLDI7+0u5g79y2XgTAbZromSVgY2f3UU5HWdwaLbV9w4uOw==",
+ "dependencies": {
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "markdown-it": "^14.0.0"
+ }
+ },
+ "node_modules/@mdit-vue/shared/node_modules/@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@mdit-vue/types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/types/-/types-2.0.0.tgz",
+ "integrity": "sha512-1BeEB+DbtmDMUAfvbNUj5Hso8cSl2sBVK2iTyOMAqhfDVLdh+/9+D0JmQHaCeUk/vuJoMhOwbweZvh55wHxm4w=="
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgr/utils": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+ "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "fast-glob": "^3.3.0",
+ "is-glob": "^4.0.3",
+ "open": "^9.1.0",
+ "picocolors": "^1.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@rollup/plugin-inject": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
+ "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz",
+ "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz",
+ "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz",
+ "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz",
+ "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz",
+ "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz",
+ "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz",
+ "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz",
+ "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz",
+ "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz",
+ "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz",
+ "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz",
+ "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz",
+ "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
+ "node_modules/@tsconfig/node18": {
+ "version": "18.2.2",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz",
+ "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==",
+ "dev": true
+ },
+ "node_modules/@types/eslint": {
+ "version": "8.44.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
+ "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "node_modules/@types/eslint-scope": {
+ "version": "3.7.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz",
+ "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.14",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
+ "devOptional": true
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
+ "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw=="
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "peer": true,
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
+ "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA=="
+ },
+ "node_modules/@types/node": {
+ "version": "20.11.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz",
+ "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==",
+ "devOptional": true,
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
+ "dev": true
+ },
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.8",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+ "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
+ "peer": true
+ },
+ "node_modules/@types/webfontloader": {
+ "version": "1.6.38",
+ "resolved": "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.38.tgz",
+ "integrity": "sha512-kUaF72Fv202suFx6yBrwXqeVRMx7hGtJTesyESZgn9sEPCUeDXm2p0SiyS1MTqW74nQP4p7JyrOCwZ7pNFns4w==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz",
+ "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/type-utils": "7.1.1",
+ "@typescript-eslint/utils": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^7.0.0",
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz",
+ "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz",
+ "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz",
+ "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "@typescript-eslint/utils": "7.1.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz",
+ "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==",
+ "dev": true,
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz",
+ "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz",
+ "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz",
+ "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.1.1",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@unhead/dom": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.13.tgz",
+ "integrity": "sha512-BWqtatmrcrT+rN/FBZ/Il7mW0TuPlS4bXrsZewAVanOPU3ahr+sHAIUDJmDjziBjSUsO5wLOEYXA+4t08AZnrQ==",
+ "dependencies": {
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/schema": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.8.13.tgz",
+ "integrity": "sha512-38SMOv/RaTtldOJx2/Mezlg3xlMeAAFtyI+M7vwj8Qb0xAosRc804ct3Xta5ecFMe9bEXQbZWEIKydU6ZV6B7w==",
+ "dependencies": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/shared": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.8.13.tgz",
+ "integrity": "sha512-NV/quz31oqkITx+Epwzgf01AaYMPTzvkEdg9jvGltTWeSHWKtowUeTRPfWUc3TTPtCzrYgHQQjGN8YOHdWjC7Q==",
+ "dependencies": {
+ "@unhead/schema": "1.8.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/@unhead/vue": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.13.tgz",
+ "integrity": "sha512-2CIwSeadfJxFfY44nz7U+w/F7lg646aw2t8G58P4A08t6KtPRoAVA0cR0iX+yqQEZIAKYEoaNINv3p/GMxyvBw==",
+ "dependencies": {
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13",
+ "hookable": "^5.5.3",
+ "unhead": "1.8.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ },
+ "peerDependencies": {
+ "vue": ">=2.7 || >=3"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
+ "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.0.0 || ^5.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@volar/language-core": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.1.2.tgz",
+ "integrity": "sha512-5qsDp0Gf6fE09UWCeK7bkVn6NxMwC9OqFWQkMMkeej8h8XjyABPdRygC2RCrqDrfVdGijqlMQeXs6yRS+vfZYA==",
+ "dev": true,
+ "dependencies": {
+ "@volar/source-map": "2.1.2"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.1.2.tgz",
+ "integrity": "sha512-yFJqsuLm1OaWrsz9E3yd3bJcYIlHqdZ8MbmIoZLrAzMYQDcoF26/INIhgziEXSdyHc8xd7rd/tJdSnUyh0gH4Q==",
+ "dev": true,
+ "dependencies": {
+ "muggle-string": "^0.4.0"
+ }
+ },
+ "node_modules/@volar/typescript": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.1.2.tgz",
+ "integrity": "sha512-lhTancZqamvaLvoz0u/uth8dpudENNt2LFZOWCw9JZiX14xRFhdhfzmphiCRb7am9E6qAJSbdS/gMt1utXAoHQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "2.1.2",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+ "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+ "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5",
+ "@vue/babel-helper-vue-transform-on": "^1.1.5",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz",
+ "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==",
+ "dependencies": {
+ "@babel/parser": "^7.23.9",
+ "@vue/shared": "3.4.21",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz",
+ "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz",
+ "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==",
+ "dependencies": {
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.7",
+ "postcss": "^8.4.35",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz",
+ "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "node_modules/@vue/eslint-config-prettier": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+ "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==",
+ "dev": true,
+ "dependencies": {
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-plugin-prettier": "^5.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 8.0.0",
+ "prettier": ">= 3.0.0"
+ }
+ },
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz",
+ "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^7.1.1",
+ "@typescript-eslint/parser": "^7.1.1",
+ "vue-eslint-parser": "^9.3.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "typescript": ">=4.7.4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/language-core": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.6.tgz",
+ "integrity": "sha512-UzqU12tzf9XLqRO3TiWPwRNpP4fyUzE6MAfOQWQNZ4jy6a30ARRUpmODDKq6O8C4goMc2AlPqTmjOHPjHkilSg==",
+ "dev": true,
+ "dependencies": {
+ "@volar/language-core": "~2.1.2",
+ "@vue/compiler-dom": "^3.4.0",
+ "@vue/shared": "^3.4.0",
+ "computeds": "^0.0.1",
+ "minimatch": "^9.0.3",
+ "path-browserify": "^1.0.1",
+ "vue-template-compiler": "^2.7.14"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/language-core/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz",
+ "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==",
+ "dependencies": {
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz",
+ "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==",
+ "dependencies": {
+ "@vue/reactivity": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz",
+ "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==",
+ "dependencies": {
+ "@vue/runtime-core": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz",
+ "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21"
+ },
+ "peerDependencies": {
+ "vue": "3.4.21"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz",
+ "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g=="
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz",
+ "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==",
+ "dev": true
+ },
+ "node_modules/@vuetify/loader-shared": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.0.3.tgz",
+ "integrity": "sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==",
+ "dependencies": {
+ "upath": "^2.0.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0",
+ "vuetify": "^3.0.0"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "devOptional": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "devOptional": true,
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^8"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "devOptional": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "devOptional": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "devOptional": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/asn1.js/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/assert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
+ "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "is-nan": "^1.3.2",
+ "object-is": "^1.1.5",
+ "object.assign": "^4.1.4",
+ "util": "^0.12.5"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dev": true,
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "devOptional": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "dev": true
+ },
+ "node_modules/browser-resolve": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
+ "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.17.0"
+ }
+ },
+ "node_modules/browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "dependencies": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "node_modules/browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "node_modules/browserify-sign": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
+ "dev": true,
+ "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.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "dependencies": {
+ "pako": "~1.0.5"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "dev": true
+ },
+ "node_modules/builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "dev": true
+ },
+ "node_modules/bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001597",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz",
+ "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "devOptional": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "devOptional": true
+ },
+ "node_modules/computeds": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
+ "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "node_modules/constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+ "dev": true
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ }
+ },
+ "node_modules/create-ecdh/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "node_modules/create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "dependencies": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decache": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz",
+ "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==",
+ "devOptional": true,
+ "dependencies": {
+ "callsite": "^1.0.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "dev": true,
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/des.js": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
+ "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "node_modules/diffie-hellman/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/domain-browser": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz",
+ "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.699",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz",
+ "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==",
+ "devOptional": true
+ },
+ "node_modules/elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "devOptional": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
+ "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/esbuild": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz",
+ "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.20.1",
+ "@esbuild/android-arm": "0.20.1",
+ "@esbuild/android-arm64": "0.20.1",
+ "@esbuild/android-x64": "0.20.1",
+ "@esbuild/darwin-arm64": "0.20.1",
+ "@esbuild/darwin-x64": "0.20.1",
+ "@esbuild/freebsd-arm64": "0.20.1",
+ "@esbuild/freebsd-x64": "0.20.1",
+ "@esbuild/linux-arm": "0.20.1",
+ "@esbuild/linux-arm64": "0.20.1",
+ "@esbuild/linux-ia32": "0.20.1",
+ "@esbuild/linux-loong64": "0.20.1",
+ "@esbuild/linux-mips64el": "0.20.1",
+ "@esbuild/linux-ppc64": "0.20.1",
+ "@esbuild/linux-riscv64": "0.20.1",
+ "@esbuild/linux-s390x": "0.20.1",
+ "@esbuild/linux-x64": "0.20.1",
+ "@esbuild/netbsd-x64": "0.20.1",
+ "@esbuild/openbsd-x64": "0.20.1",
+ "@esbuild/sunos-x64": "0.20.1",
+ "@esbuild/win32-arm64": "0.20.1",
+ "@esbuild/win32-ia32": "0.20.1",
+ "@esbuild/win32-x64": "0.20.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz",
+ "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.5"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.22.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.22.0.tgz",
+ "integrity": "sha512-7wCXv5zuVnBtZE/74z4yZ0CM8AjH6bk4MQGm7hZjUC2DBppKU5ioeOk5LGSg/s9a1ZJnIsdPLJpXnu1Rc+cVHg==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.0",
+ "vue-eslint-parser": "^9.4.2",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.23.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+ "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "devOptional": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "dependencies": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "devOptional": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "devOptional": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/file-loader": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+ "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
+ "devOptional": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "devOptional": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-5.0.0.tgz",
+ "integrity": "sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==",
+ "devOptional": true,
+ "dependencies": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
+ "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+ "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/hash-base/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dev": true,
+ "dependencies": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/https": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
+ "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="
+ },
+ "node_modules/https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.0.tgz",
+ "integrity": "sha512-asnTHw2K8OlqT5kVnQwX+AGKQqpvLo95LbNzQ/C0ln3yzentZmAdd0ygoD004VC4Kkd4PV7J2iaPQkqwp9yuTw==",
+ "dependencies": {
+ "queue": "6.0.2"
+ },
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
+ "node_modules/immutable": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
+ "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
+ "devOptional": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "devOptional": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "devOptional": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "dependencies": {
+ "which-typed-array": "^1.1.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-wsl/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isomorphic-timers-promises": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz",
+ "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
+ "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "devOptional": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "devOptional": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonschema": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz",
+ "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "dependencies": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "node_modules/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.11.5"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "devOptional": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz",
+ "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.0.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/markdown-it-anchor": {
+ "version": "8.6.7",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
+ "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
+ "peerDependencies": {
+ "@types/markdown-it": "*",
+ "markdown-it": "*"
+ }
+ },
+ "node_modules/md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
+ },
+ "node_modules/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "devOptional": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "bin": {
+ "miller-rabin": "bin/miller-rabin"
+ }
+ },
+ "node_modules/miller-rabin/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "node_modules/minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "devOptional": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "devOptional": true
+ },
+ "node_modules/node-stdlib-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz",
+ "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==",
+ "dev": true,
+ "dependencies": {
+ "assert": "^2.0.0",
+ "browser-resolve": "^2.0.0",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^5.7.1",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "create-require": "^1.1.1",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^4.22.0",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "isomorphic-timers-promises": "^1.0.1",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
+ "pkg-dir": "^5.0.0",
+ "process": "^0.11.10",
+ "punycode": "^1.4.1",
+ "querystring-es3": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "stream-browserify": "^3.0.0",
+ "stream-http": "^3.2.0",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.1",
+ "url": "^0.11.0",
+ "util": "^0.12.4",
+ "vm-browserify": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-stdlib-browser/node_modules/pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-stdlib-browser/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
+ "node_modules/node-stdlib-browser/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
+ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-run-all2": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.2.tgz",
+ "integrity": "sha512-WwwnS8Ft+RpXve6T2EIEVpFLSqN+ORHRvgNk3H9N62SZXjmzKoRhMFg3I17TK3oMaAEr+XFbRirWS2Fn3BCPSg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "cross-spawn": "^7.0.3",
+ "memorystream": "^0.3.1",
+ "minimatch": "^9.0.0",
+ "pidtree": "^0.6.0",
+ "read-package-json-fast": "^3.0.2",
+ "shell-quote": "^1.7.3"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "npm-run-all2": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0",
+ "npm": ">= 8"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm-run-all2/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/null-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz",
+ "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==",
+ "devOptional": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "dev": true
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "dependencies": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "dev": true,
+ "dependencies": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "devOptional": true,
+ "dependencies": {
+ "find-up": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "devOptional": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "devOptional": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "devOptional": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "devOptional": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "devOptional": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pptxgenjs": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-3.7.1.tgz",
+ "integrity": "sha512-j1WX7CJHiof6ETHtQe1zQCE+T6V+F3aUWaAqNtK+T495aICEjcy35zbxlsCeNULUcmItxXMGDIM4pz+5FEr+gQ==",
+ "dependencies": {
+ "@types/node": "^16.0.0",
+ "https": "^1.0.0",
+ "image-size": "^1.0.0",
+ "jszip": "^3.6.0"
+ }
+ },
+ "node_modules/pptxgenjs/node_modules/@types/node": {
+ "version": "16.18.68",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz",
+ "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg=="
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
+ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/public-encrypt/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+ "dependencies": {
+ "inherits": "~2.0.3"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "devOptional": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/raw-loader": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
+ "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/read-package-json-fast": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
+ "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
+ "dev": true,
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "devOptional": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "node_modules/roboto-fontface": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/roboto-fontface/-/roboto-fontface-0.10.0.tgz",
+ "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g=="
+ },
+ "node_modules/rollup": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz",
+ "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==",
+ "dependencies": {
+ "@types/estree": "1.0.5"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.12.1",
+ "@rollup/rollup-android-arm64": "4.12.1",
+ "@rollup/rollup-darwin-arm64": "4.12.1",
+ "@rollup/rollup-darwin-x64": "4.12.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.12.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.12.1",
+ "@rollup/rollup-linux-arm64-musl": "4.12.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.12.1",
+ "@rollup/rollup-linux-x64-gnu": "4.12.1",
+ "@rollup/rollup-linux-x64-musl": "4.12.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.12.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.12.1",
+ "@rollup/rollup-win32-x64-msvc": "4.12.1",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-inject": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
+ "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.",
+ "dependencies": {
+ "estree-walker": "^0.6.1",
+ "magic-string": "^0.25.3",
+ "rollup-pluginutils": "^2.8.1"
+ }
+ },
+ "node_modules/rollup-plugin-inject/node_modules/estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
+ },
+ "node_modules/rollup-plugin-inject/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/rollup-plugin-node-polyfills": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
+ "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
+ "dependencies": {
+ "rollup-plugin-inject": "^3.0.0"
+ }
+ },
+ "node_modules/rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+ "dependencies": {
+ "estree-walker": "^0.6.1"
+ }
+ },
+ "node_modules/rollup-pluginutils/node_modules/estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
+ },
+ "node_modules/run-applescript": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/run-applescript/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/run-applescript/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/run-applescript/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/run-applescript/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-applescript/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/sass": {
+ "version": "1.71.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz",
+ "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==",
+ "devOptional": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "devOptional": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
+ "node_modules/sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ },
+ "bin": {
+ "shjs": "bin/shjs"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "node_modules/stream-browserify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+ "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "~2.0.4",
+ "readable-stream": "^3.5.0"
+ }
+ },
+ "node_modules/stream-browserify/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/stream-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+ "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ }
+ },
+ "node_modules/stream-http/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/synckit": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
+ "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
+ "dev": true,
+ "dependencies": {
+ "@pkgr/utils": "^2.3.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.24.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
+ "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "dev": true,
+ "dependencies": {
+ "setimmediate": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "devOptional": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "node_modules/tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
+ "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/uc.micro": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz",
+ "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig=="
+ },
+ "node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true
+ },
+ "node_modules/unhead": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.13.tgz",
+ "integrity": "sha512-VL1eOXc1U0zI6XO2JJQ98tywcEW9cM6tfrmuNcltOKSB7Xg3isVXFSf2bEbO4XPUjg8D5Uy3Q3Zi9cN9XSiTyA==",
+ "dependencies": {
+ "@unhead/dom": "1.8.13",
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13",
+ "hookable": "^5.5.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ },
+ "node_modules/untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/upath": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==",
+ "engines": {
+ "node": ">=4",
+ "yarn": "*"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "devOptional": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "devOptional": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url": {
+ "version": "0.11.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz",
+ "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^1.4.1",
+ "qs": "^6.11.2"
+ }
+ },
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
+ "node_modules/util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/vite": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz",
+ "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==",
+ "dependencies": {
+ "esbuild": "^0.19.3",
+ "postcss": "^8.4.35",
+ "rollup": "^4.2.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || >=20.0.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-node-polyfills": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz",
+ "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/plugin-inject": "^5.0.5",
+ "node-stdlib-browser": "^1.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/davidmyersdev"
+ },
+ "peerDependencies": {
+ "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/vite-plugin-vuetify": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.3.tgz",
+ "integrity": "sha512-HbYajgGgb/noaVKNRhnnXIiQZrNXfNIeanUGAwXgOxL6h/KULS40Uf51Kyz8hNmdegF+DwjgXXI/8J1PNS83xw==",
+ "dependencies": {
+ "@vuetify/loader-shared": "^2.0.3",
+ "debug": "^4.3.3",
+ "upath": "^2.0.1"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": ">=5",
+ "vue": "^3.0.0",
+ "vuetify": "^3.0.0"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
+ "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
+ "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
+ "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
+ "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
+ "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
+ "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
+ "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
+ "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
+ "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
+ "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
+ "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
+ "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
+ "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
+ "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
+ "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
+ "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
+ "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
+ "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
+ "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
+ "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
+ "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
+ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.19.12",
+ "@esbuild/android-arm": "0.19.12",
+ "@esbuild/android-arm64": "0.19.12",
+ "@esbuild/android-x64": "0.19.12",
+ "@esbuild/darwin-arm64": "0.19.12",
+ "@esbuild/darwin-x64": "0.19.12",
+ "@esbuild/freebsd-arm64": "0.19.12",
+ "@esbuild/freebsd-x64": "0.19.12",
+ "@esbuild/linux-arm": "0.19.12",
+ "@esbuild/linux-arm64": "0.19.12",
+ "@esbuild/linux-ia32": "0.19.12",
+ "@esbuild/linux-loong64": "0.19.12",
+ "@esbuild/linux-mips64el": "0.19.12",
+ "@esbuild/linux-ppc64": "0.19.12",
+ "@esbuild/linux-riscv64": "0.19.12",
+ "@esbuild/linux-s390x": "0.19.12",
+ "@esbuild/linux-x64": "0.19.12",
+ "@esbuild/netbsd-x64": "0.19.12",
+ "@esbuild/openbsd-x64": "0.19.12",
+ "@esbuild/sunos-x64": "0.19.12",
+ "@esbuild/win32-arm64": "0.19.12",
+ "@esbuild/win32-ia32": "0.19.12",
+ "@esbuild/win32-x64": "0.19.12"
+ }
+ },
+ "node_modules/vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "node_modules/vue": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz",
+ "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/runtime-dom": "3.4.21",
+ "@vue/server-renderer": "3.4.21",
+ "@vue/shared": "3.4.21"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-cli-plugin-vuetify": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.8.tgz",
+ "integrity": "sha512-uqi0/URJETJBbWlQHD1l0pnY7JN8Ytu+AL1fw50HFlGByPa8/xx+mq19GkFXA9FcwFT01IqEc/TkxMPugchomg==",
+ "dev": true,
+ "dependencies": {
+ "null-loader": "^4.0.1",
+ "semver": "^7.1.2",
+ "shelljs": "^0.8.3"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "sass-loader": {
+ "optional": true
+ },
+ "vuetify-loader": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-cli-plugin-vuetify/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-cli-plugin-vuetify/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-cli-plugin-vuetify/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/vue-draggable-plus": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/vue-draggable-plus/-/vue-draggable-plus-0.3.5.tgz",
+ "integrity": "sha512-HqIxV4Wr4U5LRPLRi2oV+EJ4g6ibyRKhuaiH4ZQo+LxK4zrk2XcBk9UyXC88OXp4SAq0XYH4Wco/T3LX5kJ79A==",
+ "peerDependencies": {
+ "@types/sortablejs": "^1.15.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/vue-gtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vue-gtag/-/vue-gtag-2.0.1.tgz",
+ "integrity": "sha512-aM4A58FVL0wV2ptYi+xzAjeg+pQVRyUcfBc5UkXAwQrR4t3WBhor50Izp2I+3Oo7+l+vWJ7u78DGcNzReb8S/A==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz",
+ "integrity": "sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-template-compiler": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.6.tgz",
+ "integrity": "sha512-kK50W4XqQL34vHRkxlRWLicrT6+F9xfgCgJ4KSmCHcytKzc1u3c94XXgI+CjmhOSxyw0krpExF7Obo7y4+0dVQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/typescript": "~2.1.2",
+ "@vue/language-core": "2.0.6",
+ "semver": "^7.5.4"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/vue-tsc/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-tsc/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-tsc/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/vuetify": {
+ "version": "3.5.8",
+ "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.5.8.tgz",
+ "integrity": "sha512-8nGS+lKejZkev55HFwIfsRt+9fOqbeDQNmXxfmLKAlnUT8FtynVwbjAwHMtX/OQAQ3ZwRaR1ptqQQmx3OgxzbQ==",
+ "engines": {
+ "node": "^12.20 || >=14.13"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/johnleider"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.7",
+ "vite-plugin-vuetify": ">=1.0.0-alpha.12",
+ "vue": "^3.3.0",
+ "vue-i18n": "^9.0.0",
+ "webpack-plugin-vuetify": ">=2.0.0-alpha.11"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ },
+ "vite-plugin-vuetify": {
+ "optional": true
+ },
+ "vue-i18n": {
+ "optional": true
+ },
+ "webpack-plugin-vuetify": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webfontloader": {
+ "version": "1.6.28",
+ "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz",
+ "integrity": "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ=="
+ },
+ "node_modules/webpack": {
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
+ "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.15.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-plugin-vuetify": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/webpack-plugin-vuetify/-/webpack-plugin-vuetify-3.0.3.tgz",
+ "integrity": "sha512-pYTLcrufc00PzqHZhG/zLylGE07uC0hB6SisvSYuN6hyjKCf9rtdm2UaIG7kExfhZa3U1WKU7mYXFi1jDEc+vQ==",
+ "devOptional": true,
+ "dependencies": {
+ "@vuetify/loader-shared": "^2.0.3",
+ "decache": "^4.6.0",
+ "file-loader": "^6.2.0",
+ "find-cache-dir": "^5.0.0",
+ "loader-utils": "^2.0.0",
+ "mkdirp": "^1.0.4",
+ "null-loader": "^4.0.1",
+ "upath": "^2.0.1"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "@vue/compiler-sfc": "^3.2.6",
+ "vue": "^3.2.6",
+ "vuetify": "^3.0.0",
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "devOptional": true,
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "devOptional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/webpack/node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zhead": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz",
+ "integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==",
+ "funding": {
+ "url": "https://github.com/sponsors/harlan-zw"
+ }
+ }
+ },
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz",
+ "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.0",
+ "@babel/parser": "^7.24.0",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.0",
+ "@babel/types": "^7.24.0",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz",
+ "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true
+ },
+ "@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.23.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "dev": true
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "dev": true
+ },
+ "@babel/helpers": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz",
+ "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
+ "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg=="
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-typescript": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
+ "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ }
+ },
+ "@babel/template": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
+ "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
+ "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@esbuild-plugins/node-globals-polyfill": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
+ "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==",
+ "requires": {}
+ },
+ "@esbuild-plugins/node-modules-polyfill": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz",
+ "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==",
+ "requires": {
+ "escape-string-regexp": "^4.0.0",
+ "rollup-plugin-node-polyfills": "^0.2.1"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+ }
+ }
+ },
+ "@esbuild/aix-ppc64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz",
+ "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==",
+ "optional": true
+ },
+ "@esbuild/android-arm": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz",
+ "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==",
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz",
+ "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==",
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz",
+ "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==",
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz",
+ "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==",
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz",
+ "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==",
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz",
+ "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==",
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz",
+ "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==",
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz",
+ "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==",
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz",
+ "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==",
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz",
+ "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==",
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz",
+ "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==",
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz",
+ "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==",
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz",
+ "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==",
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz",
+ "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==",
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz",
+ "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==",
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz",
+ "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==",
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz",
+ "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==",
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz",
+ "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==",
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz",
+ "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==",
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz",
+ "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==",
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz",
+ "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==",
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz",
+ "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==",
+ "optional": true
+ },
+ "@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^3.3.0"
+ }
+ },
+ "@eslint-community/regexpp": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz",
+ "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==",
+ "dev": true
+ },
+ "@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ }
+ }
+ },
+ "@eslint/js": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
+ "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "dev": true
+ },
+ "@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "requires": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ }
+ },
+ "@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true
+ },
+ "@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "devOptional": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "devOptional": true
+ },
+ "@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.20",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
+ "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
+ "devOptional": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@mdi/font": {
+ "version": "7.4.47",
+ "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz",
+ "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw=="
+ },
+ "@mdit-vue/plugin-frontmatter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-2.0.0.tgz",
+ "integrity": "sha512-/LrT6E60QI4XV4mqx3J87hqYXlR7ZyMvndmftR2RGz7cRAwa/xL+kyFLlgrMxkBIKitOShKa3LS/9Ov9b0fU+g==",
+ "requires": {
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "gray-matter": "^4.0.3",
+ "markdown-it": "^14.0.0"
+ },
+ "dependencies": {
+ "@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ }
+ }
+ },
+ "@mdit-vue/plugin-toc": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/plugin-toc/-/plugin-toc-2.0.0.tgz",
+ "integrity": "sha512-PKQ8sZna3D5chTnt2lxL+ddpyXd++6Nyc0l8VXCeDgStlySQwiP9jaLeeC88oqY4BtRu4cAmILmxDrvuX0Rrdg==",
+ "requires": {
+ "@mdit-vue/shared": "2.0.0",
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "markdown-it": "^14.0.0"
+ },
+ "dependencies": {
+ "@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ }
+ }
+ },
+ "@mdit-vue/shared": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/shared/-/shared-2.0.0.tgz",
+ "integrity": "sha512-PdxpQpbyTazeo2JT87qms6RPZIzyJd+gwuB+1jSwLDI7+0u5g79y2XgTAbZromSVgY2f3UU5HWdwaLbV9w4uOw==",
+ "requires": {
+ "@mdit-vue/types": "2.0.0",
+ "@types/markdown-it": "^13.0.7",
+ "markdown-it": "^14.0.0"
+ },
+ "dependencies": {
+ "@types/markdown-it": {
+ "version": "13.0.7",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz",
+ "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==",
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ }
+ }
+ },
+ "@mdit-vue/types": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@mdit-vue/types/-/types-2.0.0.tgz",
+ "integrity": "sha512-1BeEB+DbtmDMUAfvbNUj5Hso8cSl2sBVK2iTyOMAqhfDVLdh+/9+D0JmQHaCeUk/vuJoMhOwbweZvh55wHxm4w=="
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@pkgr/utils": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+ "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "fast-glob": "^3.3.0",
+ "is-glob": "^4.0.3",
+ "open": "^9.1.0",
+ "picocolors": "^1.0.0",
+ "tslib": "^2.6.0"
+ }
+ },
+ "@rollup/plugin-inject": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz",
+ "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==",
+ "dev": true,
+ "requires": {
+ "@rollup/pluginutils": "^5.0.1",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.3"
+ }
+ },
+ "@rollup/pluginutils": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
+ "dev": true,
+ "requires": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "@rollup/rollup-android-arm-eabi": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz",
+ "integrity": "sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==",
+ "optional": true
+ },
+ "@rollup/rollup-android-arm64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.1.tgz",
+ "integrity": "sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==",
+ "optional": true
+ },
+ "@rollup/rollup-darwin-arm64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.1.tgz",
+ "integrity": "sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==",
+ "optional": true
+ },
+ "@rollup/rollup-darwin-x64": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.1.tgz",
+ "integrity": "sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.1.tgz",
+ "integrity": "sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.1.tgz",
+ "integrity": "sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-arm64-musl": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.1.tgz",
+ "integrity": "sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.1.tgz",
+ "integrity": "sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-x64-gnu": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.1.tgz",
+ "integrity": "sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==",
+ "optional": true
+ },
+ "@rollup/rollup-linux-x64-musl": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.1.tgz",
+ "integrity": "sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==",
+ "optional": true
+ },
+ "@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.1.tgz",
+ "integrity": "sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==",
+ "optional": true
+ },
+ "@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.1.tgz",
+ "integrity": "sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==",
+ "optional": true
+ },
+ "@rollup/rollup-win32-x64-msvc": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.1.tgz",
+ "integrity": "sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==",
+ "optional": true
+ },
+ "@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
+ "@tsconfig/node18": {
+ "version": "18.2.2",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz",
+ "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==",
+ "dev": true
+ },
+ "@types/eslint": {
+ "version": "8.44.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz",
+ "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "@types/eslint-scope": {
+ "version": "3.7.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz",
+ "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "@types/estree": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
+ },
+ "@types/json-schema": {
+ "version": "7.0.14",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz",
+ "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==",
+ "devOptional": true
+ },
+ "@types/linkify-it": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz",
+ "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw=="
+ },
+ "@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "peer": true,
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "@types/mdurl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz",
+ "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA=="
+ },
+ "@types/node": {
+ "version": "20.11.25",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz",
+ "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==",
+ "devOptional": true,
+ "requires": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "@types/semver": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
+ "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
+ "dev": true
+ },
+ "@types/sortablejs": {
+ "version": "1.15.8",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz",
+ "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
+ "peer": true
+ },
+ "@types/webfontloader": {
+ "version": "1.6.38",
+ "resolved": "https://registry.npmjs.org/@types/webfontloader/-/webfontloader-1.6.38.tgz",
+ "integrity": "sha512-kUaF72Fv202suFx6yBrwXqeVRMx7hGtJTesyESZgn9sEPCUeDXm2p0SiyS1MTqW74nQP4p7JyrOCwZ7pNFns4w==",
+ "dev": true
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz",
+ "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==",
+ "dev": true,
+ "requires": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/type-utils": "7.1.1",
+ "@typescript-eslint/utils": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz",
+ "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4"
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz",
+ "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1"
+ }
+ },
+ "@typescript-eslint/type-utils": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz",
+ "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "@typescript-eslint/utils": "7.1.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz",
+ "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz",
+ "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/visitor-keys": "7.1.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "@typescript-eslint/utils": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz",
+ "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==",
+ "dev": true,
+ "requires": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "7.1.1",
+ "@typescript-eslint/types": "7.1.1",
+ "@typescript-eslint/typescript-estree": "7.1.1",
+ "semver": "^7.5.4"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz",
+ "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "7.1.1",
+ "eslint-visitor-keys": "^3.4.1"
+ }
+ },
+ "@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "@unhead/dom": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.8.13.tgz",
+ "integrity": "sha512-BWqtatmrcrT+rN/FBZ/Il7mW0TuPlS4bXrsZewAVanOPU3ahr+sHAIUDJmDjziBjSUsO5wLOEYXA+4t08AZnrQ==",
+ "requires": {
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13"
+ }
+ },
+ "@unhead/schema": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.8.13.tgz",
+ "integrity": "sha512-38SMOv/RaTtldOJx2/Mezlg3xlMeAAFtyI+M7vwj8Qb0xAosRc804ct3Xta5ecFMe9bEXQbZWEIKydU6ZV6B7w==",
+ "requires": {
+ "hookable": "^5.5.3",
+ "zhead": "^2.2.4"
+ }
+ },
+ "@unhead/shared": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.8.13.tgz",
+ "integrity": "sha512-NV/quz31oqkITx+Epwzgf01AaYMPTzvkEdg9jvGltTWeSHWKtowUeTRPfWUc3TTPtCzrYgHQQjGN8YOHdWjC7Q==",
+ "requires": {
+ "@unhead/schema": "1.8.13"
+ }
+ },
+ "@unhead/vue": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.8.13.tgz",
+ "integrity": "sha512-2CIwSeadfJxFfY44nz7U+w/F7lg646aw2t8G58P4A08t6KtPRoAVA0cR0iX+yqQEZIAKYEoaNINv3p/GMxyvBw==",
+ "requires": {
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13",
+ "hookable": "^5.5.3",
+ "unhead": "1.8.13"
+ }
+ },
+ "@vitejs/plugin-vue": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",
+ "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vitejs/plugin-vue-jsx": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz",
+ "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.23.3",
+ "@babel/plugin-transform-typescript": "^7.23.3",
+ "@vue/babel-plugin-jsx": "^1.1.5"
+ }
+ },
+ "@volar/language-core": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.1.2.tgz",
+ "integrity": "sha512-5qsDp0Gf6fE09UWCeK7bkVn6NxMwC9OqFWQkMMkeej8h8XjyABPdRygC2RCrqDrfVdGijqlMQeXs6yRS+vfZYA==",
+ "dev": true,
+ "requires": {
+ "@volar/source-map": "2.1.2"
+ }
+ },
+ "@volar/source-map": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.1.2.tgz",
+ "integrity": "sha512-yFJqsuLm1OaWrsz9E3yd3bJcYIlHqdZ8MbmIoZLrAzMYQDcoF26/INIhgziEXSdyHc8xd7rd/tJdSnUyh0gH4Q==",
+ "dev": true,
+ "requires": {
+ "muggle-string": "^0.4.0"
+ }
+ },
+ "@volar/typescript": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.1.2.tgz",
+ "integrity": "sha512-lhTancZqamvaLvoz0u/uth8dpudENNt2LFZOWCw9JZiX14xRFhdhfzmphiCRb7am9E6qAJSbdS/gMt1utXAoHQ==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "2.1.2",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+ "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+ "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5",
+ "@vue/babel-helper-vue-transform-on": "^1.1.5",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz",
+ "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==",
+ "requires": {
+ "@babel/parser": "^7.23.9",
+ "@vue/shared": "3.4.21",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz",
+ "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==",
+ "requires": {
+ "@vue/compiler-core": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz",
+ "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==",
+ "requires": {
+ "@babel/parser": "^7.23.9",
+ "@vue/compiler-core": "3.4.21",
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.7",
+ "postcss": "^8.4.35",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz",
+ "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "@vue/eslint-config-prettier": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
+ "integrity": "sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==",
+ "dev": true,
+ "requires": {
+ "eslint-config-prettier": "^9.0.0",
+ "eslint-plugin-prettier": "^5.0.0"
+ }
+ },
+ "@vue/eslint-config-typescript": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz",
+ "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/eslint-plugin": "^7.1.1",
+ "@typescript-eslint/parser": "^7.1.1",
+ "vue-eslint-parser": "^9.3.1"
+ }
+ },
+ "@vue/language-core": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.6.tgz",
+ "integrity": "sha512-UzqU12tzf9XLqRO3TiWPwRNpP4fyUzE6MAfOQWQNZ4jy6a30ARRUpmODDKq6O8C4goMc2AlPqTmjOHPjHkilSg==",
+ "dev": true,
+ "requires": {
+ "@volar/language-core": "~2.1.2",
+ "@vue/compiler-dom": "^3.4.0",
+ "@vue/shared": "^3.4.0",
+ "computeds": "^0.0.1",
+ "minimatch": "^9.0.3",
+ "path-browserify": "^1.0.1",
+ "vue-template-compiler": "^2.7.14"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
+ "@vue/reactivity": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz",
+ "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==",
+ "requires": {
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz",
+ "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==",
+ "requires": {
+ "@vue/reactivity": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz",
+ "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==",
+ "requires": {
+ "@vue/runtime-core": "3.4.21",
+ "@vue/shared": "3.4.21",
+ "csstype": "^3.1.3"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz",
+ "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==",
+ "requires": {
+ "@vue/compiler-ssr": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz",
+ "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g=="
+ },
+ "@vue/tsconfig": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.5.1.tgz",
+ "integrity": "sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==",
+ "dev": true
+ },
+ "@vuetify/loader-shared": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.0.3.tgz",
+ "integrity": "sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==",
+ "requires": {
+ "upath": "^2.0.1"
+ }
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz",
+ "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/helper-numbers": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
+ "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
+ "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz",
+ "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-numbers": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
+ "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/floating-point-hex-parser": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
+ "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz",
+ "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
+ "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
+ "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
+ "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz",
+ "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz",
+ "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz",
+ "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz",
+ "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-api-error": "1.11.6",
+ "@webassemblyjs/helper-wasm-bytecode": "1.11.6",
+ "@webassemblyjs/ieee754": "1.11.6",
+ "@webassemblyjs/leb128": "1.11.6",
+ "@webassemblyjs/utf8": "1.11.6"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz",
+ "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.11.6",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "devOptional": true,
+ "peer": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+ "devOptional": true
+ },
+ "acorn-import-assertions": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
+ "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {}
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "devOptional": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "devOptional": true,
+ "requires": {}
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "devOptional": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "assert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
+ "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "is-nan": "^1.3.2",
+ "object-is": "^1.1.5",
+ "object.assign": "^4.1.4",
+ "util": "^0.12.5"
+ }
+ },
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "devOptional": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "devOptional": true
+ },
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
+ "dev": true,
+ "requires": {
+ "big-integer": "^1.6.44"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "devOptional": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "dev": true
+ },
+ "browser-resolve": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz",
+ "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.17.0"
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
+ "dev": true,
+ "requires": {
+ "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.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "devOptional": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001587",
+ "electron-to-chromium": "^1.4.668",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "dev": true
+ },
+ "bundle-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
+ "dev": true,
+ "requires": {
+ "run-applescript": "^5.0.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.1",
+ "set-function-length": "^1.1.1"
+ }
+ },
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==",
+ "devOptional": true
+ },
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001597",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz",
+ "integrity": "sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==",
+ "devOptional": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "devOptional": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "devOptional": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
+ "chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "devOptional": true,
+ "peer": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "common-path-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
+ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==",
+ "devOptional": true
+ },
+ "computeds": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
+ "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decache": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.2.tgz",
+ "integrity": "sha512-2LPqkLeu8XWHU8qNCS3kcF6sCcb5zIzvWaAHYSvPfwhdd7mHuah29NssMzrTYyHN4F5oFy2ko9OBYxegtU0FEw==",
+ "devOptional": true,
+ "requires": {
+ "callsite": "^1.0.0"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
+ "dev": true,
+ "requires": {
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
+ }
+ },
+ "default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
+ "dev": true,
+ "requires": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ }
+ },
+ "define-data-property": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "des.js": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
+ "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "domain-browser": {
+ "version": "4.23.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz",
+ "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.699",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz",
+ "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==",
+ "devOptional": true
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "devOptional": true
+ },
+ "enhanced-resolve": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz",
+ "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ }
+ },
+ "entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
+ },
+ "es-module-lexer": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
+ "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==",
+ "devOptional": true,
+ "peer": true
+ },
+ "esbuild": {
+ "version": "0.20.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz",
+ "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==",
+ "requires": {
+ "@esbuild/aix-ppc64": "0.20.1",
+ "@esbuild/android-arm": "0.20.1",
+ "@esbuild/android-arm64": "0.20.1",
+ "@esbuild/android-x64": "0.20.1",
+ "@esbuild/darwin-arm64": "0.20.1",
+ "@esbuild/darwin-x64": "0.20.1",
+ "@esbuild/freebsd-arm64": "0.20.1",
+ "@esbuild/freebsd-x64": "0.20.1",
+ "@esbuild/linux-arm": "0.20.1",
+ "@esbuild/linux-arm64": "0.20.1",
+ "@esbuild/linux-ia32": "0.20.1",
+ "@esbuild/linux-loong64": "0.20.1",
+ "@esbuild/linux-mips64el": "0.20.1",
+ "@esbuild/linux-ppc64": "0.20.1",
+ "@esbuild/linux-riscv64": "0.20.1",
+ "@esbuild/linux-s390x": "0.20.1",
+ "@esbuild/linux-x64": "0.20.1",
+ "@esbuild/netbsd-x64": "0.20.1",
+ "@esbuild/openbsd-x64": "0.20.1",
+ "@esbuild/sunos-x64": "0.20.1",
+ "@esbuild/win32-arm64": "0.20.1",
+ "@esbuild/win32-ia32": "0.20.1",
+ "@esbuild/win32-x64": "0.20.1"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "devOptional": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "eslint": {
+ "version": "8.57.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
+ "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "dev": true,
+ "requires": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.0",
+ "@humanwhocodes/config-array": "^0.11.14",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "globals": {
+ "version": "13.23.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
+ "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.20.2"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+ "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+ "dev": true,
+ "requires": {}
+ },
+ "eslint-plugin-prettier": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz",
+ "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.5"
+ }
+ },
+ "eslint-plugin-vue": {
+ "version": "9.22.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.22.0.tgz",
+ "integrity": "sha512-7wCXv5zuVnBtZE/74z4yZ0CM8AjH6bk4MQGm7hZjUC2DBppKU5ioeOk5LGSg/s9a1ZJnIsdPLJpXnu1Rc+cVHg==",
+ "dev": true,
+ "requires": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.0",
+ "vue-eslint-parser": "^9.4.2",
+ "xml-name-validator": "^4.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true
+ },
+ "espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "requires": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "devOptional": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "devOptional": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "devOptional": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "devOptional": true
+ },
+ "fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "devOptional": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^3.0.4"
+ }
+ },
+ "file-loader": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz",
+ "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==",
+ "devOptional": true,
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "devOptional": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-cache-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-5.0.0.tgz",
+ "integrity": "sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==",
+ "devOptional": true,
+ "requires": {
+ "common-path-prefix": "^3.0.0",
+ "pkg-dir": "^7.0.0"
+ }
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz",
+ "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==",
+ "dev": true,
+ "requires": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ }
+ },
+ "flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.3"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "requires": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ }
+ }
+ },
+ "has": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+ "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "has-property-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.2"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.2"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
+ },
+ "html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true
+ },
+ "https": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
+ "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "dev": true
+ },
+ "human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true
+ },
+ "image-size": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.0.tgz",
+ "integrity": "sha512-asnTHw2K8OlqT5kVnQwX+AGKQqpvLo95LbNzQ/C0ln3yzentZmAdd0ygoD004VC4Kkd4PV7J2iaPQkqwp9yuTw==",
+ "requires": {
+ "queue": "6.0.2"
+ }
+ },
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
+ "immutable": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
+ "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
+ "devOptional": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "devOptional": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true
+ },
+ "is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "devOptional": true
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "devOptional": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^3.0.0"
+ }
+ },
+ "is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "devOptional": true
+ },
+ "is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true
+ },
+ "is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "dev": true,
+ "requires": {
+ "which-typed-array": "^1.1.11"
+ }
+ },
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0"
+ },
+ "dependencies": {
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ }
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "isomorphic-timers-promises": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz",
+ "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==",
+ "dev": true
+ },
+ "jest-worker": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+ "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.0.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
+ "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "devOptional": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "devOptional": true
+ },
+ "jsonschema": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz",
+ "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ=="
+ },
+ "jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "requires": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+ },
+ "levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ }
+ },
+ "lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "requires": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "requires": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+ "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
+ "devOptional": true,
+ "peer": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "devOptional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "requires": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "markdown-it": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz",
+ "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==",
+ "requires": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "markdown-it-anchor": {
+ "version": "8.6.7",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz",
+ "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==",
+ "requires": {}
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "devOptional": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "devOptional": true,
+ "peer": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "devOptional": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "dev": true
+ },
+ "nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "devOptional": true
+ },
+ "node-stdlib-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz",
+ "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==",
+ "dev": true,
+ "requires": {
+ "assert": "^2.0.0",
+ "browser-resolve": "^2.0.0",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^5.7.1",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "create-require": "^1.1.1",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^4.22.0",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "isomorphic-timers-promises": "^1.0.1",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
+ "pkg-dir": "^5.0.0",
+ "process": "^0.11.10",
+ "punycode": "^1.4.1",
+ "querystring-es3": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "stream-browserify": "^3.0.0",
+ "stream-http": "^3.2.0",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.1",
+ "url": "^0.11.0",
+ "util": "^0.12.4",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^5.0.0"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "devOptional": true
+ },
+ "npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz",
+ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==",
+ "dev": true
+ },
+ "npm-run-all2": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.2.tgz",
+ "integrity": "sha512-WwwnS8Ft+RpXve6T2EIEVpFLSqN+ORHRvgNk3H9N62SZXjmzKoRhMFg3I17TK3oMaAEr+XFbRirWS2Fn3BCPSg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^6.2.1",
+ "cross-spawn": "^7.0.3",
+ "memorystream": "^0.3.1",
+ "minimatch": "^9.0.0",
+ "pidtree": "^0.6.0",
+ "read-package-json-fast": "^3.0.2",
+ "shell-quote": "^1.7.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
+ "npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "requires": {
+ "path-key": "^4.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true
+ }
+ }
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "null-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-4.0.1.tgz",
+ "integrity": "sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==",
+ "devOptional": true,
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ }
+ },
+ "object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
+ "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^4.0.0"
+ }
+ },
+ "open": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz",
+ "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==",
+ "dev": true,
+ "requires": {
+ "default-browser": "^4.0.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^2.2.0"
+ }
+ },
+ "optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "requires": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "devOptional": true
+ },
+ "pidtree": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz",
+ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==",
+ "dev": true
+ },
+ "pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "dependencies": {
+ "vue-demi": {
+ "version": "0.14.6",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+ "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+ "requires": {}
+ }
+ }
+ },
+ "pkg-dir": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz",
+ "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==",
+ "devOptional": true,
+ "requires": {
+ "find-up": "^6.3.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "devOptional": true,
+ "requires": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "devOptional": true,
+ "requires": {
+ "p-locate": "^6.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "devOptional": true,
+ "requires": {
+ "yocto-queue": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "devOptional": true,
+ "requires": {
+ "p-limit": "^4.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "devOptional": true
+ },
+ "yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "devOptional": true
+ }
+ }
+ },
+ "pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="
+ },
+ "postcss": {
+ "version": "8.4.35",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
+ "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
+ "requires": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "pptxgenjs": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-3.7.1.tgz",
+ "integrity": "sha512-j1WX7CJHiof6ETHtQe1zQCE+T6V+F3aUWaAqNtK+T495aICEjcy35zbxlsCeNULUcmItxXMGDIM4pz+5FEr+gQ==",
+ "requires": {
+ "@types/node": "^16.0.0",
+ "https": "^1.0.0",
+ "image-size": "^1.0.0",
+ "jszip": "^3.6.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "16.18.68",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz",
+ "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg=="
+ }
+ }
+ },
+ "prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true
+ },
+ "prettier": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
+ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
+ "dev": true
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "devOptional": true
+ },
+ "punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="
+ },
+ "qs": {
+ "version": "6.11.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+ "dev": true
+ },
+ "queue": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
+ "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
+ "requires": {
+ "inherits": "~2.0.3"
+ }
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "devOptional": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "raw-loader": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
+ "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ }
+ },
+ "read-package-json-fast": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz",
+ "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==",
+ "dev": true,
+ "requires": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "devOptional": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "roboto-fontface": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/roboto-fontface/-/roboto-fontface-0.10.0.tgz",
+ "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g=="
+ },
+ "rollup": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.1.tgz",
+ "integrity": "sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==",
+ "requires": {
+ "@rollup/rollup-android-arm-eabi": "4.12.1",
+ "@rollup/rollup-android-arm64": "4.12.1",
+ "@rollup/rollup-darwin-arm64": "4.12.1",
+ "@rollup/rollup-darwin-x64": "4.12.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.12.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.12.1",
+ "@rollup/rollup-linux-arm64-musl": "4.12.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.12.1",
+ "@rollup/rollup-linux-x64-gnu": "4.12.1",
+ "@rollup/rollup-linux-x64-musl": "4.12.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.12.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.12.1",
+ "@rollup/rollup-win32-x64-msvc": "4.12.1",
+ "@types/estree": "1.0.5",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "rollup-plugin-inject": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
+ "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
+ "requires": {
+ "estree-walker": "^0.6.1",
+ "magic-string": "^0.25.3",
+ "rollup-pluginutils": "^2.8.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
+ },
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ }
+ }
+ },
+ "rollup-plugin-node-polyfills": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
+ "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
+ "requires": {
+ "rollup-plugin-inject": "^3.0.0"
+ }
+ },
+ "rollup-pluginutils": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
+ "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
+ "requires": {
+ "estree-walker": "^0.6.1"
+ },
+ "dependencies": {
+ "estree-walker": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
+ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w=="
+ }
+ }
+ },
+ "run-applescript": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz",
+ "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==",
+ "dev": true,
+ "requires": {
+ "execa": "^5.0.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ }
+ }
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "devOptional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sass": {
+ "version": "1.71.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz",
+ "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==",
+ "devOptional": true,
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "devOptional": true,
+ "requires": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
+ "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "set-function-length": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+ "dev": true,
+ "requires": {
+ "define-data-property": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.0"
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "devOptional": true,
+ "peer": true
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "stream-browserify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz",
+ "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.4",
+ "readable-stream": "^3.5.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "stream-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz",
+ "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="
+ },
+ "strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "synckit": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
+ "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
+ "dev": true,
+ "requires": {
+ "@pkgr/utils": "^2.3.1",
+ "tslib": "^2.5.0"
+ }
+ },
+ "tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "devOptional": true,
+ "peer": true
+ },
+ "terser": {
+ "version": "5.24.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz",
+ "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "5.3.9",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz",
+ "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^3.1.1",
+ "serialize-javascript": "^6.0.1",
+ "terser": "^5.16.8"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "titleize": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz",
+ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "devOptional": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "ts-api-utils": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
+ "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "^1.2.1"
+ }
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true
+ },
+ "typescript": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
+ "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==",
+ "devOptional": true
+ },
+ "uc.micro": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz",
+ "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig=="
+ },
+ "undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "devOptional": true
+ },
+ "unhead": {
+ "version": "1.8.13",
+ "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.8.13.tgz",
+ "integrity": "sha512-VL1eOXc1U0zI6XO2JJQ98tywcEW9cM6tfrmuNcltOKSB7Xg3isVXFSf2bEbO4XPUjg8D5Uy3Q3Zi9cN9XSiTyA==",
+ "requires": {
+ "@unhead/dom": "1.8.13",
+ "@unhead/schema": "1.8.13",
+ "@unhead/shared": "1.8.13",
+ "hookable": "^5.5.3"
+ }
+ },
+ "untildify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
+ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
+ "dev": true
+ },
+ "upath": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
+ "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w=="
+ },
+ "update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "devOptional": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "devOptional": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "url": {
+ "version": "0.11.3",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz",
+ "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.4.1",
+ "qs": "^6.11.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ }
+ }
+ },
+ "util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "vite": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz",
+ "integrity": "sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==",
+ "requires": {
+ "esbuild": "^0.19.3",
+ "fsevents": "~2.3.3",
+ "postcss": "^8.4.35",
+ "rollup": "^4.2.0"
+ },
+ "dependencies": {
+ "@esbuild/aix-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
+ "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+ "optional": true
+ },
+ "@esbuild/android-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
+ "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+ "optional": true
+ },
+ "@esbuild/android-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
+ "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+ "optional": true
+ },
+ "@esbuild/android-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
+ "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+ "optional": true
+ },
+ "@esbuild/darwin-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
+ "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+ "optional": true
+ },
+ "@esbuild/darwin-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
+ "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+ "optional": true
+ },
+ "@esbuild/freebsd-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
+ "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+ "optional": true
+ },
+ "@esbuild/freebsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
+ "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+ "optional": true
+ },
+ "@esbuild/linux-arm": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
+ "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+ "optional": true
+ },
+ "@esbuild/linux-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
+ "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+ "optional": true
+ },
+ "@esbuild/linux-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
+ "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+ "optional": true
+ },
+ "@esbuild/linux-loong64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
+ "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+ "optional": true
+ },
+ "@esbuild/linux-mips64el": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
+ "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+ "optional": true
+ },
+ "@esbuild/linux-ppc64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
+ "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+ "optional": true
+ },
+ "@esbuild/linux-riscv64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
+ "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+ "optional": true
+ },
+ "@esbuild/linux-s390x": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
+ "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+ "optional": true
+ },
+ "@esbuild/linux-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
+ "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+ "optional": true
+ },
+ "@esbuild/netbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+ "optional": true
+ },
+ "@esbuild/openbsd-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
+ "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+ "optional": true
+ },
+ "@esbuild/sunos-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
+ "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+ "optional": true
+ },
+ "@esbuild/win32-arm64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
+ "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+ "optional": true
+ },
+ "@esbuild/win32-ia32": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
+ "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+ "optional": true
+ },
+ "@esbuild/win32-x64": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
+ "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+ "optional": true
+ },
+ "esbuild": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
+ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+ "requires": {
+ "@esbuild/aix-ppc64": "0.19.12",
+ "@esbuild/android-arm": "0.19.12",
+ "@esbuild/android-arm64": "0.19.12",
+ "@esbuild/android-x64": "0.19.12",
+ "@esbuild/darwin-arm64": "0.19.12",
+ "@esbuild/darwin-x64": "0.19.12",
+ "@esbuild/freebsd-arm64": "0.19.12",
+ "@esbuild/freebsd-x64": "0.19.12",
+ "@esbuild/linux-arm": "0.19.12",
+ "@esbuild/linux-arm64": "0.19.12",
+ "@esbuild/linux-ia32": "0.19.12",
+ "@esbuild/linux-loong64": "0.19.12",
+ "@esbuild/linux-mips64el": "0.19.12",
+ "@esbuild/linux-ppc64": "0.19.12",
+ "@esbuild/linux-riscv64": "0.19.12",
+ "@esbuild/linux-s390x": "0.19.12",
+ "@esbuild/linux-x64": "0.19.12",
+ "@esbuild/netbsd-x64": "0.19.12",
+ "@esbuild/openbsd-x64": "0.19.12",
+ "@esbuild/sunos-x64": "0.19.12",
+ "@esbuild/win32-arm64": "0.19.12",
+ "@esbuild/win32-ia32": "0.19.12",
+ "@esbuild/win32-x64": "0.19.12"
+ }
+ }
+ }
+ },
+ "vite-plugin-node-polyfills": {
+ "version": "0.21.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz",
+ "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==",
+ "dev": true,
+ "requires": {
+ "@rollup/plugin-inject": "^5.0.5",
+ "node-stdlib-browser": "^1.2.0"
+ }
+ },
+ "vite-plugin-vuetify": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.3.tgz",
+ "integrity": "sha512-HbYajgGgb/noaVKNRhnnXIiQZrNXfNIeanUGAwXgOxL6h/KULS40Uf51Kyz8hNmdegF+DwjgXXI/8J1PNS83xw==",
+ "requires": {
+ "@vuetify/loader-shared": "^2.0.3",
+ "debug": "^4.3.3",
+ "upath": "^2.0.1"
+ }
+ },
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "vue": {
+ "version": "3.4.21",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz",
+ "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==",
+ "requires": {
+ "@vue/compiler-dom": "3.4.21",
+ "@vue/compiler-sfc": "3.4.21",
+ "@vue/runtime-dom": "3.4.21",
+ "@vue/server-renderer": "3.4.21",
+ "@vue/shared": "3.4.21"
+ }
+ },
+ "vue-cli-plugin-vuetify": {
+ "version": "2.5.8",
+ "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.5.8.tgz",
+ "integrity": "sha512-uqi0/URJETJBbWlQHD1l0pnY7JN8Ytu+AL1fw50HFlGByPa8/xx+mq19GkFXA9FcwFT01IqEc/TkxMPugchomg==",
+ "dev": true,
+ "requires": {
+ "null-loader": "^4.0.1",
+ "semver": "^7.1.2",
+ "shelljs": "^0.8.3"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "vue-draggable-plus": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/vue-draggable-plus/-/vue-draggable-plus-0.3.5.tgz",
+ "integrity": "sha512-HqIxV4Wr4U5LRPLRi2oV+EJ4g6ibyRKhuaiH4ZQo+LxK4zrk2XcBk9UyXC88OXp4SAq0XYH4Wco/T3LX5kJ79A==",
+ "requires": {}
+ },
+ "vue-eslint-parser": {
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "vue-gtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vue-gtag/-/vue-gtag-2.0.1.tgz",
+ "integrity": "sha512-aM4A58FVL0wV2ptYi+xzAjeg+pQVRyUcfBc5UkXAwQrR4t3WBhor50Izp2I+3Oo7+l+vWJ7u78DGcNzReb8S/A==",
+ "requires": {}
+ },
+ "vue-router": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz",
+ "integrity": "sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==",
+ "requires": {
+ "@vue/devtools-api": "^6.5.1"
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "vue-tsc": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.6.tgz",
+ "integrity": "sha512-kK50W4XqQL34vHRkxlRWLicrT6+F9xfgCgJ4KSmCHcytKzc1u3c94XXgI+CjmhOSxyw0krpExF7Obo7y4+0dVQ==",
+ "dev": true,
+ "requires": {
+ "@volar/typescript": "~2.1.2",
+ "@vue/language-core": "2.0.6",
+ "semver": "^7.5.4"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "vuetify": {
+ "version": "3.5.8",
+ "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.5.8.tgz",
+ "integrity": "sha512-8nGS+lKejZkev55HFwIfsRt+9fOqbeDQNmXxfmLKAlnUT8FtynVwbjAwHMtX/OQAQ3ZwRaR1ptqQQmx3OgxzbQ==",
+ "requires": {}
+ },
+ "watchpack": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ }
+ },
+ "webfontloader": {
+ "version": "1.6.28",
+ "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz",
+ "integrity": "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ=="
+ },
+ "webpack": {
+ "version": "5.89.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz",
+ "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "@types/eslint-scope": "^3.7.3",
+ "@types/estree": "^1.0.0",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
+ "acorn": "^8.7.1",
+ "acorn-import-assertions": "^1.9.0",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.15.0",
+ "es-module-lexer": "^1.2.1",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.9",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.2.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^3.2.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.3.7",
+ "watchpack": "^2.4.0",
+ "webpack-sources": "^3.2.3"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "devOptional": true,
+ "peer": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "devOptional": true,
+ "peer": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "devOptional": true,
+ "peer": true
+ }
+ }
+ },
+ "webpack-plugin-vuetify": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/webpack-plugin-vuetify/-/webpack-plugin-vuetify-3.0.3.tgz",
+ "integrity": "sha512-pYTLcrufc00PzqHZhG/zLylGE07uC0hB6SisvSYuN6hyjKCf9rtdm2UaIG7kExfhZa3U1WKU7mYXFi1jDEc+vQ==",
+ "devOptional": true,
+ "requires": {
+ "@vuetify/loader-shared": "^2.0.3",
+ "decache": "^4.6.0",
+ "file-loader": "^6.2.0",
+ "find-cache-dir": "^5.0.0",
+ "loader-utils": "^2.0.0",
+ "mkdirp": "^1.0.4",
+ "null-loader": "^4.0.1",
+ "upath": "^2.0.1"
+ }
+ },
+ "webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "devOptional": true,
+ "peer": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
+ "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.4",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true
+ },
+ "zhead": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz",
+ "integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..a3df7e86
--- /dev/null
+++ b/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "atlas-website",
+ "type": "module",
+ "version": "4.0.0",
+ "private": true,
+ "scripts": {
+ "build": "run-p type-check \"build-only {@}\" --",
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
+ "build-only": "vite build",
+ "dev": "vite",
+ "format": "prettier --write src/",
+ "preview": "vite preview",
+ "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false"
+ },
+ "dependencies": {
+ "@esbuild-plugins/node-globals-polyfill": "^0.2.3",
+ "@esbuild-plugins/node-modules-polyfill": "^0.2.2",
+ "@mdi/font": "7.4.47",
+ "@mdit-vue/plugin-frontmatter": "^2.0.0",
+ "@mdit-vue/plugin-toc": "^2.0.0",
+ "@unhead/vue": "^1.8.13",
+ "esbuild": "^0.20.1",
+ "js-yaml": "^4.1.0",
+ "jsonschema": "^1.4.1",
+ "markdown-it": "^14.0.0",
+ "markdown-it-anchor": "^8.6.7",
+ "pinia": "^2.1.7",
+ "pluralize": "^8.0.0",
+ "pptxgenjs": "3.7.1",
+ "roboto-fontface": "*",
+ "vite-plugin-vuetify": "^2.0.3",
+ "vue": "^3.4.21",
+ "vue-draggable-plus": "^0.3.5",
+ "vue-gtag": "^2.0.1",
+ "vue-router": "^4.3.0",
+ "vuetify": "^3.5.8",
+ "webfontloader": "^1.6.28"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.7.2",
+ "@tsconfig/node18": "^18.2.2",
+ "@types/node": "^20.11.25",
+ "@types/webfontloader": "^1.6.38",
+ "@vitejs/plugin-vue": "^5.0.4",
+ "@vitejs/plugin-vue-jsx": "^3.1.0",
+ "@vue/eslint-config-prettier": "^9.0.0",
+ "@vue/eslint-config-typescript": "^13.0.0",
+ "@vue/tsconfig": "^0.5.1",
+ "eslint": "^8.57.0",
+ "eslint-plugin-vue": "^9.22.0",
+ "npm-run-all2": "^6.1.2",
+ "prettier": "^3.2.5",
+ "raw-loader": "^4.0.2",
+ "sass": "^1.71.1",
+ "typescript": "~5.4.2",
+ "vite": "^5.1.6",
+ "vite-plugin-node-polyfills": "^0.21.0",
+ "vue-cli-plugin-vuetify": "~2.5.8",
+ "vue-tsc": "^2.0.6",
+ "webpack-plugin-vuetify": "^3.0.3"
+ }
+}
diff --git a/public/CNAME b/public/CNAME
new file mode 100644
index 00000000..f0c1b74e
--- /dev/null
+++ b/public/CNAME
@@ -0,0 +1 @@
+atlas.mitre.org
diff --git a/public/README.md b/public/README.md
new file mode 100644
index 00000000..93a5ad33
--- /dev/null
+++ b/public/README.md
@@ -0,0 +1,7 @@
+# ATLAS
+
+MITRE ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems), is a knowledge base of adversary tactics, techniques, and case studies for machine learning (ML) systems based on real-world observations, demonstrations from ML red teams and security groups, and the state of the possible from academic research.
+
+ATLAS is modeled after the MITRE ATT&CK® framework and its tactics and techniques are complementary to those in ATT&CK. Machine learning is increasingly used across a variety of industries and there are a growing number of vulnerabilities. We developed ATLAS to raise awareness of these threats and present them in a way familiar to security researchers.
+
+Visit the ATLAS website at https://atlas.mitre.org!
diff --git a/public/atlas-data b/public/atlas-data
new file mode 160000
index 00000000..7ad95c0b
--- /dev/null
+++ b/public/atlas-data
@@ -0,0 +1 @@
+Subproject commit 7ad95c0b1bdeeae5c83e23c9f093cdd8fdb703ab
diff --git a/public/atlas.ico b/public/atlas.ico
new file mode 100644
index 00000000..3340ec6d
Binary files /dev/null and b/public/atlas.ico differ
diff --git a/public/content/ai-security-101.md b/public/content/ai-security-101.md
new file mode 100644
index 00000000..f78af984
--- /dev/null
+++ b/public/content/ai-security-101.md
@@ -0,0 +1,128 @@
+---
+title: AI Security 101
+---
+
+[[toc]]
+
+#### What is AI Security?
+
+Artificial intelligence (AI) technology is advancing at a rapid rate and adoption is on the rise. Once limited only to highly controlled operational environments and use cases, today we see _AI-enabled systems_ — software systems with one or more AI components — effectively integrated into a variety of use cases and available to the public.
+
+_AI security_ can be defined as the tools, strategies, and processes implemented that identify and prevent threats and attacks that could compromise the confidentiality, integrity, or availability of an AI model or AI-enabled system. AI security is a critical component of the AI development cycle to ensure safe and consistent performance throughout operation. In additional to the existence of traditional cybersecurity vulnerabilities, incorporating AI into systems also introduces new threat vectors and vulnerabilities that require a new set of security procedures. Identifying and mitigating these AI-enabled system vulnerabilities is an integral part of AI security and requires a technical and operational response.
+
+In this 101, we describe common threats to AI-enabled systems documented within MITRE ATLAS™, security and the AI lifecycle, and active research areas.
+
+#### What are attacks on AI?
+
+Incorporating AI into a larger system can make the system susceptible to novel attacks that specifically target the AI. The techniques that adversaries use to carry out these attacks are distinct from traditional cyber techniques. By improving their understanding of these adversarial techniques, teams can work to mitigate the risks associated with AI incorporation.
+
+To better understand threats the wide range of effective attacks that can be used against to an AI-enabled system, we describe three important concepts that dictate an adversary’s path of attack: AI Access Time, AI Access Points, and System Knowledge.
+
+_AI Access Time_ can be broken into two stages, _training_ and _inference_. The training stage is a process that includes collecting and processing data, training a model, and validating the model’s performance. The end of the training stage and beginning of the inference stage occurs once a model is deployed. During the inference stage, users submit queries, and the model responds with predictions, classifications, or generative content known as the outputs (or inferences).
+
+_AI Access Points_ can either be _digital_ or _physical_. A common digital access point within an AI-enabled system is API (application programing interface) access, where an adversary can interact with the model by sending a query and observing the response. A physical access point is used when an adversary interacts with data in the real world and influences the model’s behavior by physically modifying the data collected.
+
+_System Knowledge_ refers to the amount of information an adversary knows about the ML components of the system. This knowledge can range from white-box, where adversaries have access to the model architecture, model weights and training data, to black-box where access and knowledge is limited to input and output responses during the inference stage (e.g. API access).
+
+The figure below depicts an example of an AI-enabled system containing a trained AI model and the different types of access time, access points and system knowledge an adversary could leverage.
+
+
+
+
+
+
+
+ Figure 1: An AI-enabled system and key concepts.
+
+
+
+
+The table below provides high-level descriptions of adversarial attacks and their possible effects on AI-enabled systems.
+For a comprehensive list we recommend exploring the [ATLAS matrix](/matrices/ATLAS).
+
+| Attack | Overview |
+| :--- | :--- |
+| Poisoning Attack | Attacker modifies the training data of an AI system to get a desired outcome at inference time. With influence over training data, an attacker can create backdoors in the model where an input with the specified trigger will result in a particular output. |
+| Evasion Attack | Attacker elicits an incorrect response from a model by crafting adversarial inputs. Typically, these inputs are designed to be indistinguishable from normal data. These attacks can be targeted, where the attacker tries to produce a specific classification, or untargeted, where they attempt to produce any incorrect classification. |
+| Functional Extraction | Attacker recovers a functionally equivalent model by iteratively querying the model. This allows an attacker to examine the offline copy of the model before further attacking the online model. |
+| Inversion Attack | Attacker recovers sensitive information about the training data. This can include full reconstructions of the data, or attributes or properties of the data. This can be a successful attack on its own or can be used to perform other attacks such as Model Evasion. |
+| Prompt Injection Attack | Attacker crafts malicious prompts as inputs to a large language model (LLM) that cause the LLM to act in unintended ways. These "prompt injections" are often designed to cause the model to ignore aspects of its original instructions and follow the adversary's instructions instead. |
+| Traditional Cyber Attack | Attacker uses well-established Tactics, Techniques, and Procedures (TTPs) from the cyber domain to attain their goal. These attacks may target model artifacts, API keys, data servers, or other foundational aspects of AI compute infrastructure distinct from the model itself. |
+
+
+#### How does security fit into AI model lifecycles?
+
+An important consideration to countering attacks on AI-enabled systems is establishing clear operational procedures for managing a model throughout its lifecycle. Developing and deploying a robust AI model involves multiple phases of effort that typically involve different teams, developers, and stakeholders. Just as with the Software Development and Operations (DevOps) methodology, the field of Machine Learning Operations (MLOps) defines best practices and tools for deploying reliable, reproducible, and adaptable models. A good example of a model development pipeline with a MLOps focus is [CRISP-ML(Q)](https://ml-ops.org/content/crisp-ml), the Cross-Industry Standard Process for the development of Machine Learning applications with Quality assurance.
+
+CRISP-ML(Q) defines six phases in the model lifecycle:
+
+ 1. _Business and Data Understanding_
+ 2. _Data Engineering (Data Preparation)_
+ 3. _Machine Learning Model Engineering_
+ 4. _Quality Assurance for Machine Learning Applications_
+ 5. _Deployment_
+ 6. _Monitoring and Maintenance_
+
+
+
+
+
+
+ Figure 2: "The Machine Learning Development Life Cycle Process " by visenger . CC BY 4.0 .
+
+
+
+
+Each phase begins with defining the requirements and constraints of the task, then cycles through a process of risk identification, risk evaluation, and risk mitigation until requirements are met. Teams often revisit earlier phases and loop through the pipeline multiple times as stakeholders define new requirements and constraints.
+
+It is expected that during the _Monitoring and Maintenance_ phase that the process will return to earlier development phases in response to changing real-world conditions, such as concept drift, data drift, or malicious actions.
+
+In ATLAS, we tag [mitigations](/mitigations) with phases from the CRISP-ML(Q) lifecycle to help each phase’s teams identify vulnerabilities that could impact their task requirements and possible ways to respond. We also encourage interested parties to read [the original paper on CRISP-ML(Q)](https://arxiv.org/pdf/2003.05155.pdf)
+
+
+#### Recent AI Security Topics
+
+AI Security is a constantly evolving field with subfields emerging as the technologies mature. We describe recent developments in three notable sub-fields below:
+
+##### LLM Security
+Large Language Models (LLMs) are a particular category of natural language models trained on hundreds of billions of words that can generate text or images and videos in response to natural language prompts. They vaulted to public popularity with the release of OpenAI’s ChatGPT in November of 2022 due to their ability to perform multiple complex tasks such as content generation, style transfer, and text summarization, all with a single model.
+
+From a security perspective, these systems introduce unique challenges to an AI pipeline due to the massive size of the training dataset, opaque internal architecture of the model, and use of natural language for input prompting. For example, [indirect prompt injection attacks](/techniques/AML.T0051.001) can be used to [extract a user’s personally identifiable information (PII)](/studies/AML.CS0021) or [influence the user to visit malicious websites](/studies/AML.CS0020). For sample adversarial techniques, see [LLM Prompt Injection](/techniques/AML.T0051), [Compromise LLM Plugins](/techniques/AML.T0053), and [LLM Jailbreak](/techniques/AML.T0054).
+
+We [updated ATLAS in Fall 2023](https://www.mitre.org/news-insights/news-release/mitre-and-microsoft-collaborate-address-generative-ai-security-risks) to incorporate a new LLM focus that includes real-world case studies of adversarial attacks. In addition to this ATLAS work, we recommend [this external list](https://llmsecurity.net/) of LLM security related papers, articles, and tools for those interested in learning more.
+
+
+##### Hardware Security
+
+Hardware security has been studied extensively in classical cybersecurity settings and is now being examined in relation to AI systems. Example hardware security attacks include:
+
+1. Side channel attacks — information about the system is deduced from alternative information streams such as voltage measurements or response timing,
+2. Fault injection attacks — systems are actively disrupted by faulty input data or physical environment disruptions, and
+3. Hardware Trojan attacks — malicious backdoors are inserted into the hardware of the systems including GPUs and other platform circuitry.
+
+We refer interested readers to the following survey papers on this topic:
+- [Zhou et al. (2021): Deep Neural Network Security From a Hardware Perspective](https://ieeexplore.ieee.org/abstract/document/9642246)
+- [Xu et al. (2021): Security of Neural Networks from Hardware Perspective: A Survey and Beyond.](https://ieeexplore.ieee.org/document/9371637)
+
+##### Policy
+
+As the significance of vulnerabilities in AI-enabled systems becomes more widely known, policy makers and political leaders have been exploring the best way to balance interests of privacy and innovation. In the United States, the [Executive Order 14110](https://www.whitehouse.gov/briefing-room/presidential-actions/2023/10/30/executive-order-on-the-safe-secure-and-trustworthy-development-and-use-of-artificial-intelligence/) recently directed over 50 federal entities to take action across a range of AI policy areas. Several federal agencies have also enacted guidance on AI in recent years (e.g., [GSA AI Guide for Government](https://coe.gsa.gov/coe/ai-guide-for-government/print-all/index.html), [DoD Responsible AI Strategy](https://www.defense.gov/News/Releases/Release/Article/3588743/cdao-releases-responsible-ai-rai-toolkit-for-ensuring-alignment-with-rai-best-p/)), but legislation over academic and private sector bodies remains a complex issue with technological, economic, and ethical considerations. The most effective way to balance these factors is an open research question.
+
+We list a few leading relevant publications on this topic below:
+
+- [AI Risk Management Framework](tps://www.nist.gov/itl/ai-risk-management-framework), NIST
+- [Guidelines for Secure AI System Development](https://www.ncsc.gov.uk/files/Guidelines-for-secure-AI-system-development.pdf), UK National Cyber Security Centre
+- [A Unified Framework of Five Principles for AI in Society](https://hdsr.mitpress.mit.edu/pub/l0jsh9d1/release/8), Harvard Data Science Review
+- [A Taxonomy of Trustworthiness for Artificial Intelligence, UC Berkeley Center for Long-Term Cybersecurity](https://cltc.berkeley.edu/publication/a-taxonomy-of-trustworthiness-for-artificial-intelligence/)
+- [Ethics and Governance of Artificial Intelligence for Health](https://www.who.int/publications/i/item/9789240029200), World Health Organization
+- [A Sensible Regulatory Framework for AI Security](https://www.mitre.org/news-insights/publication/sensible-regulatory-framework-ai-security), MITRE
+- [Strengthening and Democratizing the US Artificial Intelligence Innovation Ecosystem: An Implementation Plan for a National Artificial Intelligence Research Resource](https://resourcecenter.cis.ieee.org/government/usa/cisgovph0020), National Artificial Intelligence Research Resource Task Force
+- [Artificial Intelligence Bill of Rights](https://hai.stanford.edu/white-paper-stanford-hai-artificial-intelligence-bill-rights), Stanford University Human-Centered Artificial Intelligence
+- [S.3572 Algorithmic Accountability Act of 2022](https://www.congress.gov/bill/117th-congress/senate-bill/3572), 117th United States Congress
+- [EU Artificial Intelligence Act](https://www.europarl.europa.eu/news/en/headlines/society/20230601STO93804/eu-ai-act-first-regulation-on-artificial-intelligence), European Parliament
+
+#### Other recommended reading
+
+- Our [Tactics](/tactics) and [Techniques](/techniques) pages list the methodologies adversaries use to infiltrate and/or compromise vulnerable AI systems. Our [Matrix](/matrices/ATLAS) organizes these potential vulnerabilities graphically and chronologically for easier visual understanding, and our [Mitigations](/mitigations) page contains information how to protect your systems against them.
+- For examples of what these system attacks look like “in the wild”, check out our growing list of [Case Studies](/studies). We also have a publicly available [database of vulnerabilities found in common models](https://airisk.io).
+- Have suggestions on how we can make ATLAS more relevant to you and your organization? [Contact us via Slack, LinkedIn, Email, or Github](/resources/contact). We also welcome case study contributions through our interactive [Case Study Builder tool](/studies/create).
diff --git a/public/content/aisec101/ai-enabled-system.png b/public/content/aisec101/ai-enabled-system.png
new file mode 100644
index 00000000..f7e9e484
Binary files /dev/null and b/public/content/aisec101/ai-enabled-system.png differ
diff --git a/public/content/aisec101/crisp-ml-process.jpg b/public/content/aisec101/crisp-ml-process.jpg
new file mode 100644
index 00000000..1b5a1907
Binary files /dev/null and b/public/content/aisec101/crisp-ml-process.jpg differ
diff --git a/public/content/case-study-legend.yaml b/public/content/case-study-legend.yaml
new file mode 100644
index 00000000..4016a986
--- /dev/null
+++ b/public/content/case-study-legend.yaml
@@ -0,0 +1,59 @@
+legend:
+ actor:
+ icon: mdi-arrow-projectile
+ name: Actor
+ description: |
+ The individual or group that performed this operation
+
+ case_study_type:
+ icon: mdi-folder-search
+ name: Case Study Type
+ description: |
+ Whether this case study describes a real-world incident or a demonstration under a realistic threat model and representative Target system
+ options:
+ exercise:
+ icon: mdi-clipboard-file-outline
+ name: Exercise
+ description: |
+ Operation performed by a red team to identify vulnerabilities
+ incident:
+ icon: mdi-alert-octagon-outline
+ name: Incident
+ description: |
+ Real world event
+
+ incident_date:
+ icon: mdi-calendar
+ name: Incident Date
+ description: |
+ Time period of when the event/incident occured
+
+ procedure:
+ icon: mdi-format-list-numbered
+ name: Procedure
+ description: |
+ Steps representing the timeline of the event, mapped to techniques
+
+ reporter:
+ icon: mdi-bullhorn-outline
+ name: Reporter
+ description: |
+ The group that identified and reported this incident
+
+ summary:
+ icon: mdi-text
+ name: Summary
+ description: |
+ Description of the event
+
+ target:
+ icon: mdi-target-account
+ name: Target
+ description: |
+ The victim system or organization targeted by the Actor
+
+ name:
+ icon: mdi-tag-outline
+ name: Name
+ description: |
+ Name for this case study
diff --git a/public/content/contributorslist.yaml b/public/content/contributorslist.yaml
new file mode 100644
index 00000000..aedb4418
--- /dev/null
+++ b/public/content/contributorslist.yaml
@@ -0,0 +1,197 @@
+---
+data:
+ -
+ organization: MITRE
+ contributors:
+ - Mikel Rodriguez
+ - Christina Liaghati
+ - Keith Manville
+ - Michael Krumdick
+ - Josh Harguess
+ - Virginia Adams
+ - Shiri Bendelac
+ - Henry Conklin
+ - Poomathi Duraisamy
+ - David Giangrave
+ - Emily Holt
+ - Kyle Jackson
+ - Nicole Lape
+ - Sara Leary
+ - Eliza Mace
+ - Christopher Mobley
+ - Savanna Smith
+ - James Tanis
+ - Michael Threet
+ - David Willmes
+ - Lily Wong
+ - Mouaz Alhindi
+ - Marissa Dotter
+ - Colin Busho
+ - Shane Shroeder
+ - Andy Applebaum
+ - Jonathan Broadbent
+ - Isabel Tuson
+ - Anna Snarski
+ - Danny Nsouli
+ - Angela Tong
+ - Amanda Vu
+ - Kate Hanson
+
+ -
+ organization: Microsoft
+ contributors:
+ - Ram Shankar
+ - Siva Kumar
+ - Hyrum Anderson
+ - Suzy Schapperle
+ - Blake Strom
+ - Madeline Carmichael
+ - Matt Swann
+ - Mark Russinovich
+ - Nick Beede
+ - Kathy Vu
+ - Andi Comissioneru
+ - Sharon Xia
+ - Mario Goertzel
+ - Jeffrey Snover
+ - Derek Adam
+ - Deepak Manohar
+ - Bhairav Mehta
+ - Peter Waxman
+ - Abhishek Gupta
+ - Ann Johnson
+ - Andrew Paverd
+ - Pete Bryan
+ - Roberto Rodriguez
+ - Will Pearce
+
+ -
+ organization: Bosch
+ contributors:
+ - Manojkumar Parmar
+ - Duplys Paul
+ - Jorge Guajardo Merchan
+ - Amit Phadke
+ - Adit Shah
+ - Tanya Motwani
+ - Pankaj Maurya
+
+ -
+ organization: IBM
+ contributors:
+ - Pin-Yu Chen
+
+ -
+ organization: NVIDIA
+ contributors:
+ - David Reber Jr.
+ - Keith Kozo
+ - Christopher Cottrell
+ - Daniel Rohrer
+
+ -
+ organization: Airbus
+ contributors:
+ - Adam Wedgbury
+
+ -
+ organization: PricewaterhouseCoopers
+ contributors:
+ - Michael Montecillo
+
+ -
+ organization: Deep Instinct
+ contributors:
+ - Nadav Maman
+ - Shimon Noam Oren
+ - Ishai Rosenberg
+
+ -
+ organization: Two Six Labs
+ contributors:
+ - David Slater
+
+ -
+ organization: University of Toronto
+ contributors:
+ - Adelin Travers
+ - Jonas Guan
+ - Nicolas Papernot
+
+ -
+ organization: Cardiff University
+ contributors:
+ - Pete Burnap
+
+ -
+ organization: Software Engineering Institute/Carnegie Mellon University
+ contributors:
+ - Nathan M. VanHoudnos
+
+ -
+ organization: Berryville Institute of Machine Learning
+ contributors:
+ - Gary McGraw
+ - Harold Figueroa
+ - Victor Shepardson
+ - Richie Bonett
+
+ -
+ organization: Citadel AI
+ contributors:
+ - Kenny Song
+
+ -
+ organization: McAfee
+ contributors:
+ - Christiaan Beek
+
+ -
+ organization: Unaffiliated
+ contributors:
+ - Ken Luu
+
+ -
+ organization: Ant Group
+ contributors:
+ - Henry Xuef
+
+ -
+ organization: Palo Alto Networks
+ contributors:
+ - May Wang
+ - Stefan Achleitner
+ - Yu Fu
+ - Ajaya Neupane
+ - Lei Xu
+
+ -
+ organization: University of Chinese Academy of Sciences
+ contributors:
+ - Neil Yale
+ - Ying Zonghao
+
+ -
+ organization: Kaspersky
+ contributors:
+ - Alexey Antonov
+ - Alexey Kogtenkov
+
+ -
+ organization: spiderSilk
+ contributors:
+ - Mossab Hussein
+
+ -
+ organization: Silent Break Security
+ contributors:
+ - Will Pearce
+ - Nick Landers
+
+ -
+ organization: Brown University
+ contributors:
+ - Vanya Cohen
+ - Aaron Gokaslan
+ - Ellie Pavlick
+ - Stefanie Tellex
diff --git a/public/content/data-list-page-intros.yaml b/public/content/data-list-page-intros.yaml
new file mode 100644
index 00000000..71ebe59c
--- /dev/null
+++ b/public/content/data-list-page-intros.yaml
@@ -0,0 +1,17 @@
+tactics: |
+ Tactics are tactical adversary goals during an attack. They represent the “why” of a technique: the reason for performing an action.
+ Tactics serve as useful contextual categories for individual techniques and cover standard notations for things adversaries do during an operation.
+ [1]
+
+ MITRE ATLAS™ tactics represent new adversary goals particular to artificial intelligence systems, as well as tactics adapted from the MITRE ATT&CK® Enterprise Matrix.
+ In those cases, ATT&CK tactic definitions are stretched to include ML concepts.
+techniques: |
+ Techniques describe the means by which adversaries achieve tactical goals. They represent “how” an adversary achieves a tactical objective by performing an action.
+ For example, an adversary may gain initial access by compromising the machine learning (ML) supply chain.
+
+ Techniques may also represent “what” an adversary gains by performing an action. This is a useful distinction for the ML Attack Staging tactic,
+ where the adversary is typically creating or modifying an ML artifact that will be used in a subsequent tactical objective.
+ There can be multiple techniques in each tactic category as there are many ways to achieve tactical objectives.
+ [1]
+mitigations: |
+ Mitigations represent security concepts and classes of technologies that can be used to prevent a technique or sub-technique from being successfully executed.
diff --git a/public/content/descriptions/ML-lifecycle.yaml b/public/content/descriptions/ML-lifecycle.yaml
new file mode 100644
index 00000000..1299f6f7
--- /dev/null
+++ b/public/content/descriptions/ML-lifecycle.yaml
@@ -0,0 +1,15 @@
+ML-lifecycle:
+- name: Business and Data Understanding
+ description: |
+ Defining the scope and requirements of the project and collecting data
+- name: Data Preparation
+ description: |
+ Data cleaning, data augmentation, and developing a robust data pipeline
+- name: ML Model Engineering
+ description: Defining quality measures, selecting a model architecture, and training a model
+- name: ML Model Evaluation
+ description: Increasing model explainability and ensuring that the developed model complies with project needs and satisfies risk and safety constraints
+- name: Deployment
+ description: Setting up production environment and productionizing the validated ML model
+- name: Monitoring and Maintenance
+ description: Continually evaluating the deployed model to ensure it continues to fulfill quality assurance measures
diff --git a/public/content/descriptions/categories.yaml b/public/content/descriptions/categories.yaml
new file mode 100644
index 00000000..43f6975e
--- /dev/null
+++ b/public/content/descriptions/categories.yaml
@@ -0,0 +1,7 @@
+categories:
+- name: Technical - ML
+ description: Relating to ML-specific hardware, software, and technological systems implented to mitigate adversarial threats.
+- name: Technical - Cyber
+ description: Relating to cyber-specific hardware, software, and technological systems implemented to mitigate adversarial threats.
+- name: Policy
+ description: Relating to procedures and processes that govern how tools are used, maintained, and deployed
diff --git a/public/content/events.yaml b/public/content/events.yaml
new file mode 100644
index 00000000..0c98d24e
--- /dev/null
+++ b/public/content/events.yaml
@@ -0,0 +1,204 @@
+data:
+ - name: RSA
+ date: 2021-05-17
+ location: Virtual
+ description: |
+ MITRE and Microsoft facilitated the [ATT&CK® for Adversarial Machine Learning: Tacky or Tasty?](https://www.rsaconference.com/library/Presentation/USA/2021/attck-for-adversarial-machine-learning-tacky-or-tasty) session.
+ url: https://www.rsaconference.com/events/2021-usa
+ color: red
+ - name: WACV
+ date: 2022-01-04
+ location: Waikoloa, HI
+ description: |
+ MITRE ATLAS hosted a booth at the Workshop on Applications of Computer Vision.
+ url: https://wacv2022.thecvf.com/
+ color: blue
+ - name: NAML
+ date: 2022-03-22
+ location: Virtual
+ description: ATLAS & AI security were presented at the Naval Applications of Machine Learning virtual conference in March!
+ url: https://sites.google.com/go.spawar.navy.mil/naml/agenda
+ color: cyan
+ - name: Purple Hats
+ date: 2022-04-21
+ location: Virtual
+ description: We presented on ATLAS & AI security at ATTACK IQ's Purple Hats virtual conference in April
+ url: https://www.purplehats.org/2022
+ color: deep-purple
+ - name: RSA
+ date: 2022-06-06
+ location: San Francisco, CA
+ description: |
+ MITRE, Microsoft, Google, and Meta/Facebook talked about AI Red Teaming, Security, and ATLAS at the RSA conference in-person in San Francisco in June!
+
+ Our ATLAS team was present at the MITRE booth all week.
+ url: https://www.rsaconference.com/usa
+ color: red
+ - name: ADSTAR
+ date: 2022-07-20
+ location: Sydney, Australia / Virtual
+ description: |
+ The Australian Defence Science, Technology and Research Summit (ADSTAR) is taking place from July 20 - 22.
+ This conference brings together industry, academia, and government to collaborate and share defense-related research and innovation.
+
+ The ATLAS team was present at the MITRE booth!
+ url: https://www.adstarsummit.com.au/event/3ea1388a-66ec-4605-b5a7-1c53931b9341/summary
+ color: orange
+ - name: MLMAC
+ date: 2022-08-12
+ location: Virtual
+ description: |
+ The ML Model Attribution Challenge (MLMAC) is a four-week event from August 12th to September 9th (AoE).
+
+ MLMAC challenges contestants to develop creative technical solutions for large language model attribution. This competition works toward AI assurance by developing forensic capabilities and establishing the difficulty of model attribution in natural language processing, and could contribute to the maturation of AI forensics as a subfield of AI security.
+ url: https://mlmac.io
+ color: deep-purple
+ - name: AIPR
+ date: 2022-10-11
+ location: Washington, DC
+ description: |
+ IEEE International Conference on AI and Pattern Recognition (AIPR) - MITRE helped organize and participate in the 51st annual AIPR workshop to continue pioneering new topics in applied image and visual understanding including topics around assured AI, explainable AI, and secure intelligent systems.
+ url: https://sites.google.com/aipr-workshop.org/aipr
+ color: yellow-darken-1
+ - name: CAMLIS
+ date: 2022-10-20
+ location: Arlington, VA
+ description: |
+ Conference on Applied Machine Learning (CAMLIS) - MITRE participated in this single track conference with presentations, posters, and tutorials on ML techniques and information security problems
+ url: https://www.camlis.org/
+ color: blue
+ - name: 15th ACM Workshop on Artificial Intelligence and Security (AISec)
+ date: 2022-11-11
+ description: |
+ Launching the second round of the Machine Learning Model Attribution Challenge (MLMAC).
+ location: Los Angeles, CA / Virtual
+ url: https://aisec.cc/
+ color: red
+ - name: AAAI Fall Symposium "The Role of AI in Responding to Climate Challenges"
+ date: 2022-11-17
+ location: Arlington, VA
+ description: |
+ Join us from November 17-19 for an action-packed program including keynotes, expert panels, contributed talks, and participatory discussions on how to best move the field of AI & climate change forward.
+ url: https://aaai.org/Symposia/Fall/fss22.php
+ color: blue-grey
+ - name: WACV
+ date: 2023-01-04
+ location: Waikoloa, HI
+ description: |
+ IEEE/CVF Winter Conference on Applications of Computer Vision (WACV) is the premier international computer vision event comprising the main conference and several co-located workshops and tutorials. With its high quality and low cost, it provides an exceptional value for students, academics and industry researchers.
+ url: https://wacv2023.thecvf.com/home
+ color: light-blue
+ - name: IEEE Conference on Secure and Trustworthy Machine Learning (SaTML)
+ date: 2023-02-08
+ location: Raleigh, NC
+ description: |
+ This conference will expand on the theoretical and practical understandings of vulnerabilities inherent to ML systems, explore the robustness of ML algorithms and systems, and aid in developing a unified, coherent scientific community which aims to build trustworthy ML systems. Results from the first round of the Machine Learning Model Attribution Challenge (MLMAC) will be announced.
+ url: https://satml.org/
+ color: orange
+ - name: Responsible AI in Military Global Summit
+ date: 2023-02-15
+ location: The Hague, Netherlands
+ description: |
+ The government of the Netherlands is hosting the first global Summit on Responsible Artificial Intelligence in the Military Domain (REAIM) on February 15 and 16 2023. REAIM 2023 will be a platform for all stakeholders to discuss the key opportunities, challenges and risks associated with military applications of AI. The MITRE ATLAS team will be showcasing ATLAS as part of the REIAM Innovation Hub events as well as engaging with other stakeholders around the world.
+ url: https://www.government.nl/ministries/ministry-of-foreign-affairs/events/reaim
+ color: blue
+ - name: MITRE Cybersecurity Days 2023
+ date: 2023-03-28
+ location: Virtual
+ description: |
+ MITRE Cybersecurity Days is being held from March 28 to 30, 2023. This event showcases virtual technical presentations by MITRE cyber experts to discuss ways to address current and emerging technical cybersecurity trends and challenges, innovative approaches to meeting government needs and solving problems for a safer world, and future research directions.
+ url: \#
+ color: blue
+ - name: WiCyS Conference
+ date: 2023-03-16
+ location: Denver, CO
+ description: |
+ The WiCyS conference is the premier event to RECRUIT, RETAIN and ADVANCE women in cybersecurity. WiCyS brings together women in cybersecurity from academia, research, government, and industry. MITRE women will be giving a presentation on "Introduction to AI Red Teaming" during the event, which runs from March 16 to 18, 2023.
+ url: https://www.wicys.org/events/wicys-2023/
+ color: light-green
+ - name: RSA
+ date: 2023-04-24
+ location: San Francisco, CA
+ description: >
+ Join MITRE ATLAS' Dr. Christina Liaghati at RSA at a panel session on "Hardening AI/ML Systems - The Next Frontier of Cybersecurity" on April 24th.
+
+
+ As industries increasingly depend on AI/ML-enabled systems, they also introduce new attack surfaces and vulnerabilities. Failure to adequately harden AI/ML to adversarial machine learning attacks will inevitably lead to disruptions and destruction to networks and cyber-physical infrastructure. This panel will explore the importance of integrating resilience and assurance into AI/ML capabilities.
+ url: https://www.rsaconference.com/usa/agenda/session/Hardening%20AIML%20Systems%20-%20The%20Next%20Frontier%20of%20Cybersecurity
+ color: red
+ - name: Days of Shecurity
+ date: 2023-05-19
+ location: San Francisco, CA & Virtual
+ description: Days of Shecurity is a free-to-attend interactive conference for women in technology interested in cybersecurity. Join two of MITRE's AI researchers for their session "Introduction to AI Red Teaming" on May 19th in San Francisco.
+ url: https://www.dayofshecurity.com/may-2023
+ color: purple
+ - name: AFCEA DC Tech Summit
+ date: 2023-04-11
+ location: Washington, DC
+ description: >
+ Join MITRE ATLAS' Dr. Christina Liaghati at AFCEA DC for their annual event, which is expected
+ to convene 250-300 senior-level government and IT professionals (e.g. SES, Flag Officers, Directors, CIOs, C-level executives, Program and Project Managers). Dr. Liaghati will be speaking on the panel "The AI Advantage" with representatives from the U.S. Army and Department of Defense."
+ url: https://afceadc.swoogo.com/techsummit23
+ color: green
+ - name: '"AI Risky Business: Hands-on AI Payload Analysis" @ Black Hat 2023'
+ date: 2023-08-09
+ location: Las Vegas, NV & Virtual
+ description: >
+ From June 8-10, The Global Resilience Federation (GRF) Summit on AI Security & Trust will address concerns across sectors with content tailored for executives such as CIOs, CISOs and AI/ML experts to engage on effective approaches for managing security and trust in Artificial Intelligence and Machine Learning models.
+ url: https://www.grf.org/ai-security-2023
+ color: indigo
+ - name: "FutureIT: AI, Data and Tech Leadership"
+ date: 2023-11-08
+ location: New York, NY
+ description: Join the ATLAS team at FutureIT New York to talk about ATLAS and AI threat awareness.
+ url: https://events.ciofutureit.com/event/new-york/
+ color: light-green
+ - name: HITCON 2023
+ date: 2023-11-15
+ location: Taipei, Taiwan
+ description: >
+ Hacks in Taiwan Conference (HITCON) is technology-orientated cybersecurity conference.
+ ATLAS will present on AI threat awareness.
+ url: https://cfp2023.hitcon.org/en/
+ color:
+
+ - name: "Advantage DoD 2024: Defense Data & AI Symposium"
+ date: 2024-02-20
+ location: Washington, DC
+ description: >
+ Feb 20-22: This event, hosted by the Chief Digital and AI Office (CDAO) invites key data leaders and developers from government, industry, and academia to join together and discuss and build the future of cutting-edge data, analytics, and AI - guiding the enablement of the U.S. military's enduring decision advantage.
+ url: https://www.ncsi.com/event/cdao/
+ color: indigo
+ - name: Days of Shecurity 2024
+ date: 2024-04-25
+ location: San Francisco, CA & Virtual
+ description: |
+ Day of Shecurity is a free-to-attend interactive one-day conference that originally launched in 2017 in San Francisco for women in technology interested in cybersecurity. Day of Shecurity launched in Boston in 2019 and held a virtual, location-agnostic conferences in 2021. The event is an effort by Secure Diversity, the Lookout Foundation, Day of Shecurity Core Team, and various organizations that believe that diversity & inclusion matter in our industry.
+ url: https://www.dayofshecurity.com/
+ color: purple
+ - name: RSA Conference 2024
+ date: 2024-05-06
+ location: San Francisco, CA
+ # description: |
+ # May 6-9: In an ever-changing cybersecurity world, innovation and creativity are key. Join RSAC 2024 and discover The Art of Possible as we collectively create works that will change our perspective on what we can accomplish. Let's celebrate limitless opportunities, challenge the status quo, and explore new horizons together.
+ description: >
+ Join RSAC 2024 and celebrate limitless opportunities, challenge the status quo, and explore new horizons together.
+ url: https://www.rsaconference.com/usa
+ color: red
+ imageSrc: rsa.jpg
+ - name: Black Hat USA 2024
+ date: 2024-08-03
+ location: Las Vegas, NV
+ description: >
+ BlackHat is an internationally recognized cybersecurity event series providing the most technical and relevant information security research.
+ url: https://www.blackhat.com/
+ color: grey
+ imageSrc: blackhat.jpg
+ - name: DEF CON 2024
+ date: 2024-08-08
+ location: Las Vegas, NV
+ description: >
+ DEF CON is a hacker convention which takes place immediately following Black Hat in Las Vegas every year.
+ url: https://defcon.org/
+ color: blue
+ imageSrc: defcon.jpg
\ No newline at end of file
diff --git a/public/content/faq-files/case-study-terms.md b/public/content/faq-files/case-study-terms.md
new file mode 100644
index 00000000..1613d20b
--- /dev/null
+++ b/public/content/faq-files/case-study-terms.md
@@ -0,0 +1,24 @@
+---
+title: Case Study Terminology
+weight: 2
+---
+
+###### What is an incident date?
+
+The time frame as to when the incident or exercise discussed in the case study occurred.
+
+###### What is an actor?
+
+The group that performed this operation. This could be a threat group or bad actor responsible for the incident, the researchers, AI red team, or security group that performed the demonstration.
+
+###### What is a reporter?
+
+The group that identified and reported this incident or exercise. In the case of an exercise, this may be the Actor.
+
+###### What is a target?
+
+The victim system or organization targeted by the Actor.
+
+###### What is a case study type?
+
+Whether this case study describes a real-world incident or exercise under a realistic threat model and representative Target system.
diff --git a/public/content/faq-files/contact.md b/public/content/faq-files/contact.md
new file mode 100644
index 00000000..d9f18ec2
--- /dev/null
+++ b/public/content/faq-files/contact.md
@@ -0,0 +1,8 @@
+---
+title: Staying Informed
+weight: 10
+---
+
+###### How do I stay up to date with what's happening with ATLAS?
+
+Keep up to date using the resources in our [contact page](/resources/contact).
\ No newline at end of file
diff --git a/public/content/faq-files/general.md b/public/content/faq-files/general.md
new file mode 100644
index 00000000..decc0061
--- /dev/null
+++ b/public/content/faq-files/general.md
@@ -0,0 +1,25 @@
+---
+title: General
+weight: 1
+---
+
+###### What is a tactic?
+
+Tactics are tactical adversary goals during an attack. They represent the “why” of a technique: the reason for performing an action.
+Tactics serve as useful contextual categories for individual techniques and cover standard notations for things adversaries do during an operation.
+[\[1\] ][1] MITRE ATLAS™ tactics represent new adversary goals particular to artificial intelligence systems, as well as tactics adapted from the MITRE ATT&CK® Enterprise Matrix.
+In those cases, ATT&CK tactic definitions are stretched to include ML concepts.
+
+###### What is a technique?
+
+Techniques describe the means by which adversaries achieve tactical goals. They represent "how" an adversary achieves a tactical objective by performing an action.
+For example, an adversary may gain initial access by compromising the machine learning (ML) supply chain. Techniques may also represent “what” an adversary gains by performing an action. This is a useful distinction for the ML Attack Staging tactic,
+where the adversary is typically creating or modifying an ML artifact that will be used in a subsequent tactical objective.
+There can be multiple techniques in each tactic category as there are many ways to achieve tactical objectives.[\[1\] ][1]
+
+###### What is the ATLAS Navigator?
+
+The MITRE ATLAS™ version of the ATT&CK Navigator displays ATLAS techniques and allows users to create and view complex visualizations. In addition to the matrix, the Navigator also shows a frequency heat map of techniques used in ATLAS case studies.
+
+
+ [1]: https://attack.mitre.org/docs/ATTACK_Design_and_Philosophy_March_2020.pdf "MITRE ATT&CK: Design and Philosophy"
diff --git a/public/content/faq-files/mitigation-terms.md b/public/content/faq-files/mitigation-terms.md
new file mode 100644
index 00000000..096d3c05
--- /dev/null
+++ b/public/content/faq-files/mitigation-terms.md
@@ -0,0 +1,17 @@
+---
+title: Mitigation Terminology
+weight: 3
+---
+
+###### What are the ML lifecycle stages?
+
+The machine learning lifecycle, adapted from [Crisp-ML(Q)](https://ml-ops.org/content/crisp-ml), consists of the following stages:
+
+| Name | Description |
+|---|---|
+| Business and Data Understanding | Defining the scope and requirements of the project and collecting data |
+| Data Preparation | Data cleaning, data augmentation, and developing a robust data pipeline |
+| ML Model Engineering | Defining quality measures, selecting a model architecture, and training a model |
+| ML Model Evaluation | Increasing model explainability and ensuring that the developed model complies with project needs and satisfies risk and safety constraints |
+| Deployment | Setting up production environment and productionizing the validated ML model |
+| Monitoring and Maintenance | Continually evaluating the deployed model to ensure it continues to fulfill quality assurance measures |
diff --git a/public/content/update-files/2021-06.md b/public/content/update-files/2021-06.md
new file mode 100644
index 00000000..a69172f7
--- /dev/null
+++ b/public/content/update-files/2021-06.md
@@ -0,0 +1,12 @@
+#### June 2021
+
+##### Website v2.0.0 - 2.1.3
+
+Official launch of https://atlas.mitre.org, allowing users to browse the ATLAS matrix and initial set of case studies.
+
+
+
+
+##### Data v2.0.0
+
+This version of ATLAS data contains 16 tactics, 30 techniques, 27 sub-techniques, and 13 case studies. 14 of the tactics and several techniques used in case studies were imported from MITRE ATT&CK® Enterprise v9.
diff --git a/public/content/update-files/2021-07.md b/public/content/update-files/2021-07.md
new file mode 100644
index 00000000..1afe364a
--- /dev/null
+++ b/public/content/update-files/2021-07.md
@@ -0,0 +1,10 @@
+#### July 2021
+
+
+##### Website v2.2.0 - 2.2.2
+
+ATLAS Navigator layers are available for case studies, highlighting techniques used in each procedure. See the "ATLAS Navigator layer" button on the case study pages for to view and download the layer files.
+
+##### Data v2.0.1
+
+This version of ATLAS data contains 16 tactics, 30 techniques, 27 sub-techniques, and 13 case studies. 14 of the tactics and several techniques used in case studies were imported from MITRE ATT&CK® Enterprise v9.
diff --git a/public/content/update-files/2021-10.md b/public/content/update-files/2021-10.md
new file mode 100644
index 00000000..9a136f8e
--- /dev/null
+++ b/public/content/update-files/2021-10.md
@@ -0,0 +1,15 @@
+#### October 2021
+
+
+##### Website v2.3.0 - 2.3.2
+
+Technique pages display examples of how techniques have been used in case studies, drawn from procedure steps.
+
+
+##### Data v2.2.0
+
+This version of ATLAS data contains 16 tactics, 30 techniques, 27 sub-techniques, and 15 case studies. 14 of the tactics and several techniques used in case studies were imported from MITRE ATT&CK® Enterprise v9.
+
+New case studies:
+- [Backdoor Attack on Deep Learning Models in Mobile Apps](https://atlas.mitre.org/studies/AML.CS0013)
+- [Confusing Antimalware Neural Networks](https://atlas.mitre.org/studies/AML.CS0014)
diff --git a/public/content/update-files/2022-03.md b/public/content/update-files/2022-03.md
new file mode 100644
index 00000000..eb85ab4a
--- /dev/null
+++ b/public/content/update-files/2022-03.md
@@ -0,0 +1,35 @@
+#### March 2022
+
+
+##### Website v3.0.0
+
+This website update adds new functionality in the form of the Case Study Builder. The builder can be used to craft submission files for new case studies with details and technique mappings.
+
+The [Case Study Builder](https://atlas.mitre.org/studies/create) can be found in the “Build Case Study” subsection located under the “Case Study” tab in the navigation menu.
+
+
+
+
+###### How to Use the Case Study Builder:
+
+1. Fill out the form.
+2. Download the generated case study .yaml file (and PowerPoint .pptx version if selected).
+3. Email the case study file to atlas@mitre.org
+
+To view or edit an existing case study, click the "Load Case Study" button and upload the .yaml file. Make any necessary adjustments, then re-download the file. The ATLAS team will review the submission and follow up with feedback.
+
+
+###### Case Study Considerations:
+
+1. The attack exploits one or more vulnerabilities that compromise the confidentiality, integrity, or availability of an AI system.
+2. The attack is against a production/commercial AI system. This can be on MLaaS or AI systems embedded in clients/at the edge.
+3. Ensure you have permission to share this information and/or publish this research. Please follow the proper channels before reporting a new attack and make sure you are practicing responsible disclosure.
+
+We are especially excited for new case-studies! We look forward to contributions from both industry and academic researchers.
+
+
+##### Data v3.0.0
+
+This version of ATLAS data contains 12 tactics, 36 techniques, 27 sub-techniques, and 15 case studies.
+
+Prior usage of MITRE ATT&CK® Enterprise tactics and techniques have been adapted into the ATLAS framework, with ATLAS IDs and updated machine learning-specific descriptions.
diff --git a/public/content/update-files/2022-07.md b/public/content/update-files/2022-07.md
new file mode 100644
index 00000000..dbef576a
--- /dev/null
+++ b/public/content/update-files/2022-07.md
@@ -0,0 +1,35 @@
+#### July 2022
+
+
+##### Website v3.1.0
+
+This website update adds new functionality to support display of multiple matrices and custom object types, as well as string properties in data objects.
+
+Usability improvements include wider availability of navigation breadcrumbs, matrix item hierarchies in side navigation bars, and data object hover previews, as well as better support for small screens. Additional updates for case study builder validation, upcoming events, and various fixes.
+
+
+##### Data v3.1.0 - 4.0.0
+
+This version of ATLAS data contains 1 matrix, 12 tactics, 36 techniques, 27 sub-techniques, and 15 case studies.
+
+New features include support for custom data object types and IDs, as well as multiple matrices.
+
+There is a new top level key in the output YAML for `matrices`, and the updated format is as follows:
+ ```yaml
+ id: ATLAS
+ name: Adversarial Threat Landscape for AI Systems
+ version: Version number for this data release
+
+ matrices: List of matrix data
+ - id: ATLAS
+ name: ATLAS Machine Learning Threat Matrix
+ tactics: List of tactics objects
+ techniques: List of technique and subtechnique objects
+
+ case-studies: List of case study objects
+ ```
+
+
+##### Navigator Data v1.1.0
+
+Supports output of multiple matrices and collections for ATT&CK Workbench compatibility.
diff --git a/public/content/update-files/2022-10.md b/public/content/update-files/2022-10.md
new file mode 100644
index 00000000..bea27b02
--- /dev/null
+++ b/public/content/update-files/2022-10.md
@@ -0,0 +1,42 @@
+#### October 2022
+
+
+##### Website v3.2.0
+
+This website update refreshes existing case studies and shows updated tactic and technique descriptions.
+
+New fields have been added to case studies: case study type, reporter, target, and actor. See the new [FAQ](/resources/faq) for definitions. Additional updates were also added for case study builder validation and various bug fixes.
+
+
+##### Data v4.1.0
+
+This version of ATLAS data contains 1 matrix, 12 tactics, 37 techniques, 27 sub-techniques, and 15 case studies.
+
+New technique: [System Misuse for External Effect](/techniques/AML.T0048)
+
+Updated descriptions and content for tactics, techniques, and case studies.
+
+The case study YAML format has been updated to support the new case study version, with the added fields: case study type, reporter, target, and actor. The update format is as follows:
+
+ ```yaml
+ study:
+ name: Name
+ summary: Summary
+ incident-date: 2017-08-01
+ incident-date-granularity: DATE
+ procedure:
+ - tactic: AML.TA0005
+ technique: AML.T0011
+ description: Description
+ reporter: Reporter
+ actor: Actor
+ target: Target
+ case-study-type: incident
+ references: []
+ ```
+ *Note that the reporter field is only required if the case study type is "incident", otherwise it can be omitted*
+
+
+##### Navigator Data v1.2.0
+
+Updated ATLAS STIX and Navigator layer files for the added technique and refreshed case studies in ATLAS Data v4.1.0.
diff --git a/public/content/update-files/2023-01.md b/public/content/update-files/2023-01.md
new file mode 100644
index 00000000..021417eb
--- /dev/null
+++ b/public/content/update-files/2023-01.md
@@ -0,0 +1,21 @@
+#### January 2023
+
+
+##### Website v3.3.0
+
+This website update indicates when ATLAS tactics and techniques have been adapted from ATT&CK, displaying a red `&` in the matrix and list views and linking to the ATT&CK website on individual tactic and technique pages. Additional updates for [upcoming events](/resources/contact) and various bug fixes.
+
+
+##### Data v4.2.0
+
+This version of ATLAS data contains 1 matrix, 12 tactics, 38 techniques, 27 sub-techniques, and 16 case studies.
+
+- New technique: [Data from Local System](/techniques/AML.T0037)
+- New case study: [Compromised PyTorch Dependency Chain](/studies/AML.CS0015)
+
+
+##### Navigator Data v1.3.0
+
+The ATLAS STIX now also includes ATT&CK Enterprise v12 for comparison purposes. Any ATLAS techniques adapted from ATT&CK are additionally denoted with "(ATLAS)" to distinguish the names.
+
+Updated ATLAS STIX and Navigator layer files for the added technique and new case study in ATLAS Data v4.2.0.
diff --git a/public/content/update-files/2023-02.md b/public/content/update-files/2023-02.md
new file mode 100644
index 00000000..702528aa
--- /dev/null
+++ b/public/content/update-files/2023-02.md
@@ -0,0 +1,21 @@
+#### February 2023
+
+
+##### Website v3.4.0
+
+This website update displays the new case study and additional techniques.
+
+
+##### Data v4.3.0
+
+This version of ATLAS data contains 1 matrix, 12 tactics, 40 techniques, 27 sub-techniques, and 17 case studies.
+
+- New techniques
+ + [Exploit Public-Facing Application](/techniques/AML.T0049)
+ + [Command and Scripting Interpreter](/techniques/AML.T0050)
+- New case study: [Achieving Code Execution in MathGPT via Prompt Injection](/studies/AML.CS0016)
+
+
+##### Navigator Data v1.4.0
+
+Updated ATLAS STIX and Navigator layer files for the added techniques and new case study in ATLAS Data v4.3.0.
diff --git a/public/content/update-files/2023-04.md b/public/content/update-files/2023-04.md
new file mode 100644
index 00000000..b4aadca6
--- /dev/null
+++ b/public/content/update-files/2023-04.md
@@ -0,0 +1,11 @@
+#### April 2023
+
+
+##### Website v3.5.0
+
+This website update includes initial mitigations.
+
+
+##### Data v4.4.0
+
+This version of ATLAS data contains 1 matrix, 12 tactics, 40 techniques, 27 sub-techniques, 19 mitigations, and 17 case studies.
diff --git a/public/content/update-files/2023-10.md b/public/content/update-files/2023-10.md
new file mode 100644
index 00000000..1cf69872
--- /dev/null
+++ b/public/content/update-files/2023-10.md
@@ -0,0 +1,55 @@
+#### October 2023
+
+New large language model (LLM) content and updated mitigations.
+
+
+##### Website v3.6.0
+
+This website update includes updated mitigations and new tactics, techniques, and case studies inspired by large language models (LLMs).
+
+
+##### Data v4.5.0
+
+This version of ATLAS data contains 1 matrix, 14 tactics, 46 techniques, 36 sub-techniques, 19 mitigations, and 22 case studies.
+
+###### Tactics and techniques
+- Added new tactics
+ + [Privilege Escalation](https://atlas.mitre.org/tactics/AML.TA0012)
+ + [Credential Access](https://atlas.mitre.org/tactics/AML.TA0013)
+
+- Added new techniques
+ + [Develop Capabilities](https://atlas.mitre.org/techniques/AML.T0017)
+ + [Develop Capabilities: Adversarial ML Attacks](https://atlas.mitre.org/techniques/AML.T0017.000)
+ - Previously known as "Develop Adversarial ML Attack Capabilities"
+ + [LLM Prompt Injection](https://atlas.mitre.org/techniques/AML.T0051)
+ + [LLM Prompt Injection: Direct](https://atlas.mitre.org/techniques/AML.T0051.000)
+ + [LLM Prompt Injection: Indirect](https://atlas.mitre.org/techniques/AML.T0051.001)
+ + [Phishing](https://atlas.mitre.org/techniques/AML.T0052)
+ + [Phishing: Spearphishing via Social Engineering LLM](https://atlas.mitre.org/techniques/AML.T0052.000)
+ + [Compromise LLM Plugins](https://atlas.mitre.org/techniques/AML.T0053)
+ + [LLM Jailbreak](https://atlas.mitre.org/techniques/AML.T0054)
+ + [Unsecured Credentials](https://atlas.mitre.org/techniques/AML.T0055)
+ + [LLM Meta Prompt Extraction](https://atlas.mitre.org/techniques/AML.T0056)
+ + [LLM Data Leakage](https://atlas.mitre.org/techniques/AML.T0057)
+ + [External Harms](https://atlas.mitre.org/techniques/AML.T0048)
+ - Previously this technique ID was known as "System Misuse for External Effect"
+ + [External Harms: Financial Harm](https://atlas.mitre.org/techniques/AML.T0048.000)
+ + [External Harms: Reputational Harm](https://atlas.mitre.org/techniques/AML.T0048.001)
+ + [External Harms: Societal Harm](https://atlas.mitre.org/techniques/AML.T0048.002)
+ + [External Harms: User Harm](https://atlas.mitre.org/techniques/AML.T0048.003)
+ + [External Harms: ML Intellectual Property Theft](https://atlas.mitre.org/techniques/AML.T0048.004)
+ - Previously was a top-level technique "ML Intellectual Property Theft", note the ID change
+
+###### Case studies
+- Added new case studies
+ + [Bypassing ID.me Identity Verification](https://atlas.mitre.org/studies/AML.CS0017)
+ + [Arbitrary Code Execution with Google Colab](https://atlas.mitre.org/studies/AML.CS0018)
+ + [PoisonGPT](https://atlas.mitre.org/studies/AML.CS0019)
+ + [Indirect Prompt Injection Threats: Bing Chat Data Pirate](https://atlas.mitre.org/studies/AML.CS0020)
+ + [ChatGPT Plugin Privacy Leak](https://atlas.mitre.org/studies/AML.CS0021)
+
+- Refreshed existing case studies with LLM techniques
+ + [Achieving Code Execution in MathGPT via Prompt Injection](https://atlas.mitre.org/studies/AML.CS0016)
+
+###### Mitigations
+Added machine learning lifecycle stages and new categories to mitigations
\ No newline at end of file
diff --git a/public/content/update-files/2024-01.md b/public/content/update-files/2024-01.md
new file mode 100644
index 00000000..d0fd3416
--- /dev/null
+++ b/public/content/update-files/2024-01.md
@@ -0,0 +1,22 @@
+#### January 2024
+
+
+##### Website v3.6.1
+
+This website update includes a [new ATLAS fact sheet](https:/atlas.mitre.org/pdf-files/MITRE_ATLAS_Fact_Sheet.pdf), an updated events list and LinkedIn page, as well as mitigations updates below and updated STIX and Excel representations.
+
+
+##### Data v4.5.1
+
+This version of ATLAS data contains 1 matrix, 14 tactics, 46 techniques, 36 sub-techniques, 20 mitigations, and 22 case studies.
+
+###### Mitigations
+
+- Added new mitigation
+ + [Control Access to ML Models and Data in Production](https://atlas.mitre.org/mitigations/AML.M0019)
+- Minor updates to mitigation descriptions and techniques used
+
+
+##### Navigator Data v1.6.1
+
+Updated ATLAS STIX with ATT&CK Enterprise v14.1.
diff --git a/public/content/update-files/2024-03.md b/public/content/update-files/2024-03.md
new file mode 100644
index 00000000..1df41d85
--- /dev/null
+++ b/public/content/update-files/2024-03.md
@@ -0,0 +1,14 @@
+#### March 2024
+
+
+##### Website v4.0.0
+
+This website update contains a redesigned look and migrates the code base from Nuxt.js 2 to Vue 3.
+
+
+##### Data v4.5.2
+
+This version of ATLAS data contains 1 matrix, 14 tactics, 46 techniques, 36 sub-techniques, 20 mitigations, and 22 case studies.
+
+###### Techniques and Case Studies
+- Minor fixes for typos
diff --git a/public/excel-files/atlas-matrices.xlsx b/public/excel-files/atlas-matrices.xlsx
new file mode 100644
index 00000000..9a622e27
Binary files /dev/null and b/public/excel-files/atlas-matrices.xlsx differ
diff --git a/public/excel-files/atlas-mitigations.xlsx b/public/excel-files/atlas-mitigations.xlsx
new file mode 100644
index 00000000..c0140c10
Binary files /dev/null and b/public/excel-files/atlas-mitigations.xlsx differ
diff --git a/public/excel-files/atlas-tactics.xlsx b/public/excel-files/atlas-tactics.xlsx
new file mode 100644
index 00000000..7839a153
Binary files /dev/null and b/public/excel-files/atlas-tactics.xlsx differ
diff --git a/public/excel-files/atlas-techniques.xlsx b/public/excel-files/atlas-techniques.xlsx
new file mode 100644
index 00000000..6a49662d
Binary files /dev/null and b/public/excel-files/atlas-techniques.xlsx differ
diff --git a/public/excel-files/atlas.xlsx b/public/excel-files/atlas.xlsx
new file mode 100644
index 00000000..69b1b879
Binary files /dev/null and b/public/excel-files/atlas.xlsx differ
diff --git a/public/pdf-files/MITRE_ATLAS_Fact_Sheet.pdf b/public/pdf-files/MITRE_ATLAS_Fact_Sheet.pdf
new file mode 100644
index 00000000..9dc162d2
Binary files /dev/null and b/public/pdf-files/MITRE_ATLAS_Fact_Sheet.pdf differ
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 00000000..085a2660
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/ATLAS_tm_black.png b/src/assets/ATLAS_tm_black.png
new file mode 100644
index 00000000..676efa24
Binary files /dev/null and b/src/assets/ATLAS_tm_black.png differ
diff --git a/src/assets/GettyImages-1178228880-small.jpg b/src/assets/GettyImages-1178228880-small.jpg
new file mode 100644
index 00000000..56423d39
Binary files /dev/null and b/src/assets/GettyImages-1178228880-small.jpg differ
diff --git a/src/assets/MITRE-brand_ATLAS_MITRE_tm_white.svg b/src/assets/MITRE-brand_ATLAS_MITRE_tm_white.svg
new file mode 100644
index 00000000..38262d52
--- /dev/null
+++ b/src/assets/MITRE-brand_ATLAS_MITRE_tm_white.svg
@@ -0,0 +1 @@
+TM
\ No newline at end of file
diff --git a/src/assets/MITRE_Mission_Vertical_White.svg b/src/assets/MITRE_Mission_Vertical_White.svg
new file mode 100644
index 00000000..798d15d3
--- /dev/null
+++ b/src/assets/MITRE_Mission_Vertical_White.svg
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/base64_atlas_logo.js b/src/assets/base64_atlas_logo.js
new file mode 100644
index 00000000..b797eba1
--- /dev/null
+++ b/src/assets/base64_atlas_logo.js
@@ -0,0 +1,7 @@
+const MITRE_ATLAS_TM = 'image/png; base64, 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'
+
+function MITRE_ATLAS_TM_LOGO () {
+ return MITRE_ATLAS_TM
+}
+
+export { MITRE_ATLAS_TM_LOGO }
diff --git a/src/assets/compass.png b/src/assets/compass.png
new file mode 100644
index 00000000..9f8355de
Binary files /dev/null and b/src/assets/compass.png differ
diff --git a/src/assets/dataHelpers.js b/src/assets/dataHelpers.js
new file mode 100644
index 00000000..d730cbb9
--- /dev/null
+++ b/src/assets/dataHelpers.js
@@ -0,0 +1,141 @@
+/**
+ * Helper functions for data objects.
+ * @module dataHelpers
+ */
+
+import pluralize from 'pluralize'
+
+/**
+ * Pluralizes a data object type. For use constructing page titles and object routes.
+ * @example
+ * // Truncated technique object
+ * const techniqueObj = {
+ * id: 'AML.T0000',
+ * 'object-type': 'technique'
+ * }
+ * // Title is 'techniques'
+ * const techniqueTitle = dataObjectToPluralTitle(techniqueObj)
+ *
+ * // Object type field of a data object
+ * const objectType = 'tactic'
+ * // Title is 'tactics'
+ * const title = dataObjectToPluralTitle(objectType)
+ *
+ * // Truncated case study object
+ * const caseStudyObj = {
+ * id: 'AML.CS0000',
+ * 'object-type': 'case-study'
+ * }
+ * // Title is 'case studies'
+ * const caseStudyTitle = dataObjectToPluralTitle(caseStudyObj)
+ * // Title is 'studies'
+ * const caseStudyTruncatedTitle = dataObjectToPluralTitle(caseStudyObj, true)
+ * @param {(object|string)} objectType - Data object or object type string
+ * @param {boolean} [returnLastWordOnly=false] - Whether to return only the last word of the pluralization
+ * @returns {string} A pluralization of the data object type
+ */
+export function dataObjectToPluralTitle (
+ objectType,
+ returnLastWordOnly = false
+) {
+ // Check if an object was passed as the arg, otherwise use the type as-is
+ if (typeof objectType === 'object' && 'object-type' in objectType) {
+ objectType = objectType['object-type']
+ }
+ // Replace any dashes with spaces, i.e. case-study > case study
+ const tokens = objectType.split('-')
+ // Pluralize the last word
+ const lastWordIndex = tokens.length - 1
+ const pluralLastWord = pluralize(tokens[lastWordIndex])
+
+ // Return just the last word if requested
+ if (returnLastWordOnly) {
+ return pluralLastWord
+ }
+
+ // Otherwise return entire plural string with spaces
+ tokens[lastWordIndex] = pluralLastWord
+ return tokens.join(' ')
+}
+
+/**
+ * Singularizes a string.
+ * @example
+ * // Plural string
+ * const pluralString = 'techniques'
+ * // Singular string is 'technique'
+ * const singularString = stringToSingular(pluralString)
+ *
+ * @param {string} pluralString - Plural string
+ * @returns {string} A singularization of the string
+ */
+export function stringToSingular(pluralString) {
+ // Replace any dashes with spaces, i.e. case-studies > case studies
+ const tokens = pluralString.split('-')
+ // Singularize the last word
+ const lastWordIndex = tokens.length - 1
+ const singularLastWord = pluralize.singular(tokens[lastWordIndex])
+ // Replace the last word with its singular form
+ tokens[lastWordIndex] = singularLastWord
+ // Join the tokens back together with dashes
+ return tokens.join('-')
+}
+
+
+/**
+ * Generates a URL route to the provided data object.
+ * @example
+ * // Truncated case study object
+ * const caseStudyObj = {
+ * id: 'AML.CS0000',
+ * 'object-type': 'case-study'
+ * }
+ * // Route is '/studies/AML.CS0000'
+ * const caseStudyRoute = dataObjectToRoute(caseStudyObj)
+ *
+ * // Truncated technique object
+ * const techniqueObj = {
+ * id: 'AML.T0000',
+ * 'object-type': 'technique'
+ * }
+ * // Route is '/techniques/AML.T0000'
+ * const techniqueRoute = dataObjectToRoute(techniqueObj)
+ * @param {object} obj - Data object
+ * @returns {string} Route portion of the URL to the data object
+ */
+export function dataObjectToRoute (obj) {
+ // Construct each route as a pluralization of the object type (last word) and the object ID
+ // i.e. studies for case-study, techniques for technique
+ const pluralLastWordOfObjectType = dataObjectToPluralTitle(obj, true)
+ return `/${pluralLastWordOfObjectType}/${obj.id}`
+}
+
+export function isJavascriptObject (value) {
+ // Note that arrays and null are also typed as object
+ return typeof value === 'object' && !Array.isArray(value) && value != null
+}
+
+/**
+ * Returns True if the argument represents an ATLAS data object.
+ *
+ * @param {object} value
+ */
+export function isDataObject (value) {
+ return (
+ isJavascriptObject(value) && 'object-type' in value && !('use' in value) // Can occur with technique use in mitigations
+ )
+}
+
+/**
+ * Returns True if the argument represents an array of ATLAS data objects.
+ *
+ * @param {object} value
+ */
+export function isDataObjectArray (value) {
+ if (Array.isArray(value)) {
+ // Check if it's an array of data objects
+ return value.every(v => isDataObject(v))
+ }
+
+ return false
+}
diff --git a/src/assets/events/blackhat.jpg b/src/assets/events/blackhat.jpg
new file mode 100644
index 00000000..b1e4a2a3
Binary files /dev/null and b/src/assets/events/blackhat.jpg differ
diff --git a/src/assets/events/defcon.jpg b/src/assets/events/defcon.jpg
new file mode 100644
index 00000000..24a6fa1a
Binary files /dev/null and b/src/assets/events/defcon.jpg differ
diff --git a/src/assets/events/network.jpeg b/src/assets/events/network.jpeg
new file mode 100644
index 00000000..bc9b41f8
Binary files /dev/null and b/src/assets/events/network.jpeg differ
diff --git a/src/assets/events/rsa.jpg b/src/assets/events/rsa.jpg
new file mode 100644
index 00000000..0dfbe5d5
Binary files /dev/null and b/src/assets/events/rsa.jpg differ
diff --git a/src/assets/fonts/TradeGothicLTPro-Bold.otf b/src/assets/fonts/TradeGothicLTPro-Bold.otf
new file mode 100644
index 00000000..1d8187ab
Binary files /dev/null and b/src/assets/fonts/TradeGothicLTPro-Bold.otf differ
diff --git a/src/assets/global.css b/src/assets/global.css
new file mode 100644
index 00000000..98dd911f
--- /dev/null
+++ b/src/assets/global.css
@@ -0,0 +1,22 @@
+body {
+ background-color: #424242;
+}
+
+a {
+ text-decoration: none;
+ color: #1976d2;
+}
+
+p {
+ margin-bottom: 1rem;
+}
+
+ol, ul {
+ padding-left: 24px;
+ padding-right: 0px;
+}
+
+.home-panel {
+ padding-top: 7em !important;
+ padding-bottom: 7em !important;
+}
\ No newline at end of file
diff --git a/src/assets/graphics/MITRE_ATLAS_light.svg b/src/assets/graphics/MITRE_ATLAS_light.svg
new file mode 100644
index 00000000..81c9a579
--- /dev/null
+++ b/src/assets/graphics/MITRE_ATLAS_light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/graphics/MITRE_ATLAS_logo_stacked.svg b/src/assets/graphics/MITRE_ATLAS_logo_stacked.svg
new file mode 100644
index 00000000..1846bf79
--- /dev/null
+++ b/src/assets/graphics/MITRE_ATLAS_logo_stacked.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/logo.svg b/src/assets/logo.svg
new file mode 100644
index 00000000..73961b97
--- /dev/null
+++ b/src/assets/logo.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/assets/matrix.css b/src/assets/matrix.css
new file mode 100644
index 00000000..0bde7bd3
--- /dev/null
+++ b/src/assets/matrix.css
@@ -0,0 +1,296 @@
+/*COLORS*/
+/**
+ * Colors used across the website.
+ * For each color-pair:
+ * - "color" refers to the color itself
+ * - "on-color" refers to the most readable text-color to appear on top of the color.
+ * Note: some colors don't define on-colors. This is because, for these colors, they aren't intended to
+ * appear with inner content. For example, "link" is only intended to be used for link text, which inherently
+ * cannot have inner text.
+ */
+.deemphasis {
+ color: #6b7279;
+}
+
+.matrix-header {
+ background-color: gray;
+ color: white;
+}
+
+.bg-alternate {
+ background-color: #f2f2f2 !important;
+}
+
+/******/
+.matrix-container {
+ border: 1px solid #dfdfdf;
+ background: white;
+}
+.matrix-container + .matrix-container {
+ margin-top: to-rem(16);
+}
+.matrix-container .matrix-border {
+ border-left: 1px solid #dfdfdf;
+ padding-left: 0.5rem;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.matrix-container .matrix-title {
+ border-bottom: 1px solid #dfdfdf;
+ margin-bottom: 1rem;
+ padding-bottom: 0.5rem;
+}
+.matrix-container .scroll-indicator-group {
+ white-space: nowrap;
+ display: flex;
+}
+.matrix-container .scroll-indicator-group .matrix-scroll-box {
+ flex-grow: 1;
+ display: inline-block;
+}
+.matrix-container .scroll-indicator-group .scroll-indicator {
+ width: 0px;
+ display: inline-block;
+ position: relative;
+}
+.matrix-container .scroll-indicator-group .scroll-indicator .cover {
+ width: 50px;
+ height: 100%;
+ position: absolute;
+ pointer-events: none;
+}
+.matrix-container .scroll-indicator-group .scroll-indicator.right .cover {
+ right: 0;
+}
+.matrix-container .scroll-indicator-group .scroll-indicator.right.show .cover {
+ background: linear-gradient(to right, rgba(255, 255, 255, 0.001), white);
+}
+.matrix-container .scroll-indicator-group .scroll-indicator.left .cover {
+ left: 0;
+}
+.matrix-container .scroll-indicator-group .scroll-indicator.left.show .cover {
+ background: linear-gradient(to left, rgba(255, 255, 255, 0.001), white);
+}
+
+.matrix {
+ white-space: normal;
+ line-height: 14px;
+}
+.matrix.side .tactic {
+ padding: 2px;
+ width: 1%;
+ vertical-align: top;
+}
+.attack-and {
+ color: red;
+ font-size: 12px;
+ font-weight: normal;
+ vertical-align: super;
+}
+.matrix.side .tactic.name, .matrix.side .tactic.count {
+ text-align: center;
+ font-size: 16px;
+}
+.matrix.side .tactic.name {
+ font-weight: bold;
+}
+.matrix.side .tactic.count {
+ font-size: 13px;
+ border-bottom: 1px solid black;
+ padding-bottom: 5px;
+ margin-bottom: 5px;
+}
+.matrix.side .tactic .techniques-table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.matrix.side .tactic .techniques-table tr, .matrix.side .tactic .techniques-table td {
+ padding: 0;
+}
+.matrix.side .tactic .techniques-table tr {
+ height: 1px;
+}
+.matrix.side .tactic .supertechnique {
+ border-collapse: collapse;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+}
+.matrix.side .tactic .supertechnique td {
+ padding: 0;
+ vertical-align: top;
+}
+.matrix.side .tactic .supertechnique td.technique {
+ outline: 1px solid #6b7279;
+ outline-offset: -1px;
+}
+.matrix.side .tactic .subtechniques {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ margin-left: -1px;
+ border-left: 2px solid #6b7279;
+ outline: 1px solid #6b7279;
+ outline-offset: -1px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+.matrix.side .tactic .subtechniques.hidden {
+ display: none;
+}
+.matrix.side .tactic .subtechniques .subtechnique {
+ height: 100%;
+ flex-grow: 1;
+}
+.matrix.side .tactic .handle {
+ text-align: center;
+ vertical-align: middle;
+ transform: rotate(-90deg);
+ color: #f2f2f2;
+ width: 12px;
+ height: 12px;
+ font-size: 16px;
+ line-height: 12px;
+}
+.matrix.side .sidebar {
+ min-width: 8px;
+ width: 12px;
+ padding: 0;
+ background: #6b7279;
+ cursor: pointer;
+ position: relative;
+ vertical-align: middle;
+}
+.matrix.side .sidebar .angle {
+ display: none;
+}
+.matrix.side .sidebar.expanded .angle {
+ margin: 0 auto;
+ height: 12px;
+ display: block;
+ position: absolute;
+ background: white;
+}
+.matrix.side .sidebar.expanded .angle svg {
+ fill: #6b7279;
+ vertical-align: baseline;
+}
+.matrix.side .sidebar.expanded .angle.top {
+ top: 0px;
+}
+.matrix.side .sidebar.expanded .angle.bottom {
+ bottom: 0px;
+}
+.matrix.flat .tactic {
+ margin-right: 5px;
+ width: 1%;
+ vertical-align: top;
+}
+.matrix.flat .tactic.name, .matrix.flat .tactic.count {
+ text-align: center;
+ font-size: 16px;
+}
+.matrix.flat .tactic.name {
+ font-weight: bold;
+}
+.matrix.flat .tactic.count {
+ font-size: 13px;
+ border-bottom: 1px solid black;
+ padding-bottom: 5px;
+ margin-bottom: 5px;
+}
+.matrix.flat .tactic .subtechniques-row.hidden {
+ display: none;
+}
+.matrix.flat .tactic .supertechnique {
+ border-collapse: collapse;
+ width: 100%;
+ padding: 0;
+ margin: 0;
+}
+.matrix.flat .tactic .supertechnique td {
+ padding: 0;
+ vertical-align: top;
+}
+.matrix.flat .tactic .supertechnique td.sidebar.technique {
+ min-width: 8px;
+ width: 12px;
+ padding: 0;
+ background: #6b7279;
+ cursor: pointer;
+ vertical-align: middle;
+}
+.matrix.flat .tactic .supertechnique td.sidebar.technique .handle {
+ text-align: center;
+ vertical-align: middle;
+ transform: rotate(-90deg);
+ color: #f2f2f2;
+ width: 12px;
+ height: 9px;
+ font-size: 16px;
+ line-height: 12px;
+}
+.matrix.flat .tactic .supertechnique td.sidebar.subtechniques svg {
+ fill: #6b7279;
+ vertical-align: baseline;
+}
+.matrix.flat .tactic .supertechnique td.sidebar {
+ border-right: 2px solid #6b7279;
+}
+.matrix.flat .tactic .supertechnique td.technique {
+ outline: 1px solid #6b7279;
+ outline-offset: -1px;
+}
+.matrix.flat .tactic .more-icon {
+ transition: all ease 0.125s;
+ vertical-align: top;
+ transform: scale(0.5) rotate(-90deg);
+ width: 12px;
+ height: 12px;
+}
+.matrix.flat .tactic .more-icon.expanded {
+ transform: scale(0.5);
+}
+.matrix .technique-cell {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ font-size: 13px;
+ line-height: 14px;
+ outline: 1px solid transparent;
+ outline-offset: -1px;
+}
+.matrix .technique-cell a {
+ display: block;
+ width: 100%;
+ height: 100%;
+ padding: 7px 3px;
+}
+.matrix .technique-cell:not(.colored):not(.supertechniquecell) {
+ outline-color: #dfdfdf;
+}
+
+.matrix-controls {
+ margin: auto;
+ width: 50%;
+ padding: 1rem;
+}
+.matrix-controls button {
+ border-color: #dfdfdf;
+ background: white;
+ color: #39434C;
+}
+.matrix-controls button:hover {
+ background: whitesmoke;
+}
+.matrix-controls .layout-button:active {
+ color: #16181b;
+ background-color: #f8f9fa;
+}
+
+.center-controls .matrix-controls .btn-toolbar {
+ justify-content: center;
+}
+
+/*# sourceMappingURL=matrix.css.map */
diff --git a/src/assets/matrix.png b/src/assets/matrix.png
new file mode 100644
index 00000000..d43a6a05
Binary files /dev/null and b/src/assets/matrix.png differ
diff --git a/src/assets/mitre-logo-white.svg b/src/assets/mitre-logo-white.svg
new file mode 100644
index 00000000..e0f8cb7e
--- /dev/null
+++ b/src/assets/mitre-logo-white.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/nav-layer-icon.png b/src/assets/nav-layer-icon.png
new file mode 100644
index 00000000..90f86cd9
Binary files /dev/null and b/src/assets/nav-layer-icon.png differ
diff --git a/src/assets/powerpointFunctions.js b/src/assets/powerpointFunctions.js
new file mode 100644
index 00000000..655edfb7
--- /dev/null
+++ b/src/assets/powerpointFunctions.js
@@ -0,0 +1,489 @@
+import Pptxgen from 'pptxgenjs'
+import { MITRE_ATLAS_TM_LOGO } from '@/assets/base64_atlas_logo'
+import { formatCaseStudyIncidentDate } from '@/assets/tools.js'
+
+/**
+ * Makes powerpoint using the study information.
+ * @param {Object} study
+ * @param {String} filename
+ */
+export function makePPT (study, filename) {
+ const ppt = new Pptxgen()
+ ppt.layout = 'LAYOUT_16x9'
+ // Slide layout with just title
+ ppt.defineSlideMaster({
+ title: 'Content',
+ background: { color: 'FFFFFF' },
+ objects: [
+ {
+ placeholder: {
+ options: {
+ name: 'title',
+ type: 'title',
+ x: 0.5,
+ y: 0.5,
+ w: '100%',
+ align: 'left',
+ fontFace: 'Arial',
+ fontSize: 24,
+ color: '0D2F4F',
+ isTextBox: true
+ },
+ text: 'Title'
+ }
+ },
+ {
+ image: {
+ x: '5%',
+ y: '93%',
+ w: 1.2,
+ h: 0.18,
+ data: MITRE_ATLAS_TM_LOGO()
+ }
+ },
+
+ {
+ text: {
+ text: '© 2024 THE MITRE CORPORATION. ALL RIGHTS RESERVED.',
+ options: {
+ y: '95%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 8,
+ color: '0D2F4F'
+ }
+ }
+ }
+ ],
+ slideNumber: { x: '95%', y: '93%', fontFace: 'Arial', fontSize: 8, color: '0D2F4F' }
+ })
+
+ titleSlide(ppt, study)
+ detailSlide(ppt, study)
+ procedureSlide(ppt, study)
+ // Create reference slide if references exist
+ if (Array.isArray(study.references) && study.references.length > 0) {
+ referenceSlide(ppt, study)
+ }
+
+ // Use case study title if no argument provided
+ if (typeof filename === 'undefined') {
+ filename = study.name
+ }
+
+ ppt.writeFile({ fileName: `${filename}.pptx` })
+}
+
+
+/**
+ * Builds the title slide using the yaml
+ * @param {Pptxgen} ppt
+ * @param {Object} yaml
+ */
+function titleSlide (ppt, yaml) {
+ let textLabel = 'ATLAS Case Study'
+ if (yaml['case-study-type']) {
+ const type = yaml['case-study-type']
+ textLabel += ' - ' + type.slice(0, 1).toUpperCase() + type.slice(1, type.length)
+ }
+ ppt.defineSlideMaster({
+ title: 'Title',
+ background: { color: 'FFFFFF' },
+ objects: [
+ {
+ image: {
+ x: '42%',
+ y: '15%',
+ w: 1.5,
+ h: 0.22,
+ data: MITRE_ATLAS_TM_LOGO()
+ }
+ },
+ {
+ placeholder: {
+ options: {
+ name: 'title',
+ type: 'title',
+ y: '25%',
+ w: '100%',
+ h: 2,
+ align: 'center',
+ valign: 'middle',
+ fontFace: 'Arial',
+ fontSize: 36,
+ color: '0D2F4F',
+ isTextBox: true
+ },
+ text: 'Title'
+ }
+ },
+ {
+ text: {
+ text: textLabel,
+ options: {
+ y: '78%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 14,
+ color: '0D2F4F',
+ isTextBox: true
+ }
+ }
+ },
+
+ {
+ placeholder: {
+ options: {
+ name: 'incidentDate',
+ type: 'body',
+ y: '82%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 14,
+ color: '0D2F4F',
+ isTextBox: true
+ },
+ text: 'Incident Date'
+ }
+ },
+ {
+ placeholder: {
+ options: {
+ name: 'involved',
+ type: 'body',
+ y: '88%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 14,
+ color: '0D2F4F',
+ isTextBox: true
+ },
+ text: 'Target | Actor | Reporter'
+ }
+ }
+ ]
+ })
+
+ // Convert incident date to a locale date string,
+ // depending on specified date granularity
+ const formattedDate = formatCaseStudyIncidentDate(yaml)
+
+ // Workaround for erroneous list item, TBD removal
+ let reporter = yaml.reporter
+ if (Array.isArray(reporter)) {
+ reporter = reporter[0]
+ }
+
+ ppt
+ .addSlide({ masterName: 'Title' })
+ .addText(yaml.name, { placeholder: 'title' })
+ .addText(
+ [
+ {
+ text: 'Actor: '
+ },
+ {
+ text: yaml.actor ? yaml.actor : 'Unknown',
+ options: {
+ bold: true
+ }
+ },
+ {
+ text: ' | Target: '
+ },
+ {
+ text: yaml.target ? yaml.target : 'Unknown',
+ options: {
+ bold: true
+ }
+ },
+ {
+ text: yaml.reporter ? ' | Reporter: ' : ''
+ },
+ {
+ text: yaml.reporter ? yaml.reporter : '',
+ options: {
+ bold: true
+ }
+ }
+ ],
+ {
+ placeholder: 'involved'
+ }
+ )
+ .addText(formattedDate, { placeholder: 'incidentDate' })
+}
+
+
+/**
+ * Adds a summary slide using the yaml
+ * @param {Pptxgen} ppt
+ * @param {Object} yaml
+ */
+function detailSlide (ppt, yaml) {
+ ppt.defineSlideMaster({
+ title: 'Summary',
+ background: { color: 'FFFFFF' },
+ objects: [
+ {
+ placeholder: {
+ options: {
+ name: 'title',
+ type: 'title',
+ x: 0.5,
+ y: 0.5,
+ w: '100%',
+ h: 1,
+ align: 'left',
+ fontFace: 'Arial',
+ fontSize: 24,
+ color: '0D2F4F',
+ isTextBox: true
+ },
+ text: 'Title'
+ }
+ },
+ {
+ placeholder: {
+ options: {
+ name: 'content',
+ type: 'body',
+ x: 0.5,
+ y: 1.2,
+ w: 9,
+ h: 4,
+ align: 'left',
+ fontFace: 'Arial',
+ fontSize: 12,
+ color: '0D2F4F',
+ isTextBox: true,
+ lineSpacingMultiple: 1.15
+ },
+ text: 'Content'
+ }
+ },
+ {
+ image: {
+ x: '5%',
+ y: '93%',
+ w: 1.2,
+ h: 0.18,
+ data: MITRE_ATLAS_TM_LOGO()
+ }
+ },
+
+ {
+ text: {
+ text: '© 2024 THE MITRE CORPORATION. ALL RIGHTS RESERVED.',
+ options: {
+ y: '95%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 8,
+ color: '0D2F4F'
+ }
+ }
+ }
+ ],
+ slideNumber: { x: '95%', y: '93%', fontFace: 'Arial', fontSize: 8, color: '0D2F4F' }
+ })
+
+ ppt.addSlide({ masterName: 'Summary' })
+ .addText('Summary', { placeholder: 'title' })
+ .addText(yaml.summary, { placeholder: 'content' })
+}
+
+
+/**
+ * Gets the url from from some object type
+ * @param {Object} infoObject
+ * @returns {String}
+ */
+function getUrlFromInfoObject (infoObject) {
+ const baseUrl = window.location.origin
+ if(infoObject.label.startsWith('Technique not found')) {
+ return baseUrl
+ }
+ return `${baseUrl}/${infoObject['object-type']}s/${infoObject.id}`
+}
+
+
+
+/**
+ * Links text to a given url
+ * @param {String} text
+ * @param {String} url
+ * @returns {Object}
+ */
+function linkText (text, url) {
+ return { text, options: { hyperlink: { url }, fontFace: 'Arial', fontSize: 10 } }
+}
+
+
+/**
+ * Builds procedure slides using the yaml
+ * @param {Pptxgen} ppt
+ * @param {Object} yaml
+ */
+function procedureSlide (ppt, yaml) {
+ const rows = [
+ [
+ {
+ text: '#',
+ options: {
+ fill: '005B94',
+ color: 'ffffff',
+ align: 'center',
+ bold: true,
+ fontFace: 'Arial',
+ fontSize: 10
+ }
+ },
+ {
+ text: 'Technique',
+ options: {
+ fill: '005B94',
+ color: 'ffffff',
+ align: 'center',
+ bold: true,
+ fontFace: 'Arial',
+ fontSize: 10
+ }
+ },
+ {
+ text: 'Description',
+ options: {
+ fill: '005B94',
+ color: 'ffffff',
+ align: 'center',
+ bold: true,
+ fontFace: 'Arial',
+ fontSize: 10
+ }
+ }
+ ]
+ ]
+
+ for (let i = 0; i < yaml.procedure.length; i++) {
+ const description = yaml.procedure[i].description
+ const techniqueInfo = yaml.procedure[i].techniqueObject
+
+ const row = [
+ { text: i + 1, options: { fontFace: 'Arial', fontSize: 10, align: 'center' } },
+ linkText(
+ techniqueInfo.label,
+ getUrlFromInfoObject(techniqueInfo)
+ ),
+ { text: description, options: { fontFace: 'Arial', fontSize: 10 } }
+ ]
+ rows.push(row)
+ }
+
+
+ ppt.defineSlideMaster({
+ title: 'Procedure',
+ background: { color: 'FFFFFF' },
+ objects: [
+ {
+ image: {
+ x: '5%',
+ y: '93%',
+ w: 1.2,
+ h: 0.18,
+ data: MITRE_ATLAS_TM_LOGO()
+ }
+ },
+
+ {
+ text: {
+ text: '© 2024 THE MITRE CORPORATION. ALL RIGHTS RESERVED.',
+ options: {
+ y: '95%',
+ w: '100%',
+ align: 'center',
+ fontFace: 'Arial',
+ fontSize: 8,
+ color: '0D2F4F'
+ }
+ }
+ }
+ ],
+ slideNumber: { x: '95%', y: '93%', fontFace: 'Arial', fontSize: 8, color: '0D2F4F' }
+ })
+ const slide = ppt.addSlide({ masterName: 'Procedure' })
+ slide.addText('Procedure', {
+ x: 0.5,
+ y: 0.5,
+ w: '100%',
+ h: 1,
+ align: 'left',
+ valign: 'top',
+ fontFace: 'Arial',
+ fontSize: 24,
+ color: '0D2F4F',
+ isTextBox: true
+ })
+ // the latest pptxgenjs errors here, need to revert to 3.7.1 to work. Issue below:
+ // https://github.com/gitbrent/PptxGenJS/issues/1005
+ slide.addTable(rows, {
+ y: 1,
+ colW: [0.5, 2.6, 5.7],
+ w: 11,
+ color: '0D2F4F',
+ autoPage: true,
+ autoPageRepeatHeader: true,
+ autoPageLineWeight: -0.2,
+ autoPageCharWeight: -0.2,
+ newSlideStartY: 0.4,
+ // verbose: true,
+ border: { color: 'D4D4D3' },
+ margin: 10
+ })
+}
+
+
+
+/**
+ * Builds the reference slides using the yaml
+ * @param {Pptxgen} ppt
+ * @param {Object} yaml
+ */
+function referenceSlide (ppt, yaml) {
+ const slide = ppt.addSlide({ masterName: 'Content' })
+ .addText('References', { placeholder: 'title' })
+
+ const texts = []
+
+ yaml.references.forEach((ref) => {
+ const hasText = 'title' in ref && ref.title !== null && ref.title !== ''
+ const hasUrl = 'url' in ref && ref.url !== null && ref.url !== ''
+
+ if (hasText && hasUrl) {
+ texts.push({
+ text: JSON.parse(JSON.stringify(ref.title)),
+ options: { hyperlink: { url: ref.url, tooltip: ref.url }, color: '0D2F4F', fontFace: 'Arial', fontSize: 12, bullet: { type: 'number' }, paraSpaceAfter: 10, breakLine: true }
+ })
+ } else if (hasText) {
+ texts.push({
+ text: JSON.parse(JSON.stringify(ref.title)),
+ options: { color: '0D2F4F', fontFace: 'Arial', fontSize: 12, bullet: { type: 'number' }, paraSpaceAfter: 10, breakLine: true }
+ })
+ } else if (hasUrl) {
+ texts.push({
+ text: JSON.parse(JSON.stringify(ref.url)),
+ options: { hyperlink: { url: ref.url }, color: '0D2F4F', fontFace: 'Arial', fontSize: 12, bullet: { type: 'number' }, paraSpaceAfter: 10, breakLine: true }
+ })
+ }
+
+ // Add to slide
+ slide.addText(
+ texts,
+ { x: 0.5, y: 1.2, w: 9, h: 4, valign: 'top' }
+ )
+ })
+}
\ No newline at end of file
diff --git a/src/assets/tools.js b/src/assets/tools.js
new file mode 100644
index 00000000..b75dd146
--- /dev/null
+++ b/src/assets/tools.js
@@ -0,0 +1,348 @@
+/**
+ * Helper functions for case study builder and display functionality.
+ * @module tools
+ */
+
+import path from 'path'
+import { dump } from 'js-yaml'
+import { validate } from 'jsonschema'
+import jsyaml from 'js-yaml'
+
+import schema from '../../public/atlas-data/dist/schemas/atlas_website_case_study_schema.json'
+import { EXTRA_ADDED_WEBSITE_KEYS } from '../stores/main'
+
+/**
+ * Capitalizes the first letter of the provided string.
+ * @example
+ * capitalize('hello world!') // Hello world!
+ * @param {string} str
+ * @returns {string}
+ */
+export function capitalize (str) {
+ return `${str[0].toUpperCase()}${str.slice(1)}`
+}
+
+/**
+ * Splits text into array, capitalizes each word, joins into one string
+ * @param {string} str
+ * @param {string} splitter
+ * @returns {string}
+ */
+export function capitalizeSidebar (str, splitter) {
+ const tokens = str.split(splitter)
+ for (let i = 0; i < tokens.length; i++) {
+ tokens[i] = capitalize(tokens[i])
+ }
+ return tokens.join(' ')
+}
+
+/**
+ * Finds last word in a string
+ * @param {string} str
+ * @returns {string}
+ */
+export function lastWord (str) {
+ const textArr = str.split(' ')
+ return textArr[textArr.length - 1]
+}
+
+/**
+ * Generates a 12-digit UUID-like string for case study file metadata use,
+ * to uniquely identify each downloaded file.
+ * @example
+ * generateID() // 'fcac-f4ba-d65b'
+ * @param {string} [template='xxxx-xxxx-xxxx]
+ * @returns {string}
+ */
+export function generateID (template = 'xxxx-xxxx-xxxx') {
+ // *NOT* RFC compliant, use this where the uniqueness isn't so important
+ // adapted from stackoverflow
+ return template.replace(/x/g, function (c) {
+ const r = (Math.random() * 16) | 0
+ const v = c === 'x' ? r : (r & 0x3) | 0x8
+ return v.toString(16)
+ })
+}
+
+/**
+ * Internal holder for deprecation error messages.
+ */
+const depArray = []
+/**
+ * Adds an error message if case study contains deprecated fields as labeled in the schema.
+ * @see {@link https://github.com/tdegrunt/jsonschema#pre-property-validation-hook}
+ */
+function preValidateProperty (object, key, schema, options, ctx) {
+ if (schema.deprecated && key in object) {
+ depArray.push('Deprecation Error: ' + schema.depMessage)
+ }
+}
+
+/**
+ * Converts `jsonschema` validation result errors to strings for display.
+ * Used by {@link validFormatYAML}
+ * @see {@link https://github.com/tdegrunt/jsonschema#results} for ValidatorResult and ValidationError docs
+ * @param {ValidationError[]} errors - Array of `jsonschema` library ValidationError objects from the ValidationResult
+ * @returns {string[]}
+ */
+function getErrorList (errors) {
+ const errorArrayLength = errors.length
+ // let errorMessages = 'File Errors: '
+ const errorListSimplified = []
+ // Iterates through error list to populate a new list that only contains user friendly (more readable) error messages
+ for (let i = 0; i < errorArrayLength; i++) {
+ if (!(errors[i].stack).includes('subschema') && !(errors[i].stack).includes('constant: null')) {
+ errorListSimplified.push('File Error: ' + errors[i].stack)
+ }
+ }
+ return errorListSimplified
+}
+
+/**
+ * Verifies if user uploaded case study yaml file is in correct format for use in case builder
+ * @param {object} yamlObj - Object read from uploaded case study YAML file
+ * @returns {(string[]|string)}} Array of error strings for display or empty string @todo Check on this
+ */
+export function validFormatYAML (yamlObj) {
+ depArray.length = 0
+ const validObj = validate(yamlObj, schema, { nestedErrors: true, preValidateProperty })
+ // If yaml file format is valid
+ if (validObj.valid) {
+ if (depArray.length !== 0) {
+ return depArray
+ }
+ return ''
+ }
+ // Else output error messages for user to correct formatting
+ return depArray.length !== 0 ? getErrorList(validObj.errors).concat(depArray) : getErrorList(validObj.errors)
+}
+
+/**
+ * Verifies if user uploaded case study yaml file is up to date schema version
+ * @param {object} yamlObj - Object read from uploaded case study YAML file
+ * @returns {boolean}
+ */
+export function isSchemaOutdated (yamlObj) {
+ return yamlObj.meta.version !== schema.$version
+}
+
+/**
+ * Returns a formatted date string from a case study object's incident date and granularity fields.
+ * For use in date rendering on the website and PowerPoints.
+ * @example
+ * // Truncated case study object
+ * const obj = {
+ * 'incident-date': Date('2022-01-02')
+ * }
+ *
+ * obj['incident-date-granularity'] = 'YEAR'
+ * formatCaseStudyIncidentDate(obj) // '2022'
+ *
+ * obj['incident-date-granularity'] = 'MONTH'
+ * formatCaseStudyIncidentDate(obj) // 'January 2022'
+ *
+ * obj['incident-date-granularity'] = 'DATE'
+ * formatCaseStudyIncidentDate(obj) // 'January 2, 2022'
+ * @param {object} caseStudy - Object as created by the case study builder
+ * @returns {string} Long-form representation of the incident date
+ */
+export function formatCaseStudyIncidentDate (caseStudy) {
+ // Returns a string date in locale format
+
+ const date = caseStudy['incident-date']
+ const dateGranularity = caseStudy['incident-date-granularity']
+
+ let dateOptions = null
+
+ if (dateGranularity === 'YEAR') {
+ dateOptions = { timeZone: 'UTC', year: 'numeric' }
+ } else if (dateGranularity === 'MONTH') {
+ dateOptions = { timeZone: 'UTC', year: 'numeric', month: 'long' }
+ } else if (dateGranularity === undefined || dateGranularity === 'DATE') {
+ // If dateGranularity is DATE, or there is no date granularity
+ dateOptions = {
+ timeZone: 'UTC',
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric'
+ }
+ }
+
+ return date.toLocaleDateString('default', dateOptions)
+}
+
+/**
+ * Allows the browser to download the provided text to the provided filename.
+ * @param {string} filename - Filename including extension
+ * @param {object} text - Object representing file contents
+ */
+export function download (filename, text) {
+ const element = document.createElement('a')
+ element.setAttribute(
+ 'href',
+ 'data:text/plaincharset=utf-8,' + encodeURIComponent(text)
+ )
+ element.setAttribute('download', filename)
+
+ element.style.display = 'none'
+ document.body.appendChild(element)
+ element.click()
+ document.body.removeChild(element)
+}
+
+/**
+ * Trims any whitespace around string values. Helper function for downloadStudyFile function.
+ * @param {string} key
+ * @param {string} value
+ * @returns {string} Trimmed value
+ */
+const trimStrings = function (key, value) {
+ if (typeof value === 'string') {
+ return value.trim()
+ }
+ return value
+}
+
+/**
+ * Formats and downloads the provided case study object as a YAML file.
+ * @param {object} study - Case study data object from case study builder
+ * @param {string} filename - Filename without extension
+ */
+export function downloadStudyFile (study, filename) {
+ const studyCopy = JSON.parse(JSON.stringify(study))
+ EXTRA_ADDED_WEBSITE_KEYS.forEach(key => delete studyCopy.study[key])
+ const studyYAML = dump(studyCopy, { replacer: trimStrings }).replace(
+ 'T00:00:00.000Z',
+ ''
+ )
+ download(`${filename}.yaml`, studyYAML)
+}
+
+/**
+ * Allows the browser to download a remote file specified by URL.
+ * For use serving files on GitHub.
+ * @param {string} url
+ */
+export function downloadUrlAsFile (url) {
+ // Downloads a file located at url
+ // Parameter url is a string
+ const xhr = new XMLHttpRequest()
+ xhr.responseType = 'blob'
+ xhr.onload = function () {
+ let a = document.createElement('a')
+ a.href = window.URL.createObjectURL(xhr.response) // xhr.response is a blob
+ const urlSegments = url.split('/');
+ const basename = urlSegments[urlSegments.length - 1];
+ a.download = basename;
+ a.style.display = 'none'
+ document.body.appendChild(a)
+ a.click()
+ a = null
+ }
+ xhr.open('GET', url)
+ xhr.send()
+}
+
+/**
+ * Allows the browser to open the provided URL in a new tab.
+ * @param {string} url
+ */
+export function openNewTab (url) {
+ window.open(url, '_blank')
+}
+
+/**
+ * Creates and sets metadata for case studies built by the website.
+ * @param {object} studyData - Case study object from the builder
+ * @param {string} studySchemaVersion - Numeric string for the case study file version from nuxt.config.js
+ */
+export function setMetaData (studyData, studySchemaVersion) {
+ // Initialize meta key if not exists
+ studyData.meta = studyData.meta || {}
+ const nowDate = new Date()
+ // Only set the date-created once upon study creation
+ studyData.meta['date-created'] = studyData.meta['date-created'] ? new Date(studyData.meta['date-created']) : nowDate
+ // Always update date-updated
+ studyData.meta['date-updated'] = nowDate
+ // Set UUID
+ studyData.meta.uuid = studyData.meta.uuid ?? generateID()
+ // Set case study file version
+ studyData.meta.version = studySchemaVersion
+ // Reset the reporter if is exercise
+ // TODO is this needed?
+ if (studyData.study['case-study-type'] === 'exercise') {
+ studyData.study.reporter = ''
+ }
+ return studyData.meta
+}
+
+/**
+ * Constructs the link to a specified Navigator layer file.
+ *
+ * @param {string} filename JSON filename, without the extension
+ * @param {string} directory (optional)
+ */
+export function constructNavigatorLayerGitHubUrl(filename, directory='dist/case-study-navigator-layers') {
+ // Env var containing the first part of a raw GitHub link pointing to Navigator layers on the main branch
+ const navigatorLayerGitHubUrl = import.meta.env.VITE_NAVIGATOR_LAYER_GITHUB_URL
+ // Construct the full URL to the layer file
+ return `${navigatorLayerGitHubUrl}/${directory}/${filename}.json`
+}
+
+/**
+ * Constructs the link to open the specified Navigator layer file
+ * in the ATLAS Navigator.
+ * @param {string} layerGitHubUrl
+ */
+export function constructNavigatorUrlToLayer(layerGitHubUrl) {
+ const navigatorUrl = import.meta.env.VITE_NAVIGATOR_URL
+ // Construct the full URL to open the layer file on the Navigator
+ return `${navigatorUrl}/#layerURL=${layerGitHubUrl}`
+}
+
+/**
+ * Prepends the .env-provided base URL to the provided path.
+ * For use by `fetch()`
+ * @param {string} pathString
+ */
+export function getPathWithBase (pathString) {
+ // BASE_URL defaults to `/`, uses path.join to construct valid paths
+ return path.join(import.meta.env.BASE_URL, pathString)
+}
+
+/**
+ * Get the string with the numeric month and year of the latest update.
+ *
+ * Ex. .../update-files/2024-01.md > 2024-01
+ */
+export function getLatestUpdateDate() {
+ const modules = import.meta.glob('@/../public/content/update-files/*.md')
+ const updateFilepaths = Object.keys(modules)
+ // Filepaths are named with numeric YEAR-MONTH.md, so the last one is the most recent
+ const latestFilepath = updateFilepaths.pop(-1)
+
+ // Return the YEAR-MONTH portion of the filepath
+ const startIndex = latestFilepath.lastIndexOf('/') + 1
+ const endIndex = latestFilepath.lastIndexOf('.md')
+ const date = latestFilepath.substring(startIndex, endIndex)
+
+ return date
+}
+
+/**
+ * Get tooltip descriptions for IDView tags and Table filters
+ */
+export async function getDescriptions() {
+ try {
+ const categoriesResponse = await fetch(getPathWithBase('/content/descriptions/categories.yaml'))
+ const categories = await categoriesResponse.text()
+ let output = jsyaml.load(categories).categories
+
+ const lifecycleResponse = await fetch(getPathWithBase('/content/descriptions/ML-lifecycle.yaml'))
+ const lifecycles = await lifecycleResponse.text()
+ output = output.concat(jsyaml.load(lifecycles)['ML-lifecycle'])
+ return output
+ } catch (error) {
+ console.error('Error fetching YAML file:', error)
+ }
+}
\ No newline at end of file
diff --git a/src/components/AttackIconToolTip.vue b/src/components/AttackIconToolTip.vue
new file mode 100644
index 00000000..f06b6baf
--- /dev/null
+++ b/src/components/AttackIconToolTip.vue
@@ -0,0 +1,34 @@
+
+
+
+
+ mdi-information-outline
+
+
+
+ &
+ indicates an adaptation from ATT&CK
+
+
+
+
+
+
+
diff --git a/src/components/BreadCrumbs.vue b/src/components/BreadCrumbs.vue
new file mode 100644
index 00000000..69369d1e
--- /dev/null
+++ b/src/components/BreadCrumbs.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ContactCard.vue b/src/components/ContactCard.vue
new file mode 100644
index 00000000..c270b5db
--- /dev/null
+++ b/src/components/ContactCard.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+ {{ item.icon }}
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
diff --git a/src/components/DownloadDataDropdown.vue b/src/components/DownloadDataDropdown.vue
new file mode 100644
index 00000000..2a7b7e2a
--- /dev/null
+++ b/src/components/DownloadDataDropdown.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ Download Data
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Header.vue b/src/components/Header.vue
new file mode 100644
index 00000000..c22b6391
--- /dev/null
+++ b/src/components/Header.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ link.name }}
+
+ mdi-menu-down
+
+
+
+
+
+
+ {{ childLink.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ mdi-dots-vertical
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/NavigatorLayerDropdown.vue b/src/components/NavigatorLayerDropdown.vue
new file mode 100644
index 00000000..2ca9e2be
--- /dev/null
+++ b/src/components/NavigatorLayerDropdown.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+ Navigator Layer
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/PageSectionTitle.vue b/src/components/PageSectionTitle.vue
new file mode 100644
index 00000000..336fd9e1
--- /dev/null
+++ b/src/components/PageSectionTitle.vue
@@ -0,0 +1,20 @@
+
+
+ {{ pageTitle }}
+
+
+
+
diff --git a/src/components/PastEvents.vue b/src/components/PastEvents.vue
new file mode 100644
index 00000000..1a0ba7e4
--- /dev/null
+++ b/src/components/PastEvents.vue
@@ -0,0 +1,71 @@
+
+
+
+
+ Past Events
+
+
+
+
+
+ {{
+ item.date.toLocaleDateString('default', {
+ timeZone: 'UTC',
+ year: 'numeric',
+ month: 'long',
+ day: 'numeric'
+ })
+ }}
+
+
+
+
+ {{ item.name }}
+ mdi-open-in-new
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ProcedureTimeline.vue b/src/components/ProcedureTimeline.vue
new file mode 100644
index 00000000..f2f42c1f
--- /dev/null
+++ b/src/components/ProcedureTimeline.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ {{ getTechniqueName(procedure.technique) }}
+
+
+
+
+ {{ getTacticName(procedure.tactic) }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ScrollToTopButton.vue b/src/components/ScrollToTopButton.vue
new file mode 100644
index 00000000..c0e9edc1
--- /dev/null
+++ b/src/components/ScrollToTopButton.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/SideNav.vue b/src/components/SideNav.vue
new file mode 100644
index 00000000..6f582c9f
--- /dev/null
+++ b/src/components/SideNav.vue
@@ -0,0 +1,186 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+ {{ matrixID }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ tactic.name }}
+
+
+
+
+
+
+ {{ technique.name }}
+
+
+
+
+ {{ subtechnique.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/UpcomingEvents.vue b/src/components/UpcomingEvents.vue
new file mode 100644
index 00000000..018ad548
--- /dev/null
+++ b/src/components/UpcomingEvents.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
diff --git a/src/components/UpdateContent.vue b/src/components/UpdateContent.vue
new file mode 100644
index 00000000..ec8dc69c
--- /dev/null
+++ b/src/components/UpdateContent.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/src/components/UpdatesTable.vue b/src/components/UpdatesTable.vue
new file mode 100644
index 00000000..c8673328
--- /dev/null
+++ b/src/components/UpdatesTable.vue
@@ -0,0 +1,66 @@
+
+
+
+
All Updates
+
+
+
+ {{update.date}}
+
+
+
+
+
+
diff --git a/src/components/case-study-form/AddProcedure.vue b/src/components/case-study-form/AddProcedure.vue
new file mode 100644
index 00000000..de08c28b
--- /dev/null
+++ b/src/components/case-study-form/AddProcedure.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+ Save
+
+
+
+ {{ procedureStep.tactic ? 'Please fill out Technique' : 'Please fill out Tactic and Technique'}}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/case-study-form/AddSource.vue b/src/components/case-study-form/AddSource.vue
new file mode 100644
index 00000000..4beaf6ef
--- /dev/null
+++ b/src/components/case-study-form/AddSource.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+ Cancel
+
+ Save
+
+
+
+ Please complete at least one field
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/case-study-form/EditableProcedureTimeline.vue b/src/components/case-study-form/EditableProcedureTimeline.vue
new file mode 100644
index 00000000..f96dcabc
--- /dev/null
+++ b/src/components/case-study-form/EditableProcedureTimeline.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+ mdi-arrow-up-down
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `Delete "${getTechniqueLabel(procedure)}"?` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/case-study-form/InstructionsDialog.vue b/src/components/case-study-form/InstructionsDialog.vue
new file mode 100644
index 00000000..6aabcd48
--- /dev/null
+++ b/src/components/case-study-form/InstructionsDialog.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+ Case study considerations
+
+
+
+
+ The attack exploits one or more vulnerabilities that compromise the
+ confidentiality, integrity, or availability of a ML system.
+
+
+ The attack is against a production/commercial ML system. This can be
+ on MLaaS or ML systems embedded in clients/at the edge.
+
+
+ Ensure you have permission to share this information and/or publish
+ this research. Please follow the proper channels before reporting a
+ new attack and make sure you are practicing responsible disclosure.
+
+
+
+
+
+ How to use this case study builder
+
+
+
+ Fill out the form.
+ Download the generated case study .yaml file.
+
+ Email the case study file to
+ atlas@mitre.org .
+
+
+
+
+ After downloading the case study, a new button will appear to
+ optionally download a PowerPoint .pptx version for perusal.
+
+
+
+ To view or edit an existing case study, click the "Load Case Study"
+ button and upload the .yaml file. Make any necessary adjustments, then
+ re-download the file.
+
+
+
+ For more guidance, please watch this
+ instructional video .
+
+
+
+ Please contact
+ atlas@mitre.org with any
+ questions.
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/case-study-form/SourceList.vue b/src/components/case-study-form/SourceList.vue
new file mode 100644
index 00000000..6e2dcee6
--- /dev/null
+++ b/src/components/case-study-form/SourceList.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+ {{ i + 1 }}.
+ {{ source.title }}
+
+ {{ source.title || source.url }}
+
+
+
+
+
+
+
+
+
+
+
+ Delete {{ source.title || source.url }}?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/case-study-form/UploadFileDialog.vue b/src/components/case-study-form/UploadFileDialog.vue
new file mode 100644
index 00000000..de2c0240
--- /dev/null
+++ b/src/components/case-study-form/UploadFileDialog.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+ To view or edit an existing case study, upload a .yaml file created by this website.
+ Loading a file will overwrite any existing progress in the form. The current
+ case study schema version is {{ `v${schema.$version}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/data-display/DataSection.vue b/src/components/data-display/DataSection.vue
new file mode 100644
index 00000000..d3db100f
--- /dev/null
+++ b/src/components/data-display/DataSection.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/data-display/DataSidebar.vue b/src/components/data-display/DataSidebar.vue
new file mode 100644
index 00000000..e6deb308
--- /dev/null
+++ b/src/components/data-display/DataSidebar.vue
@@ -0,0 +1,28 @@
+
+
+
+
+ ID: {{ dataObject.id }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/data-display/DataSidebarEntry.vue b/src/components/data-display/DataSidebarEntry.vue
new file mode 100644
index 00000000..ebed34ac
--- /dev/null
+++ b/src/components/data-display/DataSidebarEntry.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
diff --git a/src/components/data-display/InfoTable.vue b/src/components/data-display/InfoTable.vue
new file mode 100644
index 00000000..3dee67f4
--- /dev/null
+++ b/src/components/data-display/InfoTable.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ mdi-magnify
+ Search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ column.title }}
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+ {{ value }}
+
+ &
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/data-display/RelatedObjsList.vue b/src/components/data-display/RelatedObjsList.vue
new file mode 100644
index 00000000..af540550
--- /dev/null
+++ b/src/components/data-display/RelatedObjsList.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
diff --git a/src/components/data-display/TableFilter.vue b/src/components/data-display/TableFilter.vue
new file mode 100644
index 00000000..0fed60bb
--- /dev/null
+++ b/src/components/data-display/TableFilter.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/data-display/Tag.vue b/src/components/data-display/Tag.vue
new file mode 100644
index 00000000..34d9f48a
--- /dev/null
+++ b/src/components/data-display/Tag.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ {{ tag }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/footer/Copyright.vue b/src/components/footer/Copyright.vue
new file mode 100644
index 00000000..66db6e79
--- /dev/null
+++ b/src/components/footer/Copyright.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
© 2021-2024 The MITRE Corporation. All Rights Reserved.
+
Approved for Public Release; Distribution Unlimited. Case Number 21-2363.
+
MITRE ATLAS™ and MITRE ATT&CK® are a trademark and registered trademark of The MITRE Corporation.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/footer/Footer.vue b/src/components/footer/Footer.vue
new file mode 100644
index 00000000..9debe431
--- /dev/null
+++ b/src/components/footer/Footer.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/footer/Mission.vue b/src/components/footer/Mission.vue
new file mode 100644
index 00000000..0c83a500
--- /dev/null
+++ b/src/components/footer/Mission.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+ Join our collaborative community to shape future tool and framework developments in AI
+ security, threat mitigation, bias, privacy and other critical aspects of AI assurance.
+
+
+
+ Connect with us
+
+
+
+
+
+ www.mitre.org
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/home/About.vue b/src/components/home/About.vue
new file mode 100644
index 00000000..325a9872
--- /dev/null
+++ b/src/components/home/About.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+ ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems) is a globally
+ accessible, living knowledge base of adversary tactics and techniques against
+ Al-enabled svstems based on real-world attack observations and realistic
+ demonstrations from Al red teams and security groups.
+
+
+
+ Get the fact sheet
+
+
+
+
+
+
+
+ Quick Links
+
+
+
+
+ {{ link.title }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/home/Hero.vue b/src/components/home/Hero.vue
new file mode 100644
index 00000000..70322387
--- /dev/null
+++ b/src/components/home/Hero.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+ Navigate threats to AI systems through
+ real-world insights
+
+
+
+
+ See the full ATLAS Matrix
+
+
+
+
+
+
+
+
+
diff --git a/src/components/home/MatrixSection.vue b/src/components/home/MatrixSection.vue
new file mode 100644
index 00000000..d917c520
--- /dev/null
+++ b/src/components/home/MatrixSection.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+ ATLAS is modeled after and complementary to
+ MITRE ATT&CK® , raising awareness of the rapidly
+ evolving vulnerabilities of Al-enabled systems as
+ they extend beyond cyber.
+
+
+
+
+
+
+
+
+
+
+ See the full ATLAS Matrix
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/home/MatrixStat.vue b/src/components/home/MatrixStat.vue
new file mode 100644
index 00000000..1103e47d
--- /dev/null
+++ b/src/components/home/MatrixStat.vue
@@ -0,0 +1,29 @@
+
+
+
+
+ {{ value }}
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
diff --git a/src/components/home/NewsCard.vue b/src/components/home/NewsCard.vue
new file mode 100644
index 00000000..33da172d
--- /dev/null
+++ b/src/components/home/NewsCard.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+ {{ formattedDate }} - {{ subtitle }}
+
+
+ {{ description }}
+
+
+
+ Learn more
+
+
+
+
+
+
diff --git a/src/components/home/NewsSection.vue b/src/components/home/NewsSection.vue
new file mode 100644
index 00000000..6d6461b8
--- /dev/null
+++ b/src/components/home/NewsSection.vue
@@ -0,0 +1,53 @@
+
+
+
+ News and Resources
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue
new file mode 100644
index 00000000..2dc8b055
--- /dev/null
+++ b/src/components/icons/IconCommunity.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue
new file mode 100644
index 00000000..6d4791cf
--- /dev/null
+++ b/src/components/icons/IconDocumentation.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue
new file mode 100644
index 00000000..c3a4f078
--- /dev/null
+++ b/src/components/icons/IconEcosystem.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue
new file mode 100644
index 00000000..7452834d
--- /dev/null
+++ b/src/components/icons/IconSupport.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue
new file mode 100644
index 00000000..660598d7
--- /dev/null
+++ b/src/components/icons/IconTooling.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/src/components/matrix/AtlasMatrix.vue b/src/components/matrix/AtlasMatrix.vue
new file mode 100644
index 00000000..54407152
--- /dev/null
+++ b/src/components/matrix/AtlasMatrix.vue
@@ -0,0 +1,33 @@
+
+
+
+ The ATLAS Matrix below shows the progression of tactics used in attacks as columns from left to right,
+ with ML techniques belonging to each tactic below.
+
& indicates an adaption from ATT&CK.
+ Click on the blue links to learn more about each item, or search and view ATLAS tactics and techniques using the links at the top navigation bar.
+
+ View the ATLAS matrix highlighted alongside ATT&CK Enterprise techniques on the
+
ATLAS Navigator .
+
+
+
+
+
+
+
diff --git a/src/components/matrix/AttackTechniqueCell.vue b/src/components/matrix/AttackTechniqueCell.vue
new file mode 100644
index 00000000..47c77561
--- /dev/null
+++ b/src/components/matrix/AttackTechniqueCell.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+ {{
+ props.technique.name.substr(
+ 0,
+ props.technique.name.length - techniqueLastWord.length
+ )
+ }}
+
+ {{ techniqueLastWord }}
+ &
+
+
+
+ {{ props.technique.id }}
+
+
+
+
+
+
+
diff --git a/src/components/matrix/AttackTechniqueRow.vue b/src/components/matrix/AttackTechniqueRow.vue
new file mode 100644
index 00000000..a7e16aac
--- /dev/null
+++ b/src/components/matrix/AttackTechniqueRow.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/matrix/MatrixAttackStyle.vue b/src/components/matrix/MatrixAttackStyle.vue
new file mode 100644
index 00000000..22d4b5e9
--- /dev/null
+++ b/src/components/matrix/MatrixAttackStyle.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+ {{ tactic.name.substr(0, tactic.name.length - tacticLastWord(tactic.name).length) }}
+
+
+
+ {{ tacticLastWord(tactic.name) }}
+
+ &
+
+
+
+
+
+ {{
+ tactic.techniques.length +
+ ' ' +
+ (tactic.techniques.length == 1 ? 'technique' : 'techniques')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/default.vue b/src/layouts/default.vue
new file mode 100644
index 00000000..76286c00
--- /dev/null
+++ b/src/layouts/default.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 00000000..38132821
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,29 @@
+import { createPinia } from 'pinia'
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from './router'
+import vuetify from './plugins/vuetify'
+import markdownit from './plugins/markdownit'
+import { useMain } from "@/stores/main";
+import { createHead } from '@unhead/vue'
+import { insertOsano } from './plugins/osano'
+import { insertAnalytics } from './plugins/analytics'
+
+const pinia = createPinia();
+const app = createApp(App);
+const head = createHead()
+
+app.use(router);
+app.use(vuetify);
+app.use(markdownit);
+app.use(pinia);
+app.use(head)
+
+insertAnalytics(app)
+insertOsano()
+
+// Initialize store
+const main = useMain();
+await main.init();
+
+app.mount('#app');
diff --git a/src/plugins/analytics.ts b/src/plugins/analytics.ts
new file mode 100644
index 00000000..af52f76d
--- /dev/null
+++ b/src/plugins/analytics.ts
@@ -0,0 +1,12 @@
+import type { App } from "vue"
+import VueGtag from "vue-gtag"
+
+export async function insertAnalytics (app: App) {
+
+ if(import.meta.env.VITE_ANALYTICS_ID) {
+ app.use(VueGtag, {
+ config: { id: import.meta.env.VITE_ANALYTICS_ID }
+ })
+ }
+
+}
\ No newline at end of file
diff --git a/src/plugins/markdownit.ts b/src/plugins/markdownit.ts
new file mode 100644
index 00000000..cf54eab8
--- /dev/null
+++ b/src/plugins/markdownit.ts
@@ -0,0 +1,74 @@
+import MarkdownIt from 'markdown-it'
+import MarkdownItAnchor from 'markdown-it-anchor';
+import { frontmatterPlugin } from '@mdit-vue/plugin-frontmatter'
+import { tocPlugin } from '@mdit-vue/plugin-toc';
+import type { App } from 'vue'
+
+// Initialize Markdown-it with settings and plugins
+const markdownit = new MarkdownIt({
+ html: true,
+ linkify: true
+ })
+ .use(MarkdownItAnchor)
+ .use(frontmatterPlugin)
+ .use(tocPlugin, { level: [4,5] })
+
+// Adding new rendering rules to apply Vuetify styling
+// https://github.com/markdown-it/markdown-it/blob/master/docs/examples/renderer_rules.md#adding-new-rules
+
+// Create proxy for rules modification
+const proxy = (tokens: any[], idx: number, options: object, env: object, self: any) => self.renderToken(tokens, idx, options);
+
+// Apply Vuetify text styling to list items
+const defaultBulletListOpenRenderer = markdownit.renderer.rules.bullet_list_open || proxy;
+markdownit.renderer.rules.bullet_list_open = function(tokens, idx, options, env, self) {
+ // Apply Vuetify styling
+ tokens[idx].attrJoin("class", 'mb-4')
+ return defaultBulletListOpenRenderer(tokens, idx, options, env, self)
+}
+
+const defaultOrderedListOpenRenderer = markdownit.renderer.rules.ordered_list_open || proxy;
+markdownit.renderer.rules.ordered_list_open = function(tokens, idx, options, env, self) {
+ // Apply the Vuetify styling
+ tokens[idx].attrJoin("class", 'mb-4')
+ return defaultOrderedListOpenRenderer(tokens, idx, options, env, self)
+}
+
+// Apply Vuetify text classes to heading elements
+// https://github.com/markdown-it/markdown-it/blob/master/docs/examples/renderer_rules.md#reusing-existing-rules
+const defaultHeadingOpenRenderer = markdownit.renderer.rules.heading_open || proxy;
+
+markdownit.renderer.rules.heading_open = function(tokens, idx, options, env, self) {
+ // Apply the appropriate Vuetify typography class, for ex. `text-h2`
+ // https://vuetifyjs.com/en/styles/text-and-typography/#typography
+ tokens[idx].attrJoin("class", `text-${tokens[idx].tag}`)
+ // Add whitespace
+ if (tokens[idx].tag === 'h4') {
+ // Section titles in AI security 101 document
+ tokens[idx].attrJoin("class", 'mt-10')
+ }
+ tokens[idx].attrJoin("class", 'mb-3')
+ return defaultHeadingOpenRenderer(tokens, idx, options, env, self)
+};
+
+// Wrap any HTML tables with Vuetify table classes
+// https://github.com/markdown-it/markdown-it/blob/master/docs/examples/renderer_rules.md#to-add-a-wrapper-element
+
+const defaultTableOpenRenderer = markdownit.renderer.rules.table_open || proxy;
+markdownit.renderer.rules.table_open = (tokens, idx, options, env, self) => {
+ return `${defaultTableOpenRenderer(tokens, idx, options, env, self)}`;
+};
+
+const defaultTableCloseRenderer = markdownit.renderer.rules.table_close || proxy;
+markdownit.renderer.rules.table_close = (tokens, idx, options, env, self) => {
+ return `${defaultTableCloseRenderer(tokens, idx, options, env, self)}
`;
+};
+
+export default {
+ install: (app: App) => {
+ // Usage in setup:
+ // import { inject } from 'vue'
+ // const md = inject('markdownit')
+ app.provide('markdownit', markdownit)
+ }
+}
\ No newline at end of file
diff --git a/src/plugins/osano.ts b/src/plugins/osano.ts
new file mode 100644
index 00000000..570b046a
--- /dev/null
+++ b/src/plugins/osano.ts
@@ -0,0 +1,14 @@
+export async function insertOsano () {
+
+ // Check for existence of the Osano cookie env var
+ if ( import.meta.env.VITE_OSANO_SCRIPT ) {
+
+ // Create a script element with the script URL
+ const script = document.createElement('script')
+ script.src = import.meta.env.VITE_OSANO_SCRIPT
+
+ // Append the script element to the document's head
+ document.head.appendChild(script)
+
+ }
+}
\ No newline at end of file
diff --git a/src/plugins/vuetify.ts b/src/plugins/vuetify.ts
new file mode 100644
index 00000000..2f224756
--- /dev/null
+++ b/src/plugins/vuetify.ts
@@ -0,0 +1,44 @@
+// Styles
+import '@mdi/font/css/materialdesignicons.css'
+import 'vuetify/styles'
+
+// Vuetify
+import { createVuetify } from 'vuetify'
+
+// Default colors + mitre brand colors
+const mainTheme = {
+ dark: false,
+ colors: {
+ header: '#424242',
+ background: '#ffffff',
+ surface: '#ffffff',
+ primary: '#424242',
+ secondary: '#4957b2',
+ error: '#b00020',
+ info: '#2196f3',
+ success: '#4caf50',
+ warning: '#fb8c00',
+ bruhus: '#fb8c00',
+ blue: '#005B94',
+ highlighter: '#FFF601',
+ darkNavy: '#0B2338',
+ navy: '#0D2F4F',
+ lightBlue: '#87DEFF',
+ darkGray: '#7E8284',
+ silver: '#D4D4D3',
+ lightSilver: '#F1F3F4',
+ }
+}
+
+// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
+export default createVuetify({
+ theme: {
+ defaultTheme: 'mainTheme',
+ themes: {
+ mainTheme,
+ }
+ },
+ display: {
+ mobileBreakpoint: 'sm',
+ }
+})
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 00000000..dfe3267d
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,99 @@
+import { createRouter, createWebHistory } from 'vue-router'
+
+import { getLatestUpdateDate } from '@/assets/tools.js'
+
+const routes = [
+ {
+ path: '/',
+ component: () => import('@/views/Home.vue'),
+ },
+ {
+ path: '/terms',
+ component: () => import('../views/TermsView.vue'),
+ },
+ {
+ path: '/resources/faq',
+ component: () => import('../views/resources/FAQView.vue'),
+ },
+ {
+ path: '/resources/ai-security-101',
+ component: () => import('../views/resources/AiSecurity101View.vue'),
+ },
+ // Redirects the old 101 URL to the new one
+ {
+ path: '/resources/adversarial-ml-101',
+ redirect: '/resources/ai-security-101',
+ },
+ {
+ path: '/resources/info',
+ component: () => import('../views/resources/GeneralInformationView.vue'),
+ },
+ {
+ path: '/resources/contact',
+ component: () => import('../views/resources/ContactView.vue'),
+ },
+ {
+ path: '/resources/events',
+ component: () => import('../views/resources/EventsView.vue'),
+ },
+ {
+ path: '/resources/contribute',
+ component: () => import('../views/resources/ContributorsListView.vue'),
+ },
+ {
+ // When a user visits the updates index page, redirect to the most recent update
+ path: '/resources/updates',
+ redirect: `/resources/updates/${getLatestUpdateDate()}`
+ },
+ {
+ path: '/resources/updates/:date',
+ component: () => import('../views/resources/UpdatesListView.vue')
+ },
+ {
+ path: '/:objectTypePlural',
+ component: () => import('../views/ObjectListView.vue'),
+ },
+ {
+ path: '/:objectTypePlural/:id',
+ component: () => import('../views/IDView.vue'),
+ },
+ {
+ path: '/studies/:id',
+ component: () => import('../views/StudiesIDView.vue'),
+ },
+ {
+ path: '/studies/create',
+ component: () => import('../views/BuildCaseStudyView.vue'),
+ },
+ {
+ path: '/navigator',
+ component: () => import('../views/NavigatorView.vue'),
+ },
+ {
+ path: '/matrices/:id',
+ component: () => import('@/views/MatrixView.vue'),
+ },
+ {
+ path: '/:catchAll(.*)*',
+ name: 'ErrorNotFound',
+ component: () => import('../views/ErrorNotFoundView.vue'),
+ },
+]
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes,
+ scrollBehavior(to, from, savedPosition) {
+ if (to.hash) {
+ return {
+ el: to.hash,
+ // Accomodate for the header height in px
+ top: 64
+ }
+ }
+ // always scroll to top
+ return { top: 0 }
+ },
+})
+
+export default router
diff --git a/src/stores/main.js b/src/stores/main.js
new file mode 100644
index 00000000..9918193e
--- /dev/null
+++ b/src/stores/main.js
@@ -0,0 +1,735 @@
+import { defineStore } from 'pinia'
+
+import yaml from 'js-yaml'
+
+import {
+ dataObjectToPluralTitle,
+ dataObjectToRoute
+} from '@/assets/dataHelpers.js'
+import { getPathWithBase } from '@/assets/tools'
+
+/**
+ * Keys that will not be considered as properties or references to other data objects
+ * @type {string[]}
+ */
+const DEFAULT_DATA_OBJECT_KEYS = ['id', 'object-type', 'name', 'description']
+
+/**
+ * Keys added as part of the nuxtServerInit ingest for website use.
+ * To be stripped from objects before export.
+ * @type {string[]}
+ */
+export const EXTRA_ADDED_WEBSITE_KEYS = ['route', 'label', 'columnNames']
+
+/**
+ * Creates a deep copy of the provided data object, limited to defined keys.
+ * Used to provide a reference object for linking
+ *
+ * @param {Object} obj
+ * @param {string[]} extraKeys
+ * @returns {Object} Copied data object
+ * @private
+ */
+const deepCopyDefault = (obj, extraKeys) => {
+ let keysToKeep = DEFAULT_DATA_OBJECT_KEYS + EXTRA_ADDED_WEBSITE_KEYS
+ if (typeof extraKeys !== 'undefined') {
+ // Add specified keys if present
+ keysToKeep = keysToKeep + extraKeys
+ }
+ return JSON.parse(JSON.stringify(obj, keysToKeep))
+}
+
+
+
+export const useMain = defineStore('main', {
+ state: () => (
+ {
+ /**
+ * ATLAS Data as read from ATLAS.yaml
+ * @type {Object}
+ * @alias state: data
+ */
+ data: {},
+ /**
+ * Whether to show the navigation drawer on pages
+ * @type {boolean}
+ * @alias state: doShowNavDrawer
+ */
+ doShowNavDrawer: true,
+ /**
+ * Items that populate the navigation drawer
+ * @type {object|object[]} items - An object { title: string, data: data objects } specifying the navigation drawer title, or an array of data objects whose title is inferred from the type
+ * @alias state: navDrawerItems
+ */
+ navDrawerItems: [],
+ /**
+ * Title for the navigation drawer
+ * @type {String}
+ * @alias state: navDrawerTitle
+ */
+ navDrawerTitle: 'Placeholder Title',
+ /**
+ * Whether to show the annoucement banner on pages
+ */
+ doShowAnnoucementBanner: true,
+ /**
+ * Accepted values for the _objectTypePlural route
+ */
+ objectTypePluralValues: [],
+ /**
+ * Whether the 404 page is currently displayed
+ */
+ pageNotFoundDisplaying: false,
+ }
+ ),
+// other options...
+ getters: {
+ /**
+ * Retrieves the ATLAS Data value for the specified key
+ * @alias mapGetters: getDataAttribute
+ */
+ getDataAttribute: state => key => state.data[key],
+
+ /**
+ * Get a single array of all objects
+ * @returns {object[]}
+ */
+ getDataObjects: state => state.data.allDataObjects,
+
+ /**
+ * Get array containing the names of all the object types
+ * @returns {string[]}
+ */
+ getDataObjectTypes: state => Object.keys(state.data.objects),
+
+ /**
+ * Returns data objects under the provided object type, either as an object of { matrixId: [objs] }
+ * for ex. tactic or technique index page use in filtering, or an array of data objects for ex.
+ * case study index page use.
+ *
+ * @param {String} objType - Value of the data object's `object-type` field
+ * @param {string} [matrixId] - Key for the matrix under the `matrices` ATLAS Data object
+ * @param {boolean} [returnObject] - Whether to return an object instead of an array
+ * @returns {object|object[]} Data objects matching the type
+ * @alias mapGetters: getDataObjectsByType
+ */
+ getDataObjectsByType: state => (objType, matrixId, returnObject) => {
+ // Returns a list of data objects under the provided object type
+ // or an empty Array if not found
+ // Ex. in rendering the studies page when there is no case-studies key in the data
+ const content = state.data.objects[objType]
+
+ if (typeof returnObject !== 'undefined' && returnObject) {
+ // Return the object with keys of matrix ID and values of data objects
+ return content
+ }
+
+ if (typeof matrixId === 'undefined') {
+ // This is a top-level key containing an array of data objects
+ if (Array.isArray(content)) {
+ return content
+ }
+ // Otherwise this is an object keyed by matrix ID,
+ // and the ID is is not specified
+ // Return the all matrices' objects of this type
+ return Object.values(content).flat()
+ }
+ // Otherwise access the matrix's objects by ID
+ return content[matrixId] ?? []
+ },
+
+ /**
+ * Retrieves an array of data objects of a specific type, optionally that belong to a specific matrix,
+ * that contain a specified key and value.
+ *
+ * @param {string} objType - Value of the data object's `object-type` field
+ * @param {string} key - Data object key field with which to match
+ * @param {string} value - Value of the data object key field with which to match
+ * @param {string} [matrixId] - The key for the matrix under the `matrices` ATLAS Data object
+ * @returns {object[]} Array of data objects matching the parameters
+ */
+ getDataObjectsByTypeKeyValue:
+ function(state) { return function (objType, key, value, matrixId) {
+ // Retrieves a list of data objects
+ const objs = this.getDataObjectsByType(objType, matrixId)
+ // Return the first data object whose key-value matches the provided value argument
+ return objs.filter(obj => obj[key] === value)
+ }
+ },
+
+ /**
+ * Retrieves an array of deep-copied data objects of a specific type, optionally that belong to a specific matrix,
+ * that contain a specified key and value.
+ * Used when the objects are to be further modified without changing the store data
+ *
+ * @param {string} objType - Value of the data object's `object-type` field
+ * @param {string} key - Data object key field with which to match
+ * @param {string} value - Value of the data object key field with which to match
+ * @param {string} [matrixId] - The key for the matrix under the `matrices` ATLAS Data object
+ * @returns {object[]} Array of data objects matching the parameters
+ */
+ getDataObjectsByTypeKeyValueDeepCopyDefault:
+ function(state) { return function (objType, key, value, matrixId) {
+ // Retrieves a deep copy of a list of data objects, keeping only default data keys
+ let objs = this.getDataObjectsByTypeKeyValue(
+ objType,
+ key,
+ value,
+ matrixId
+ )
+ // Deep copy only the default data keys, i.e. id, name, route for linking
+ objs = objs.map(obj => deepCopyDefault(obj))
+ return objs
+ }
+ },
+
+ /**
+ * Retrieves an array of data objects of a specific type, optionally that belong to a specific matrix,
+ * that contain the specified value in the array under the given key.
+ *
+ * @param {string} objType - Value of the data object's `object-type` field
+ * @param {string} key - Data object key field with which to match
+ * @param {string} value - Value of the data object key field with which to match
+ * @param {string} [matrixId] - The key for the matrix under the `matrices` ATLAS Data object
+ * @returns {object[]} Array of data objects matching the parameters
+ * @alias mapGetters: getDataObjectsByTypeKeyContainingValue
+ */
+ getDataObjectsByTypeKeyContainingValue:
+ function(state) { return function (objType, key, value, matrixId) {
+ // Retrieves a list of data objects
+ const objs = this.getDataObjectsByType(objType, matrixId)
+ // Return the data objects whose key includes the provided value argument
+ return objs.filter(obj => key in obj && obj[key].includes(value))
+ }
+ },
+
+ /**
+ * Returns an object with key/object-type to array of objects referenced by this object.
+ * Re-keys specific items including "subtechnique-of" for title display purposes.
+ *
+ * @param {object} argObj - Data object
+ * @returns {object} Object of associated data objects
+ */
+ getReferencedDataObjects: function (state) {
+ return function (argObj) {
+ // Returns an object with key/object-type to array of objects referenced by this object
+
+ // Get object keys that may be references, i.e. are not default
+ const dataKeys = Object.keys(argObj).filter(value => {
+ // Handle tactics having techniques attached, or techniques having subtechniques attached,
+ // from the matrix hierarchy building in nuxtServerInit, as the link already exists in the opposite direction
+ if (
+ (argObj['object-type'] === 'tactic' && value === 'techniques') ||
+ (argObj['object-type'] === 'technique' && value === 'subtechniques') ||
+ // A technique's tactics will be found by the referencing side
+ // Also to avoid rendering array of tactics as tags
+ (argObj['object-type'] === 'technique' && value === 'tactics')
+ ) {
+ return false
+ }
+ // Returns true if this key value should be considered a possible ID reference or property
+ return !(DEFAULT_DATA_OBJECT_KEYS + EXTRA_ADDED_WEBSITE_KEYS).includes(
+ value
+ )
+ })
+
+ // IDs of objects directly referenced by this page's object
+ const referencedObjects = {}
+ dataKeys.forEach(key => {
+ const value = argObj[key]
+ // Note that array of data object IDs are handled by getDataObjectsReferencing
+ if (
+ Array.isArray(value) &&
+ typeof value[0] === 'object' &&
+ 'id' in value[0]
+ ) {
+ // List of data objects for tabular format
+
+ // Pull out the list of field names other than 'id' to be column names
+ let columnNames = Object.keys(value[0])
+ columnNames = columnNames.filter(name => name !== 'id')
+
+ // Flatten into an array of data objects augmented with tabular data and column names
+ const objs = value
+ .map(v => {
+ // Get data object by ID
+ const obj = this.getDataObjectByIdDeepCopyDefault(v['id'])
+ // Combine it with the tabular data
+ const augmentedObj = Object.assign(obj, v)
+ // Add the tabular data key names as column names
+ augmentedObj['columnNames'] = columnNames
+ return augmentedObj
+ })
+ .flat()
+
+ // Assign to related objects
+ referencedObjects[key] = objs
+ } else {
+ // Single object referenced by ID
+ const refObj = this.getDataObjectByIdDeepCopyDefault(value)
+ if (refObj) {
+ // Create a single-element Array
+ referencedObjects[key] = [refObj]
+ } else if (
+ // The value is a non-empty string, i.e. a declared property
+ (typeof value === 'string' && /[^\s]/.test(value)) ||
+ // The value is a string array, i.e. tags
+ (Array.isArray(value) && value.every(v => typeof v === 'string'))
+ ) {
+ // Add the key and value as-is
+ referencedObjects[key] = value
+ }
+ }
+ })
+
+ // Handle subtechnique-of title
+ if ('subtechnique-of' in referencedObjects) {
+ // Access parent technique object from the array under the `subtechnique-of` key
+ const parentTechniqueId = referencedObjects['subtechnique-of'][0]['id']
+ // Access full object, including the tactics key
+ const parentTechnique = this.getDataObjectById(parentTechniqueId)
+
+ // Add the parent technique's tactic(s) to the subtechnique's related objects
+ referencedObjects['tactics'] = parentTechnique.tactics.map(id =>
+ this.getDataObjectByIdDeepCopyDefault(id)
+ )
+
+ // Re-key the parent technique object under the desired display label,
+ // which expects an array
+ referencedObjects['parent-technique'] = [parentTechnique]
+ // Remove the re-labeled key-value pair
+ delete referencedObjects['subtechnique-of']
+ }
+ return referencedObjects
+ }
+ },
+
+ /**
+ * Returns an object with key/object-type to array of deep-copied objects that reference this object.
+ * Re-keys specific items including "subtechniques" for title display purposes.
+ * Handles case studies separately.
+ *
+ * @param {object} argObj - Data object
+ * @returns {object} Object of associated data objects
+ */
+ getDataObjectsReferencing: function (state) {
+ return function (argObj) {
+ // Return an object with key/object-type to array of deep-copied objects that reference this object
+
+ const id = argObj.id
+
+ // Find objects that reference this object's ID
+ let objects = this.getDataObjects.filter(obj => {
+ // Disregard the argObj itself
+ if (obj.id === id) {
+ return false
+ }
+ // Otherwise examine the object's values
+ // Can be primitives or arrays of objects
+ const objValues = Object.values(obj).flat()
+ // Take
+ const isRef = objValues.some(val => {
+ if (typeof val === 'string') {
+ // argObj ID is referenced directly or in a nested array
+ // ex. tactic ID in a technique's tactics array
+ return val === id
+ } else if (typeof val === 'object') {
+ // argObj ID is referenced in a nested object
+ // ex. procedure step technique, or a mitigation technique use id
+ return Object.values(val).includes(id)
+ } else {
+ // This is not a reference to an object ID
+ return false
+ }
+ })
+ return isRef
+ })
+ // Make a deep copy of each object, with only default keys, i.e. id, name, route for linking
+ objects = objects.map(obj => deepCopyDefault(obj))
+
+ // Other subtechniques
+ if (argObj['object-type'] === 'technique' && 'subtechnique-of' in argObj) {
+ const parentTechniqueId = id.substring(0, id.lastIndexOf('.'))
+ const otherSubtechniques =
+ this.getDataObjectsByTypeKeyValueDeepCopyDefault(
+ 'techniques',
+ 'subtechnique-of',
+ parentTechniqueId
+ )
+ // Add other subtechniques that aren't this one
+ objects = objects.concat(otherSubtechniques.filter(t => t.id !== id))
+ }
+
+ // Add subtechniques of tactics to the technique list
+ if (argObj['object-type'] === 'tactic') {
+ let subtechniques = []
+ objects.forEach(obj => {
+ if (obj['object-type'] === 'technique') {
+ subtechniques = subtechniques.concat(
+ this.getDataObjectsByTypeKeyValueDeepCopyDefault(
+ 'techniques',
+ 'subtechnique-of',
+ obj.id
+ )
+ )
+ }
+ })
+ objects = objects.concat(subtechniques)
+ }
+
+ // Group by object type
+ const results = objects.reduce((acc, obj) => {
+ var objectType = obj['object-type']
+ if (!acc[objectType]) {
+ acc[objectType] = []
+ }
+ acc[objectType].push(obj)
+ return acc
+ }, {})
+
+ // Label subtechniques if available
+ if ('technique' in results && argObj['object-type'] === 'technique') {
+ let subtechniqueKey = 'subtechniques'
+ if (
+ argObj['object-type'] === 'technique' &&
+ 'subtechnique-of' in argObj
+ ) {
+ subtechniqueKey = 'other subtechniques'
+ }
+ // Relabel the techniques found, that aren't a parent technique
+ const subts = results['technique'].filter(t => 'subtechnique-of' in t)
+ if (subts.length) {
+ results[subtechniqueKey] = subts
+ }
+ delete results['technique']
+ }
+
+ // Adding ATT&CK object to relatedObjects for DataSidebar rendering
+ if ('ATT&CK-reference' in argObj) {
+ results['ATT&CK-reference'] = argObj['ATT&CK-reference']
+ }
+
+ return results
+ }
+ },
+
+ /**
+ * Returns an object of key/object-type to array of data objects related to this object
+ * @returns {Object} Related data objects, keyed by display title or data object type
+ */
+ getRelatedDataObjects: function (state) {
+ return function (argObj) {
+ // Returns an object of key/object-type to array of data objects related to this object
+ const relatedObjs = {
+ ...this.getReferencedDataObjects(argObj),
+ ...this.getDataObjectsReferencing(argObj)
+ }
+ // Sort object keys in alphabetical order for display
+ return Object.keys(relatedObjs)
+ .sort()
+ .reduce((acc, key) => {
+ acc[key] = relatedObjs[key]
+ return acc
+ }, {})
+ }
+ },
+
+ /**
+ * Retrieve a data object by ID
+ * @param {string} value - Data object ID
+ * @returns {object} Matching data object
+ * @alias mapGetters: getDataObjectById
+ */
+ getDataObjectById: function (state) {
+ return function (value) { // Returns the data object with the corresponding ID
+ if (this.getDataObjects)
+ return this.getDataObjects.find(obj => obj['id'] === value)
+ }
+ },
+
+ /**
+ * Retrieve a data object by ID, deep-copying the object with only default keys present
+ * @param {string} value - Data object ID
+ * @returns {object} Matching data object
+ */
+ getDataObjectByIdDeepCopyDefault: function (state) {
+ return function (value) { // Returns a deep copy of the the data object with the corresponding ID, with only default data keys present
+ let obj = this.getDataObjectById(value)
+ // Deep copy, only keeping default keys, i.e. id, name, route, for linking
+ if (obj) {
+ obj = deepCopyDefault(obj)
+ }
+ return obj
+ }
+ },
+
+ /**
+ * Retrieves the ID of the first matrix
+ * @returns {string} matrix ID
+ * @alias mapGetters: getFirstMatrixId
+ */
+ getFirstMatrixId: state => {
+ return state.data.matrices[0].id
+ },
+
+ /**
+ * Retrieves an array of matrix IDs
+ * @returns {string[]} matrix IDs
+ */
+ getMatrixIds: state => {
+ return state.data.matrices.map(obj => obj.id)
+ },
+
+ /**
+ * Retrieve a matrix object by ID
+ * @param {string} value - Matrix ID
+ * @returns {object} Matching matrix object containing keys to data object arrays
+ * @alias mapGetters: getMatrixByID
+ */
+ getMatrixByID: state => value => {
+ return state.data.matrices.find(obj => obj['id'] === value)
+ },
+ /**
+ * Retrieves whether the annoucement banner should be displayed
+ * @alias mapGetters: getDoShowAnnoucementBanner
+ */
+ getDoShowAnnoucementBanner: state => state.doShowAnnoucementBanner,
+ /**
+ * Retrieves the array of accepted _objectTypePlural values
+ */
+ getObjectTypePluralValues: state => state.objectTypePluralValues,
+ /**
+ * Retrieve the parent object of this subtechnique, if any.
+ *
+ * @param {object} subtechnique - A subtechnique data object
+ * @returns {object|null} The subtechnique's parent object, or null
+ * @alias mapGetters: subtechnique/getParent
+ */
+ getParent: function (state) {
+ return function (subtechnique) {
+ if ('subtechnique-of' in subtechnique) {
+ const parentTechniqueId = subtechnique['subtechnique-of']
+ return this.getDataObjectById(parentTechniqueId)
+ }
+ return null
+ }
+ },
+ },
+ actions: {
+
+ /**
+ * Sets the data as loaded in from file
+ * @param {object} payload - ATLAS.yaml data
+ */
+ SET_ATLAS_DATA(payload) {
+ this.data = { ...this.data, ...payload }
+ },
+ /**
+ * Sets or toggles the visiblity of the navigation drawer
+ * @param {boolean} [status] - Whether the navigation drawer should be open. If omitted, toggles the state.
+ * @alias mapMutations: TOGGLE_NAV_DRAWER
+ */
+ TOGGLE_NAV_DRAWER(status) {
+ if (typeof status === 'undefined') {
+ // Toggle state
+ this.doShowNavDrawer = !this.doShowNavDrawer
+ } else if (typeof status === 'boolean') {
+ // Set state
+ this.doShowNavDrawer = status
+ }
+ },
+ /**
+ * Sets the navigation drawer items
+ * @param {object|object[]} items - An object { title: string, data: data objects } specifying the navigation drawer title, or an array of data objects whose title is inferred from the type
+ * @alias mapMutations: SET_NAV_DRAWER_ITEMS
+ */
+ SET_NAV_DRAWER_ITEMS(items) {
+ if (Array.isArray(items) && items.length > 0 && 'object-type' in items[0]) {
+ // Payload is an array of data objects
+ this.navDrawerItems = [...items]
+ // Plural object type with spaces instead of dashes, if any
+ this.navDrawerTitle = dataObjectToPluralTitle(items[0])
+ } else if (
+ typeof items === 'object' &&
+ items !== null &&
+ 'data' in items &&
+ 'title' in items
+ ) {
+ // Payload is an object { data, title }
+ this.navDrawerItems = [...items.data]
+ this.navDrawerTitle = items.title
+ } else {
+ console.error('Unexpected payload for SET_NAV_DRAWER_ITEMS', items)
+ }
+ },
+ /**
+ * Disables the visiblity of the annoucement banner
+ * @alias mapMutations: DISMISS_ANNOUCEMENT_BANNER
+ */
+ DISMISS_ANNOUCEMENT_BANNER(state) {
+ // Set visibility to false
+ this.doShowAnnoucementBanner = false
+ },
+ /**
+ * Sets the accepted _objectTypePlural values as parsed from the ATLAS.yaml file
+ * @param {string[]} payload
+ */
+ SET_OBJECT_TYPE_PLURAL_VALUES(payload) {
+ this.objectTypePluralValues = [...payload]
+ },
+ // Note that this function is called for every dynamic route generated via nuxt generate
+ // TODO Caching, also needs return or await
+ /**
+ * Loads in ATLAS.yaml data. Automatically called upon server start.
+ */
+ async init() {
+
+ // Retrieve the threat matrix YAML data and populate store upon start
+ let atlasData = await fetch(getPathWithBase('/atlas-data/dist/ATLAS.yaml'))
+ let yamlString = await atlasData.text()
+
+ // Get all contents, then parse and commit payload
+ const promise = Promise.resolve(yamlString).then(contents => {
+ // Parse YAML
+ const data = yaml.load(contents)
+
+ // Collect top-level data objects under the key 'objects'
+ const { id, name, version, matrices, ...objects } = data
+ const result = { id, name, version, matrices, objects }
+
+ // Hold on to all data objects, in a list-of-lists
+ // Starting with the top-level objects
+ let allDataObjects = Object.values(objects).flat()
+
+ // Add the route to each top-level object
+ allDataObjects.forEach(dataObj => {
+ // Add a property for each data object's internal route
+ dataObj.route = dataObjectToRoute(dataObj)
+ if (
+ 'object-type' in dataObj &&
+ dataObj['object-type'] == 'case-study'
+ ) {
+ dataObj.columnNames = ['summary']
+ }
+ })
+
+ // Pluralized last word of object-type values, which serve as route names
+ const objectTypePluralValues = new Set()
+
+ // Build matrix-like structure under each data object type
+ matrices.forEach((matrix, i) => {
+ // Collect data objects within each matrix
+ const { id, name, ...matrix_objs } = matrix
+
+ let allMatrixObjs = Object.values(matrix_objs).flat()
+ // Add the route to each matrix object
+ allMatrixObjs.forEach(dataObj => {
+ // Add a property for each data object's internal route
+ dataObj.route = dataObjectToRoute(dataObj)
+
+ // Add label field
+ if (dataObj['object-type'] === 'technique') {
+ if ('subtechnique-of' in dataObj) {
+ const parentName = matrix_objs.techniques.find(
+ p => p['id'] === dataObj['subtechnique-of']
+ ).name
+ dataObj.label = `${parentName}: ${dataObj.name}`
+ } else {
+ dataObj.label = dataObj.name
+ }
+ }
+ })
+
+ // Create a populated tree of tactics > techniques > subtechniques in the current data
+
+ // Split techniques into top-level parents, and subtechniques; add labels
+ const parentTechniques = matrix_objs.techniques.filter(
+ t => 'tactics' in t
+ )
+ const subtechniques = matrix_objs.techniques.filter(
+ t => 'subtechnique-of' in t
+ )
+
+ // Add subtechniques to top-level techniques
+ const populatedTechniques = parentTechniques.map(t => {
+ // Check if any subtechniques reference this technique
+ if (subtechniques.some(s => s['subtechnique-of'] === t.id)) {
+ // Add associated subtechniques to this technique, deep-copying and limited to default keys for linking
+ const associatedObjs = subtechniques.filter(
+ s => s['subtechnique-of'] === t.id
+ )
+ t.subtechniques = associatedObjs.map(obj => deepCopyDefault(obj))
+ }
+ return t
+ })
+
+ // Add techniques to tactics
+ matrix_objs.tactics.map(t => {
+ // Add techniques that reference this tactic, , deep-copying and limited to default keys for linking, as well as the subtechniques link
+ const associatedObjs = populatedTechniques.filter(pt =>
+ pt.tactics.includes(t.id)
+ )
+ t.techniques = associatedObjs.map(obj =>
+ deepCopyDefault(obj, ['subtechniques'])
+ )
+ return t
+ })
+
+ // Iterate over objects and add them to the result
+ for (const [key, dataObjs] of Object.entries(matrix_objs)) {
+ // Add objects from this matrix into the result
+ if (key in objects) {
+ // Add to the existing object keyed by the matrix ID
+ objects[key][id] = dataObjs
+ } else {
+ // Otherwise initialize it
+ objects[key] = {
+ [id]: dataObjs
+ }
+
+ // Add to the list of accepted _objectTypeValues
+ const objectTypePlural = dataObjectToPluralTitle(key, true)
+ objectTypePluralValues.add(objectTypePlural)
+ }
+
+ // Collect each matrix's objects for later operations
+ allDataObjects = allDataObjects.concat(dataObjs)
+
+ // Remove this key and values from the result's matrix,
+ // to reduce data duplciationg. Leaving ID and name
+ delete result.matrices[i][key]
+ result.matrices[i]['route'] = `/matrices/${id}`
+ }
+ })
+
+ // Commit the array of accepted _objectTypePlural values
+ this.SET_OBJECT_TYPE_PLURAL_VALUES(
+ Array.from(objectTypePluralValues)
+ )
+
+ // Add all data objects to the store to facilitate finding by ID
+ result.allDataObjects = allDataObjects
+
+ // Commit data to the store, in preparation for using getters below
+ this.SET_ATLAS_DATA(result)
+
+ // Link each data object to related objects
+ allDataObjects.forEach(dataObj => {
+ // Add a property for the data object's internal route
+ dataObj.route = dataObjectToRoute(dataObj)
+
+ // Apply to all objects but case studies, which have their own template
+ if (dataObj['object-type'] != 'case-study') {
+ // Add a property with other data objects referenced by this one or that reference this one
+ dataObj.relatedObjects = this.getRelatedDataObjects(dataObj)
+ }
+ })
+
+ // Commit the fully populated data
+ this.SET_ATLAS_DATA(result)
+ })
+
+ return promise
+ }
+ }
+})
diff --git a/src/views/BuildCaseStudyView.vue b/src/views/BuildCaseStudyView.vue
new file mode 100644
index 00000000..19c89a39
--- /dev/null
+++ b/src/views/BuildCaseStudyView.vue
@@ -0,0 +1,444 @@
+
+
+
+
+ {{ `v${schema.$version}` }}
+
+
+
+
+
+
+
+
+ Details
+
+
+ All fields are required.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mdi-menu-right
+ {{ option.description }}
+
+
+
+
+
+
+
+
+
+
+ Required
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Procedure
+
+
+ Construct a timeline of the incident, mapped to MITRE ATLAS™ techniques.
+ Add at least one step.
+
+
+
+
+
+
+
+ At least one procedure step is required.
+
+
+ Add New Step
+
+
+
+ References
+
+
+ Optionally list sources for this case study.
+
+
+
+
+ Add New Source
+
+
+
+ Download
+
+
+ Download the case study data file, specifying the filename here. Once
+ downloaded, email the file to
+ atlas@mitre.org .
+
+
+
+
+
+
+
+
+
+
+
+ Download Case Study
+
+
+ Please address any errors above.
+
+
+
+ Your case study has been downloaded! Email your yaml file to
+ atlas@mitre.org
+
+
+
+
+
+
+
diff --git a/src/views/ErrorNotFoundView.vue b/src/views/ErrorNotFoundView.vue
new file mode 100644
index 00000000..6e7a4e51
--- /dev/null
+++ b/src/views/ErrorNotFoundView.vue
@@ -0,0 +1,30 @@
+
+
+
+
+ 404
+
+
+
+ Oops. Nothing here...
+
+
+
Navigate Home
+
+
+
+
+
diff --git a/src/views/Home.vue b/src/views/Home.vue
new file mode 100644
index 00000000..2187674a
--- /dev/null
+++ b/src/views/Home.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/src/views/IDView.vue b/src/views/IDView.vue
new file mode 100644
index 00000000..4df24a86
--- /dev/null
+++ b/src/views/IDView.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+ Summary
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/MatrixView.vue b/src/views/MatrixView.vue
new file mode 100644
index 00000000..f7cfd814
--- /dev/null
+++ b/src/views/MatrixView.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/NavigatorView.vue b/src/views/NavigatorView.vue
new file mode 100644
index 00000000..1191838a
--- /dev/null
+++ b/src/views/NavigatorView.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ The {{ VITE_MITRE_TITLE }} version of the ATT&CK Navigator displays
+ {{ VITE_SHORT_NAME }} techniques alongside ATT&CK Enterprise techniques
+ and allows users to create and view complex
+ visualizations. In addition to the matrix, the Navigator also shows a
+ frequency heat map of techniques used in {{ VITE_SHORT_NAME }} case studies.
+ View the {{ VITE_SHORT_NAME }} Navigator below or at
+ {{ VITE_NAVIGATOR_URL }} mdi-open-in-new .
+
+
+
+ For more information on the standard ATT&CK Navigator and how to use it,
+ visit the
+ project's GitHub page here
+ as well as watch a short
+ demo video on YouTube .
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ObjectListView.vue b/src/views/ObjectListView.vue
new file mode 100644
index 00000000..f260d0ef
--- /dev/null
+++ b/src/views/ObjectListView.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+ The table below lists {{ objectTypePlural }} from {{ VITE_MITRE_TITLE }}.
+ Scroll through the table or use the filter to narrow down the information.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/StudiesIDView.vue b/src/views/StudiesIDView.vue
new file mode 100644
index 00000000..9a77c198
--- /dev/null
+++ b/src/views/StudiesIDView.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+ {{ study['case-study-type'] }}
+
+
+
+
+
+ Incident Date:
+
+ {{ formattedIncidentDate }}
+
+
+ | Reporter:
+
+
+ {{ study.reporter }}
+
+
+ Actor:
+
+ {{ study.actor }}
+
+ | Target:
+
+ {{ study.target }}
+
+
+
+
+
+
+
+
+
+ Summary
+
+
+
+
+
+
+
+
+
+ Procedure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/StudiesIntroText.vue b/src/views/StudiesIntroText.vue
new file mode 100644
index 00000000..989ef06a
--- /dev/null
+++ b/src/views/StudiesIntroText.vue
@@ -0,0 +1,50 @@
+
+
+
+ Attacks on machine learning (ML) systems are being developed and
+ released with increased regularity. Attacks have historically been
+ performed in controlled settings, but attacks are increasingly
+ observed on production systems. Deployed AI systems can have many
+ vulnerabilities, for example trained on personally identifiable
+ information, trusted to make critical decisions with little oversight,
+ and have little to no logging and alerting attached to their use.
+
+
+ {{VITE_MITRE_TITLE }} case studies are selected because of the
+ impact to production AI systems. Each demonstrates one of the
+ following characteristics:
+
+
+
+
+ Range of Attacks: Evasion, poisoning, model replication and
+ exploiting traditional software flaws.
+
+
+ Range of Personas: Average user, security researchers, ML
+ researchers and fully-equipped Red team.
+
+
+ Range of ML Paradigms: Attacks on MLaaS, ML models hosted on cloud,
+ hosted on-premise, ML models on edge.
+
+
+ Range of Use Case: Attacks on AI systems used in both
+ "security-sensitive" applications like cybersecurity and
+ non-security-sensitive applications like chatbots.
+
+
+
+
+ View a heat map of techniques used in these case studies on the
+
ATLAS Navigator .
+
+
+
+
\ No newline at end of file
diff --git a/src/views/TermsView.vue b/src/views/TermsView.vue
new file mode 100644
index 00000000..d7aa3bb1
--- /dev/null
+++ b/src/views/TermsView.vue
@@ -0,0 +1,40 @@
+
+
+
+
License
+
+ 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.
+
+
+ This project makes use of MITRE ATT&CK® .
+
+ ATT&CK® Terms of Use - https://attack.mitre.org/resources/terms-of-use/
+
+
+
+
+
+
+
diff --git a/src/views/resources/AiSecurity101View.vue b/src/views/resources/AiSecurity101View.vue
new file mode 100644
index 00000000..3218b568
--- /dev/null
+++ b/src/views/resources/AiSecurity101View.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/resources/ContactView.vue b/src/views/resources/ContactView.vue
new file mode 100644
index 00000000..9d4949c1
--- /dev/null
+++ b/src/views/resources/ContactView.vue
@@ -0,0 +1,123 @@
+
+
+
+
+ Join our collaborative community to shape future tool and framework developments in AI
+ security, threat mitigation, bias, privacy and other critical aspects of AI assurance.
+
+
+
+
+
+
+
+
+
+
+
Other ways to engage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.icon }}
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resources/ContributorsListView.vue b/src/views/resources/ContributorsListView.vue
new file mode 100644
index 00000000..e2511848
--- /dev/null
+++ b/src/views/resources/ContributorsListView.vue
@@ -0,0 +1,124 @@
+
+
+
+
+ {{ VITE_MITRE_TITLE }} is a continuously growing and evolving knowledge base of how ML systems
+ can be attacked. We need your help to make it holistic and fill in the missing gaps!
+
+
+ Feedback and Improvement
+
+
+ Send us your feedback and improvements to tactics, techniques, and case studies: please email
+ atlas@mitre.org or
+ join MITRE ATLAS on Slack
+ and post on the #feedback-and-recommendations channel.
+
+
+ Contribute Case Studies
+
+
+ We are especially excited to capture new and unique attack pathways as case studies! We look forward to contributions from both
+ industry experts and academic researchers.
+
+
+ Use the Case Study Builder to craft a submission file with details and technique mappings,
+ then email the file to atlas@mitre.org .
+ The {{ VITE_SHORT_NAME }} team will review the submission and follow up with feedback.
+
+
+ Go to Case Study Builder
+
+
+ Contributors
+
+
+ Thank you to our many active contributors! Including, but not limited to:
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/resources/EventsView.vue b/src/views/resources/EventsView.vue
new file mode 100644
index 00000000..dbe4f02d
--- /dev/null
+++ b/src/views/resources/EventsView.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/resources/FAQView.vue b/src/views/resources/FAQView.vue
new file mode 100644
index 00000000..0ec9c7f9
--- /dev/null
+++ b/src/views/resources/FAQView.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ {{ section.frontmatter.title }}
+
+
+
+
+
+
+
+
diff --git a/src/views/resources/GeneralInformationView.vue b/src/views/resources/GeneralInformationView.vue
new file mode 100644
index 00000000..347be812
--- /dev/null
+++ b/src/views/resources/GeneralInformationView.vue
@@ -0,0 +1,237 @@
+
+
+
+
+ {{ VITE_MITRE_TITLE }} Fact Sheet
+
+
+ Current {{ VITE_SHORT_NAME }} Version
+
+
+
+
+
+ Accessing ATLAS Data
+
+
+
+
+ Instructional Videos
+
+
+
+
+
+ The MITRE YouTube channel houses a
+ video playlist
+ containing a collection of instructional videos for users of the {{ VITE_SHORT_NAME }} site.
+
+
+
+ Videos included:
+
+
+
+
+
+ ATLAS GitHub Repositories
+
+
+
+
+
+ {{ repoCategory }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/resources/UpdatesListView.vue b/src/views/resources/UpdatesListView.vue
new file mode 100644
index 00000000..dc8e5dd6
--- /dev/null
+++ b/src/views/resources/UpdatesListView.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tsconfig.app.json b/tsconfig.app.json
new file mode 100644
index 00000000..00080f4c
--- /dev/null
+++ b/tsconfig.app.json
@@ -0,0 +1,13 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "exclude": ["src/**/__tests__/*"],
+ "compilerOptions": {
+ "composite": true,
+ "allowJs": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 00000000..66b5e570
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ }
+ ]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 00000000..dee96bed
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,16 @@
+{
+ "extends": "@tsconfig/node18/tsconfig.json",
+ "include": [
+ "vite.config.*",
+ "vitest.config.*",
+ "cypress.config.*",
+ "nightwatch.conf.*",
+ "playwright.config.*"
+ ],
+ "compilerOptions": {
+ "composite": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "types": ["node"]
+ }
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 00000000..ef715972
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,43 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig, loadEnv } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+import vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
+
+import { nodePolyfills } from 'vite-plugin-node-polyfills'
+
+// https://vitejs.dev/config/
+export default defineConfig(({ mode }) => {
+ // Load environment variables named VITE_* from .env
+ const env = loadEnv(mode, process.cwd(), '')
+ return {
+ assetsInclude: ['**/*.png', '**/*.md'],
+ // Exposed to the rest of the app as import.meta.env.BASE_URL
+ // https://vitejs.dev/guide/env-and-mode#env-variables
+ base: env.VITE_BASE_URL,
+ optimizeDeps: {
+ esbuildOptions: {
+ target: "esnext",
+ },
+ },
+ build: {
+ target: "esnext",
+ },
+ plugins: [
+ vueJsx(),
+ vue({
+ include: [/\.vue$/],
+ template: { transformAssetUrls }
+ }),
+ vuetify(),
+ // Resolve Buffer is not defined for @mdit-vue-plugin-frontmatter
+ nodePolyfills(),
+ ],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ },
+ }
+})
diff --git a/vuetify.options.js b/vuetify.options.js
new file mode 100644
index 00000000..efba7fa6
--- /dev/null
+++ b/vuetify.options.js
@@ -0,0 +1,2 @@
+export default {
+}